From db733eec53a986509fdbae860f7967be5cb5c8cd Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Thu, 3 Jan 2019 18:15:03 +0100 Subject: [PATCH] Implemented new more robust sprite routine. Added game_over game state. Added GAME OVER chars to charset. --- .../kc/examples/tetris/playfield-screen.gpx | Bin 2768 -> 2733 bytes .../kc/examples/tetris/playfield-screen.imap | Bin 488 -> 504 bytes .../kc/examples/tetris/playfield-screen.iscr | Bin 1024 -> 1024 bytes .../kc/examples/tetris/playfield-sprites.gpx | Bin 1297 -> 3123 bytes .../kc/examples/tetris/playfield-sprites.png | Bin 753 -> 748 bytes src/test/kc/examples/tetris/tetris-data.kc | 2 + src/test/kc/examples/tetris/tetris-play.kc | 27 +- src/test/kc/examples/tetris/tetris-render.kc | 2 +- src/test/kc/examples/tetris/tetris-sprites.kc | 43 +- src/test/kc/examples/tetris/tetris.kc | 10 +- src/test/ref/examples/tetris/test-sprites.asm | 69 +- src/test/ref/examples/tetris/test-sprites.cfg | 110 +- src/test/ref/examples/tetris/test-sprites.log | 1570 +- src/test/ref/examples/tetris/test-sprites.sym | 58 +- src/test/ref/examples/tetris/tetris.asm | 324 +- src/test/ref/examples/tetris/tetris.cfg | 1424 +- src/test/ref/examples/tetris/tetris.log | 19753 +++++++++------- src/test/ref/examples/tetris/tetris.sym | 680 +- 18 files changed, 12934 insertions(+), 11138 deletions(-) diff --git a/src/test/kc/examples/tetris/playfield-screen.gpx b/src/test/kc/examples/tetris/playfield-screen.gpx index 0119cf32b57f883d38d898a644b9c32a69b60377..b8f3f4714639dfa85b4217054f518ff11dd510bc 100644 GIT binary patch literal 2733 zcmV;e3R3lW0qtAOZyU!IpOsX7aV5&IOi`+wNOJ!Gxoun)V32+QEl}jp910^qgG5#+ z*f1@sl42_b?byfmq+EhDmpbSr1p?GL^y^X+L9vHaaB>J-wJ=(uhe8GfLqz~bC=@F5 z=Hu{1@*2S+Oe$BkLoLkCdGqcO=EDv6onZ11B zwYj;>;*uHWDcCd*&StXNrTLi!5jUI5<`$PO{XD}%)9mZ)n;e_V%`d-tX=x!l^EwY* znOP9=DW2lnJOyL9tC_{QZ0?%SwlI^;EH7t-Z&4y#Cr|ebJI8|pxFQNW$G*XpKmiL& zvx}mvXV|wm%oq=6GV`Js$gm=OQUznLlhC1vC+>rAD@oCAne0l@E~eLE9dFZP%V$Z? zEcr^2{JWOwTI*%2rv=|@y~^}N>SJraHNMucORptdR{yP!@7~E>ym*m;P8c9Hy7AAx z7bS%CMzQTh4J}&+1UV!;l)(ZLVAdls^B(6l)Q`ajWfaI}WHi_0V zIu5wX+?~50Z$XbS)#bIgT;=0|FFuQ#?Qhnz2UoYh-dA6={dzv^bv)U|S2M@|(_Hqu z{aWA68$wvrtyjMu|F^D#c)Pb|zUy(>ZFK31j(KdR&3 zwXd|`CEGsHHvW%l`&sT<>ip#^^GvppS>4SCsZZa}ZaVhyGsbniS8#MSN>6e`_)Y)7JG=b>ib`}-<4js-(?5d z*8fKLKS!ngmiNQ%6V`s)_;0!Q{~pJ`?fXUR&HpQx&!?{Cgh9mQ`@W*PnSKA$)Pqge zcdn+r|C`nRdhONd_nB5-|8;%!_Z3|KBI~A(x7od|I{)jfZ`AI!&Hom%f9l%*>wUlN z`)9QMNB#Ln$Fb}Cwr$_vs_%c-_jcF!d#n9#`TkYwJ}BD$)bsp}^lFMFQ%Np2`2N1z zpDvcz4L_NN?^fgK>{`k9*-l}n8^YXP*n$0jDexf!*aPqb_XfmAp1;-3v+Z|n{kB(o z+BVOc`R&tefQ1jT^+TmDoVv6T-b7iUC^kW4!NIN?^o; z+rh=JtpAYWvCfs_BQ3GyuM)3&@2JMR>Q9GToaO8*!%4w+*xyq9+Y>NTat6bX}nR{JQxy@Qv~7PEU`H{@tj@Vxyfp=1*bF zdk~Yvm_iuyF2sz87&y3frypZHR>`}Y5NZF|fjI^oIbI$XInIYUh8#KWo)9@c_b|t> zBgb=tBFD8b$A}}xuVW&|NSI^Pk>lTeBFEoF;D4&;l`R6v%DoRenxCMvVGW)m!JlEg zv0;x4sLEXgg*7`tXTusiM}l{H_>_1VPV|MhH_-PS-0q8npQuUJ`h(yDAKLSOXixWX zc*ZOJov;miiHRvoo$DlYPP_o#;@1x+JK@!SnxVrr7$N0wsSm6>0}sjZrEAsK*9Z8a zJG554y}f`Rx+7~9E{d>demK#K+web#jveOLeT`< zesxav=o(%Xm4R)*L#W_ea$(}v)MQ_1O#DQ^OZ@uLK~?$p4Eytp(VqhSG1PIYTcKl& z`@}9z_=FWygHOnB#0-Rk+n-NipN#UkEH`4(D-A2*l`x0&Ji*!_DIZBIg=JznGXdPRUZF*hjT4te!qR1B>8j&4Ju!xO?4S6OT5gj&AVwi|`p*)0x7YY9er+4P>g1a8Zu2DIRp-dT8wg!Onfg~Dc%Oo|%$o3W zMO$1Uc-8SYfy$HT!YdDrOTFT}xvClbbr8|~phDr`xhPHk*Gkk(9xqqb3BsDe;XCEM zUwR}fnrO zMLN(4#PJz9dM>EZWAv%>M0g4nfYnz)ZH=eX2}29C?49G8j#j?1GQ zmx=+7%cC4u)m!o=4&bf)2&p|n^ zsyTq;;yEbCRdpyF56XvfTu%V02OO6Ne3o&01AV}8d6eU7{XsxEuGW9Xz;W@p`Vy<) zTqhyQakbebH=Cqu)zQ%b_@O&Cj!T=ul;iTj*zzgIC9#9JQI1PhkaAo;<+#wIrySRT z)RuBw*q;K`99QE!59PR2A;4x;^-_*Y*A4inX8I||CBMBuOZMuc92X$)>AadtIWD0D zI438EaAMk&XIX$i-LDB-wJ1L3$3wQyXhi*Q^Tr5qQgB^(!)KsYXq zQjSaiPmXe28l@bUMk&XI8VJXQD6!2^FR{%LCAK-1MmR1+EgTo>A{-Z@7LE&ROE@kp zi*Q_s5{?T?ARHI!B^=i=ux*`o58=4-ZjP&lgCXtk0fpO(YGaFPImguj+x{lrD96=i zDUK3Lp*b$qrWMTS&!T(#z^ ni-95>S5sIt!g1AHFT!!{fq@!q5(7mzuBNbPV%Pd5bg=ww#>uGa literal 2768 zcmV;>3NQ6|0qtAOZyU!Ie@n^~MXo{>R`nIRk>vgX?nhh(P!P8TTA;|Gm%^6@iK0+& zU|JL;#a0U0ac)6QN)LgMOBM8@6alIp`gN&^pdipxa9kj0mBMJ%9tyh<5(NPiAyKHz zo85UkZQ)9vt#3zpM7Cs zA~!vwheZlFCxYX-e12wfY)ZzB7xIPandg6&6QOhPP58FJCJK|Y&pkggl^=UigszND z$@r{D@t8;fP`H|#p2!!j$>GO&Jc#(yUL>&2k2w!DSlpB#d{O0W`cjlqhB=vi4od&qD*x+tiSo^@7UvVCd8)@I8DCU8RlDX(DD%`VlZ4wD zo(H1H!pg1pHgUwjAM#pUQRG(V7oTMG{vXtDkFM%}y<1 zze-nczfJvzeU@&A$J3e#3H)kM94+eEm=Q624ECKAg|a ze^{dX>V_`{eF&O$|5yFDrC0s8>4B#6ztQ{8ap}Kdf7pG%`fr;5O}GE=asHd^7tOc+ zuUx*Ey;hJ45qSH3MRz0r_WRkp8#X&v)9wHD>Z@VKRl0Z_HEO>zghQxo4ws;zc=dt2K!g7 z_n>h9vrmd0>A5WQW&4EO5ca8rdv3i9H{8Bav|A01=2y$E3p>S~1cv8J#T~R?l}j#W zKzkPcp?d@4L%+XK&okY3P2;v#ecH6n4$}6icfi00nZ}`3zRNgnrgAKLc7#u}m0Kfk zWaHP$mU(aGwJht%#*Z1t*;4Lqz4g?)?)S>andVikyryj&ZR1yCeWvk=)DJCrpe5a~ zxW1S`*O4N;4v7XD@>9I)R!X47qZUaw zZ+#6jepNgR$#(T^!~KU9xF|s1F#R6_mjvj4ZSett%R$P&5x5eR`4fO{+wp$@C7Xlz?iSChNipHJ`W#4? zV~FACypqI}Lo(&ZA}a1hVIg<4LY4;!O=_qd-(TU>O7#JKRuFPGMH9*Ih;;sE2VocI zukzn>x*!@K#Wpcrq`oM&mcf=5v89PVhamPX^F*k*-vn-$W1))mJM z;wk(f@ELp!;p=lpjsHToR(D3BiyFEfpr5r?JKLjz$7}G~F#USQQjOmpz_$B8`iehluM!mZ|GVSkUl%vy<&d$??QPGRL(bN3SKvFVZqcZ;+$klH=bUGRHr>#pjQ_Z=AqnQSbfO!6%3} zT!Lds@W+(gksLOmDi0A>cF+mp4VU0p61>qamc-Mzj)T`r%bcPvRu}#&fAS>Sa%XT(aD`&O+zq2JpIgemE?*@-sk=C_xMPj*$Amx-*E7H@{S? zIyyQKKXQk+Dw#|oe&mkVs^Cz>L-U=XBn*ee}}}veniZZ^mU2NiD!6NVTbYh z6R4Ybe7Ie;@TzPKUIXr917G(JCh?36cLdgjpGbH{JU=?DCjS;_JkM(5DbXKe8%Gj8 zIsn2a)jH{uW|10vQhq5{ApR%Erz12b{bDV9nwjVIEG^RO$%xE#6%SJrMs`J5G9HiX!Sv&FOud#!z&r}vClkSVLo1{}iRw&~-wWG<1#7WevSU=t7TXY3QVKHFTZO zB@JC8bfH%(!6md?Lz!+)L;{ALkFk^4P7U6K|}8iDBTv-fD@qGTJ@fkT7zc?92os+%Cu_Lq3UXao4gxr`d&C3 zZ%f|_*B91=AF9D&%MaB6$AhI6LU}i>}F{KTukQQ{e^lsvfMK#Q8whtCJ;i@JFAOtucG{YTOVbOH{3#EE(Dg z7!gI5sFWWEJc=SqsAxu(a574fB_=rz6a*(rjx();WQnxOiQfXrk~ESfX-<~x_k}D< zmiR|Mk|ho&OZ*rlOB_y?_%TS9IGil0dc8ohL^OqyB~^1ESt4?9vZQJbBuhjNPL@>7 zfn5v!5wh2;eLf>YyB4~rH=5n$`7J_7n^l-AoYPV^H4=v2?I)MR*+jRmQZ5yo+3MWhSl`yKlGN^6g z9F)t+lA9jO0d}$^&B+pnlO^6imT|H~{kIt>OBBk<5=zU+5<(eSLM1S=gir%nLS-?s zM4_B4p|p%Fp&A%jqEJqjsQ`KOm<`vX9vqMGEe+3!DeU#1jdtNnQR$#C(mY@$Yo+`W^Q3=Wo=_S*^F6% K(Qa}$^GX0Oycfp+ delta 115 zcmZqRXyDkehH-KZ6E~-}n4k`yE)xUuBt~&IZ3Q6EoqU&3iW9-5PrCd_s*VjQ{)_E|G0a8RZ@yhiW)A97(Os z_nmLAWtI8!8lzOEro^uo`*MjJ6k+ky_;Y^v$^E6ePG zWehq$zpzj{(hV!8q^hJ&IX4eEjvnH8$TCRWI$sW^iy2m^UZxUo57j*Z-KRh;-g%Xw z$t~_x;w<_t;ewX5(IwnXTV|16{?+)tfJrD3Hk+E$U!$Lp4_~@IqY`Z|vs}M~+FEC# z6($@b2RP@GoU>4@^eiP0xbX_FVcSx7eHiK+Io4nFRk6z+p) z!0MAmfZ6#hyii;@>~~U~@?YME>dg>f-<&DY4@RlP*0NFSS)U>JG6yx@$5i93yUg38 z8lg#;SR0OvyR$SgSgjP3yM^&o%k^KGy;nJDFK1%lDPSGbL9zVi{O+uxUh9o!K98h| z=iE34a*O#R0I-EQ{d`J`wWra6=N=etR)_5#6T5)P<^of-L`+A`SudKA-f71-$0iL1 zb=)gs2z*rZZfLQ8bjBE}93On&12_j98x-$Q2M(Rjj(fj6mrRZ+avydNS~E3&-b`MC zrXA;C7B})w0^9C@M%t$J5;VdZ0^8xwhkAg|w?}X((tkJB0B_&sZ;@PUMVBuyV10O^ zbN1Op_xt=yu&uV@1d?V}`4ni$B|v-pS!*A^!ubTgh>N`|RnZf(h@6hWl#D1)I_nM; zn473{A!O|*WXq!YP}_MXL~ifFJLBH*)At?>S9n)eC>t?A4~k&?7vu|y$*w&oiCu7` zv3h4KHZ}O;?pxsjy&G#6|M3c0I-EJnOJ0AKqs;j)z^Q z9PsRTz$RU!K2pCZBvd6P6Ajr39D_D0@l@7e7d{mlv@~ORag<^ z2E7V1Qdpg=c0@iIN@GU2We3w;GG%sW!DfeTrxWA*fx2x7W9_0@OvRPLwXQR_8%L#kLa~8WOh@-zSC-c}q>4GBiq)@^tbH#z zI&A3g9eI*Y-iERBe@EpiR?9_RDb;fIFX09@FY<7d^IBH1tzhNK8EFgwC7{0TB{}Fa zd!Kfd%JzYA-U*4(rE|X>1A~zb`)x)QMtckMeUPJ>GLFoavlVY-TZXUAbjD);Ah$%^ z01g?;-llXKQg)OQBCBq^a2+r-w4|06(R{pM?|kuH#zc2cjk*|W0JKBy<#f_8u?PW+ zr5WD*DB_5QZQhNwQ8ws}K0Lxjy93@*sXR!{ zZhn2c!r663)6JA;>bv083{*LFkZ@KMF+X zlNH7M^;n(-FPJLh;%SAg-uvp{p)rIt#t%}2=`IT~iD>S<;Kh}00YWVC?fRt)X9iju z15YuYXt`QIU4s{hMUCKCrx>=<@%}u-#9o(zMsd3n9@@AV36__rpr?#mf7{a(Q0zr- zk+={S^L1+8m6)}GooT+6(|Ron&zV%dPSic?xgLKL2CEJ4L+}Hp*>}+=Zu8&--R)iOWrk zEI^aAk}u=soeELg0b-G){(aiOMxNJ0G)xq{I*8TjKL*j{K?mHie=aJZ6lb#qlXtwy zJFhbwtHsc`nq`oSN{}cGatYieX#D>ngxSG~pJb@XuS{`}?nB0d7#0Pw;I=UfmIp;u zhKhl^!HY5HN-f|qwBlb?shjQ=bf$tb=6xkUmn+jZ!-w_eEh@9X;#RPcv*hT16XKTb z;vqF>R>x%}Myt&Iz5c)C?;DrM8Gg+i693(9rt?QYpM1Er#1U^7vhZFZ#`95YVwUbc z*av5yvf7Ca!)i%G4R|R(PFjyl)Z@B~d;$s$>r!4#OhxlYVw|W|#PGyWMeSY<f9L1*P%Alb_l)#w~O7{)bfZX8SN`55&W{=hhze5vXJWv!!7 z?o9GpG<%<0RjQak?vFS8TN;a0xvVGDVQ#ZlirM4ihLTgMVup6IVk|HK zblg%AkT@sYW#4XQq2>kV{-p5F8~Y2gFI&21&H9z?EnMRso4>Aid)^7sZsg!q#@dLA minkZrtDKX1?k&32yq;m`L#7X#yTGON2NKu;|4%HCR6H%%?M+UEcM}MMHD{Jt zzwg!#>vc+NYwymYS4#VK!V+|u1;?f>nb*Z!fI z@6Q2#WMuW>aCN)zpXza{re-G9!lTylS}`)}F0 zCAEwjziGO7S$3B6UTSa4wB7eN=!v=IrXKN0mABZ{dZjtBTSM5uu<2>~!_S_v zu`WguS1!%J{;T@hvZ8I}R9N)#7rM$X^injCgKS~F<-zn1Ui0c$&2US^UCc2nPhytDoOb4GB3qLS%UkS8tq}c-ZMF<*49Y) ziE(s|f4=P3r*?+N3%$?zD~r#4uqNn_gJ}KKPxEdoTk~%2i<=YjchBX^=c_}zt8I1P zttpMYeeZ2%_4Xj^mzjmTvkI?WKJ?V?(ye)7O7~|xJ|8`EiCOJJ?V}FU=Wd#Cg7@R} zykBn7DQ`38&U!pQdL^6oZi7iu8{Vu8JiW`fKIHqK(p_(D>+fHvp2b*YlF`rhqVQq0 z$qv^H4h7x|$$nC0%5E--v6iRLA9^mla#i<(dg1p|*rt97aGug~HLGK4?R;}r!J{X- z8eNXhO7889Hc2bpGxd<3P2sf-MXox3q<)?$|Jup&J*f3k(L@<#{t7Fei-fhd_y)b#Q2jfcF1$6r$#YWojJ;_KGWuFmh4QR R0dLF^smWfLiGO&3gxX-MaKEY4t4az4xsmxA_ls$$9_V zJgOmf{M`F@LRWewhfdi`ao?shIK~KC={dC4PM6#DSinZlU^y!urz_rl*oA(aut=6SqNvmgR@4att%-5&{dw`CNx%ww4M-?!-ujxmB(dJL_#)8%$O7O>GHSkB5*)E5jF*OiVL%w4kWzSeyvGr0^e{%WB`2eH-quM5mYEOUAGyD7kL|trs znX??wMScI@;+K~>(#G?hW1BlBEp}agKMyQlw7BkXm*R2p#l!Vrng9R* M07*qoM6N<$f*B9P3IG5A diff --git a/src/test/kc/examples/tetris/tetris-data.kc b/src/test/kc/examples/tetris/tetris-data.kc index d473ab943..82c7436ef 100644 --- a/src/test/kc/examples/tetris/tetris-data.kc +++ b/src/test/kc/examples/tetris/tetris-data.kc @@ -51,4 +51,6 @@ word lines_bcd = 0; byte level_bcd = 0; // Current level in normal numeric format byte level = 0; +// Is the game over? +byte game_over = 0; diff --git a/src/test/kc/examples/tetris/tetris-play.kc b/src/test/kc/examples/tetris/tetris-play.kc index a74558e8c..373cf85e5 100644 --- a/src/test/kc/examples/tetris/tetris-play.kc +++ b/src/test/kc/examples/tetris/tetris-play.kc @@ -18,6 +18,10 @@ byte* current_piece = 0; // The orientation chooses one of the 4 sub-graphics of the piece. byte current_orientation = 0; +// The speed of moving down the piece when soft-drop is not activated +// This array holds the number of frames per move by level (0-29). For all levels 29+ the value is 1. +const byte[] MOVEDOWN_SLOW_SPEEDS = { 48, 43, 38, 33, 28, 23, 18, 13, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }; + // The rate of moving down the current piece (number of frames between moves if movedown is not forced) byte current_movedown_slow = 48; @@ -35,10 +39,6 @@ const dword[] SCORE_BASE_BCD = { $0000, $0040, $0100, $0300, $1200 }; // These values are updated based on the players level and the base values from SCORE_BASE_BCD dword[5] score_add_bcd; -// The speed of moving down the piece when soft-drop is not activated -// This array holds the number of frames per move by level (0-29). For all levels 29+ the value is 1. -const byte[] MOVEDOWN_SLOW_SPEEDS = { 48, 43, 38, 33, 28, 23, 18, 13, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }; - // Initialize play data tables void play_init() { // Initialize the playfield line pointers; @@ -62,6 +62,20 @@ void play_init() { } +// Perform any movement of the current piece +// key_event is the next keyboard_event() og $ff if no keyboard event is pending +// Returns a byte signaling whether rendering is needed. (0 no render, >0 render needed) +byte play_movement(byte key_event) { + byte render = 0; + render += play_move_down(key_event); + if(game_over!=0) { + return render; + } + render += play_move_leftright(key_event); + render += play_move_rotate(key_event); + return render; +} + // Move down the current piece // Return non-zero if a render is needed byte play_move_down(byte key_event) { @@ -212,11 +226,14 @@ void play_spawn_current() { piece_idx = sid_rnd()&7; } current_piece = PIECES[piece_idx<<1]; + current_piece_char = PIECES_CHARS[piece_idx]; current_orientation = 0; current_piece_gfx = current_piece + current_orientation; current_xpos = PIECES_START_X[piece_idx]; current_ypos = PIECES_START_Y[piece_idx]; - current_piece_char = PIECES_CHARS[piece_idx]; + if(play_collision(current_xpos,current_ypos,current_orientation)==COLLISION_PLAYFIELD) { + game_over = 1; + } } // Look through the playfield for lines - and remove any lines found diff --git a/src/test/kc/examples/tetris/tetris-render.kc b/src/test/kc/examples/tetris/tetris-render.kc index 56837019d..792710caf 100644 --- a/src/test/kc/examples/tetris/tetris-render.kc +++ b/src/test/kc/examples/tetris/tetris-render.kc @@ -109,7 +109,7 @@ void render_score() { // - bcd: The BCD-value to render // - only_low: if non-zero only renders the low digit void render_bcd(byte* screen, word offset, byte bcd, byte only_low) { - const byte ZERO_CHAR = 51; + const byte ZERO_CHAR = 53; byte* screen_pos = screen+offset; if(only_low==0) { *screen_pos++ = ZERO_CHAR + (bcd >> 4); diff --git a/src/test/kc/examples/tetris/tetris-sprites.kc b/src/test/kc/examples/tetris/tetris-sprites.kc index e2459a568..5ffc357a2 100644 --- a/src/test/kc/examples/tetris/tetris-sprites.kc +++ b/src/test/kc/examples/tetris/tetris-sprites.kc @@ -5,11 +5,14 @@ import "tetris-data" kickasm(pc PLAYFIELD_SPRITES, resource "playfield-sprites.png") {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 @@ -30,14 +33,16 @@ void sprites_init() { } } -// The line of the first IRQ - 48 is 2 lines before the start of the screen -const byte IRQ_RASTER_FIRST = 49; +// The Y-position of the first sprite row +const byte SPRITES_FIRST_YPOS = 49; +// The line of the first IRQ +const byte IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS + 19; // The raster line of the next IRQ volatile byte irq_raster_next = IRQ_RASTER_FIRST; // Y-pos of the sprites on the next IRQ -volatile byte irq_sprite_ypos = 50; +volatile byte irq_sprite_ypos = SPRITES_FIRST_YPOS + 21; // Index of the sprites to show on the next IRQ -volatile byte irq_sprite_ptr = toSpritePtr(PLAYFIELD_SPRITES); +volatile byte irq_sprite_ptr = toSpritePtr(PLAYFIELD_SPRITES) + 3; // Counting the 10 IRQs volatile byte irq_cnt = 0; @@ -65,7 +70,8 @@ void sprites_irq_init() { // Raster Interrupt Routine - sets up the sprites covering the playfield -// Repeats 10 timers every 21 lines from line IRQ_RASTER_FIRST +// Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST +// Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers interrupt(hardware_clobber) void sprites_irq() { // Clear decimal flag (because it is used by the score algorithm) asm { cld } @@ -77,8 +83,9 @@ interrupt(hardware_clobber) void sprites_irq() { SPRITES_YPOS[6] = ypos; // Wait for the y-position before changing sprite pointers + volatile byte raster_sprite_gfx_modify = irq_raster_next+1; do { - } while(*RASTER>6 .label render_screen_showing = 4 .label irq_raster_next = 3 @@ -45,9 +46,9 @@ bbegin: sta render_screen_showing lda #IRQ_RASTER_FIRST sta irq_raster_next - lda #$32 + lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos - lda #toSpritePtr1_return + lda #toSpritePtr1_return+3 sta irq_sprite_ptr lda #0 sta irq_cnt @@ -122,6 +123,7 @@ sprites_init: { } sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 + .label raster_sprite_gfx_modify = 8 sta rega+1 stx regx+1 cld @@ -130,26 +132,34 @@ sprites_irq: { sta SPRITES_YPOS+2 sta SPRITES_YPOS+4 sta SPRITES_YPOS+6 + ldx irq_raster_next + inx + stx raster_sprite_gfx_modify b1: lda RASTER - cmp irq_sprite_ypos + cmp raster_sprite_gfx_modify bcc b1 ldx irq_sprite_ptr lda render_screen_showing cmp #0 beq b2 stx PLAYFIELD_SPRITE_PTRS_2 - inx - stx PLAYFIELD_SPRITE_PTRS_2+1 - stx PLAYFIELD_SPRITE_PTRS_2+2 - inx - stx PLAYFIELD_SPRITE_PTRS_2+3 + txa + clc + adc #1 + sta PLAYFIELD_SPRITE_PTRS_2+1 + sta PLAYFIELD_SPRITE_PTRS_2+2 + clc + adc #1 + sta PLAYFIELD_SPRITE_PTRS_2+3 b3: inc irq_cnt lda irq_cnt - cmp #$a + cmp #9 beq b4 - lda #$15 + cmp #$a + beq b5 + lda #$14 clc adc irq_raster_next sta irq_raster_next @@ -161,15 +171,9 @@ sprites_irq: { clc adc irq_sprite_ptr sta irq_sprite_ptr - b5: - ldx irq_raster_next - txa - and #7 - cmp #3 - bne b6 - dex - b6: - stx RASTER + b7: + lda irq_raster_next + sta RASTER lda #IRQ_RASTER sta IRQ_STATUS rega: @@ -177,16 +181,30 @@ sprites_irq: { regx: ldx #00 rti - b4: + b5: lda #0 sta irq_cnt lda #IRQ_RASTER_FIRST sta irq_raster_next - lda #$32 + lda #$15 + clc + adc irq_sprite_ypos + sta irq_sprite_ypos + lda #3 + clc + adc irq_sprite_ptr + sta irq_sprite_ptr + jmp b7 + b4: + lda #$15 + clc + adc irq_raster_next + sta irq_raster_next + lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos lda #toSpritePtr2_return sta irq_sprite_ptr - jmp b5 + jmp b7 b2: stx PLAYFIELD_SPRITE_PTRS_1 txa @@ -201,11 +219,14 @@ sprites_irq: { } .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 diff --git a/src/test/ref/examples/tetris/test-sprites.cfg b/src/test/ref/examples/tetris/test-sprites.cfg index f6f28114b..31eb87121 100644 --- a/src/test/ref/examples/tetris/test-sprites.cfg +++ b/src/test/ref/examples/tetris/test-sprites.cfg @@ -4,11 +4,14 @@ @4: scope:[] from @begin [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 @@ -18,13 +21,13 @@ to:@5 @5: scope:[] from @4 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 - [4] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 to:toSpritePtr1 toSpritePtr1: scope:[] from @5 [5] phi() to:@9 @9: scope:[] from toSpritePtr1 - [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 + [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@8 @8: scope:[] from @9 @@ -101,64 +104,65 @@ sprites_irq: scope:[sprites_irq] from [48] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 [49] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 [50] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + [51] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [52] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 to:sprites_irq::@1 sprites_irq::@1: scope:[sprites_irq] from sprites_irq sprites_irq::@1 - [51] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 - to:sprites_irq::@7 -sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@1 - [52] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [53] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 + [53] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 to:sprites_irq::@8 -sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@7 - [54] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 - [55] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 - [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 - [57] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 - [58] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 - [59] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 +sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@1 + [54] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [55] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 + to:sprites_irq::@9 +sprites_irq::@9: scope:[sprites_irq] from sprites_irq::@8 + [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 + [57] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 + [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 + [59] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 + [60] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + [61] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 to:sprites_irq::@3 -sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@8 - [60] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [61] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 - to:sprites_irq::@10 -sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@3 - [62] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [63] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [64] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 - to:sprites_irq::@5 -sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@10 sprites_irq::@13 - [65] (byte) irq_raster_next#13 ← phi( sprites_irq::@10/(byte) irq_raster_next#2 sprites_irq::@13/(byte) irq_raster_next#1 ) - [66] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 - [67] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [68] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 +sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@9 + [62] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [63] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 + to:sprites_irq::@11 +sprites_irq::@11: scope:[sprites_irq] from sprites_irq::@3 + [64] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 to:sprites_irq::@12 -sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@5 - [69] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 - to:sprites_irq::@6 -sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@5 - [70] (byte) sprites_irq::raster_next#2 ← phi( sprites_irq::@12/(byte) sprites_irq::raster_next#1 sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) - [71] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 - [72] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 +sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@11 + [65] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 + [66] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [67] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:sprites_irq::@7 +sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 + [68] (byte) irq_raster_next#4 ← phi( sprites_irq::@12/(byte) irq_raster_next#3 sprites_irq::@15/(byte) irq_raster_next#1 sprites_irq::@5/(byte) irq_raster_next#2 ) + [69] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 + [70] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:sprites_irq::@return -sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6 - [73] return +sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@7 + [71] return to:@return +sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@11 + [72] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [73] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 + [74] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [75] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:sprites_irq::@7 sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@3 - [74] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 - [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + [76] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [77] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 to:sprites_irq::toSpritePtr2 sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@4 - [77] phi() - to:sprites_irq::@13 -sprites_irq::@13: scope:[sprites_irq] from sprites_irq::toSpritePtr2 - [78] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 - to:sprites_irq::@5 -sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@7 - [79] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 - [80] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 - [81] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 - [82] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 - [83] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 - [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 + [78] phi() + to:sprites_irq::@15 +sprites_irq::@15: scope:[sprites_irq] from sprites_irq::toSpritePtr2 + [79] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 + to:sprites_irq::@7 +sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@8 + [80] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 + [81] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 + [82] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 + [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 + [84] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + [85] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 to:sprites_irq::@3 diff --git a/src/test/ref/examples/tetris/test-sprites.log b/src/test/ref/examples/tetris/test-sprites.log index d8251bcd4..86f7c8e45 100644 --- a/src/test/ref/examples/tetris/test-sprites.log +++ b/src/test/ref/examples/tetris/test-sprites.log @@ -1,7 +1,7 @@ Resolved forward reference sprites_irq to interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx -Inlined call (byte~) $3 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES -Inlined call (byte~) sprites_irq::$3 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES +Inlined call (byte~) $5 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES +Inlined call (byte~) sprites_irq::$5 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES Inlined call call vicSelectGfxBank (byte*) PLAYFIELD_SCREEN_1 Inlined call (byte~) main::$1 ← call toD018 (byte*) PLAYFIELD_SCREEN_1 (byte*) PLAYFIELD_CHARSET @@ -109,12 +109,16 @@ CONTROL FLOW GRAPH SSA (word) lines_bcd#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) level_bcd#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) level#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) game_over#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 kickasm(location (byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 @@ -150,14 +154,17 @@ sprites_init::@return: scope:[sprites_init] from sprites_init::@1 to:@return @5: scope:[] from @4 (byte) render_screen_showing#8 ← phi( @4/(byte) render_screen_showing#0 ) - (byte) IRQ_RASTER_FIRST#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) SPRITES_FIRST_YPOS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte/signed word/word/dword/signed dword~) $3 ← (byte) SPRITES_FIRST_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 19 + (byte) IRQ_RASTER_FIRST#0 ← (byte/signed word/word/dword/signed dword~) $3 (byte) irq_raster_next#0 ← (byte) IRQ_RASTER_FIRST#0 - (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte/signed word/word/dword/signed dword~) $4 ← (byte) SPRITES_FIRST_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) irq_sprite_ypos#0 ← (byte/signed word/word/dword/signed dword~) $4 (byte*) toSpritePtr1_sprite#0 ← (byte*) PLAYFIELD_SPRITES#0 to:toSpritePtr1 toSpritePtr1: scope:[] from @5 - (byte) irq_raster_next#21 ← phi( @5/(byte) irq_raster_next#0 ) (byte) render_screen_showing#7 ← phi( @5/(byte) render_screen_showing#8 ) + (byte) irq_raster_next#21 ← phi( @5/(byte) irq_raster_next#0 ) (byte) irq_sprite_ypos#19 ← phi( @5/(byte) irq_sprite_ypos#0 ) (byte*) toSpritePtr1_sprite#1 ← phi( @5/(byte*) toSpritePtr1_sprite#0 ) (word) toSpritePtr1_$0#0 ← ((word)) (byte*) toSpritePtr1_sprite#1 @@ -166,19 +173,20 @@ toSpritePtr1: scope:[] from @5 (byte) toSpritePtr1_return#0 ← (byte) toSpritePtr1_$2#0 to:toSpritePtr1_@return toSpritePtr1_@return: scope:[] from toSpritePtr1 - (byte) irq_raster_next#20 ← phi( toSpritePtr1/(byte) irq_raster_next#21 ) (byte) render_screen_showing#6 ← phi( toSpritePtr1/(byte) render_screen_showing#7 ) - (byte) irq_sprite_ypos#16 ← phi( toSpritePtr1/(byte) irq_sprite_ypos#19 ) + (byte) irq_raster_next#18 ← phi( toSpritePtr1/(byte) irq_raster_next#21 ) + (byte) irq_sprite_ypos#15 ← phi( toSpritePtr1/(byte) irq_sprite_ypos#19 ) (byte) toSpritePtr1_return#2 ← phi( toSpritePtr1/(byte) toSpritePtr1_return#0 ) (byte) toSpritePtr1_return#1 ← (byte) toSpritePtr1_return#2 to:@9 @9: scope:[] from toSpritePtr1_@return - (byte) irq_raster_next#19 ← phi( toSpritePtr1_@return/(byte) irq_raster_next#20 ) (byte) render_screen_showing#5 ← phi( toSpritePtr1_@return/(byte) render_screen_showing#6 ) - (byte) irq_sprite_ypos#15 ← phi( toSpritePtr1_@return/(byte) irq_sprite_ypos#16 ) + (byte) irq_raster_next#17 ← phi( toSpritePtr1_@return/(byte) irq_raster_next#18 ) + (byte) irq_sprite_ypos#14 ← phi( toSpritePtr1_@return/(byte) irq_sprite_ypos#15 ) (byte) toSpritePtr1_return#3 ← phi( toSpritePtr1_@return/(byte) toSpritePtr1_return#1 ) - (byte~) $3 ← (byte) toSpritePtr1_return#3 - (byte) irq_sprite_ptr#0 ← (byte~) $3 + (byte~) $5 ← (byte) toSpritePtr1_return#3 + (byte/signed word/word/dword/signed dword~) $6 ← (byte~) $5 + (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) irq_sprite_ptr#0 ← (byte/signed word/word/dword/signed dword~) $6 (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@8 sprites_irq_init: scope:[sprites_irq_init] from main::@9 @@ -199,43 +207,46 @@ sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init return to:@return sprites_irq: scope:[sprites_irq] from - (byte) irq_raster_next#17 ← phi( @8/(byte) irq_raster_next#18 ) (byte) irq_cnt#15 ← phi( @8/(byte) irq_cnt#17 ) (byte) render_screen_showing#3 ← phi( @8/(byte) render_screen_showing#4 ) - (byte) irq_sprite_ptr#10 ← phi( @8/(byte) irq_sprite_ptr#15 ) - (byte) irq_sprite_ypos#4 ← phi( @8/(byte) irq_sprite_ypos#8 ) + (byte) irq_sprite_ptr#12 ← phi( @8/(byte) irq_sprite_ptr#14 ) + (byte) irq_raster_next#5 ← phi( @8/(byte) irq_raster_next#10 ) + (byte) irq_sprite_ypos#5 ← phi( @8/(byte) irq_sprite_ypos#9 ) asm { cld } - (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#4 + (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#5 *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) sprites_irq::ypos#0 *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#5 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 to:sprites_irq::@1 sprites_irq::@1: scope:[sprites_irq] from sprites_irq sprites_irq::@1 - (byte) irq_raster_next#16 ← phi( sprites_irq/(byte) irq_raster_next#17 sprites_irq::@1/(byte) irq_raster_next#16 ) - (byte) irq_cnt#12 ← phi( sprites_irq/(byte) irq_cnt#15 sprites_irq::@1/(byte) irq_cnt#12 ) + (byte) irq_sprite_ypos#22 ← phi( sprites_irq/(byte) irq_sprite_ypos#5 sprites_irq::@1/(byte) irq_sprite_ypos#22 ) + (byte) irq_raster_next#22 ← phi( sprites_irq/(byte) irq_raster_next#5 sprites_irq::@1/(byte) irq_raster_next#22 ) + (byte) irq_cnt#13 ← phi( sprites_irq/(byte) irq_cnt#15 sprites_irq::@1/(byte) irq_cnt#13 ) (byte) render_screen_showing#2 ← phi( sprites_irq/(byte) render_screen_showing#3 sprites_irq::@1/(byte) render_screen_showing#2 ) - (byte) irq_sprite_ptr#7 ← phi( sprites_irq/(byte) irq_sprite_ptr#10 sprites_irq::@1/(byte) irq_sprite_ptr#7 ) - (byte) irq_sprite_ypos#5 ← phi( sprites_irq/(byte) irq_sprite_ypos#4 sprites_irq::@1/(byte) irq_sprite_ypos#5 ) - (bool~) sprites_irq::$0 ← *((byte*) RASTER#0) < (byte) irq_sprite_ypos#5 - if((bool~) sprites_irq::$0) goto sprites_irq::@1 - to:sprites_irq::@7 -sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@1 - (byte) irq_sprite_ypos#17 ← phi( sprites_irq::@1/(byte) irq_sprite_ypos#5 ) - (byte) irq_raster_next#14 ← phi( sprites_irq::@1/(byte) irq_raster_next#16 ) - (byte) irq_cnt#9 ← phi( sprites_irq::@1/(byte) irq_cnt#12 ) - (byte) render_screen_showing#1 ← phi( sprites_irq::@1/(byte) render_screen_showing#2 ) - (byte) irq_sprite_ptr#4 ← phi( sprites_irq::@1/(byte) irq_sprite_ptr#7 ) - (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#4 - (bool~) sprites_irq::$1 ← (byte) render_screen_showing#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 - if((bool~) sprites_irq::$1) goto sprites_irq::@2 + (byte) irq_sprite_ptr#9 ← phi( sprites_irq/(byte) irq_sprite_ptr#12 sprites_irq::@1/(byte) irq_sprite_ptr#9 ) + (byte) sprites_irq::raster_sprite_gfx_modify#1 ← phi( sprites_irq/(byte) sprites_irq::raster_sprite_gfx_modify#0 sprites_irq::@1/(byte) sprites_irq::raster_sprite_gfx_modify#1 ) + (bool~) sprites_irq::$1 ← *((byte*) RASTER#0) < (byte) sprites_irq::raster_sprite_gfx_modify#1 + if((bool~) sprites_irq::$1) goto sprites_irq::@1 to:sprites_irq::@8 -sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@7 - (byte) irq_sprite_ptr#11 ← phi( sprites_irq::@7/(byte) irq_sprite_ptr#4 ) - (byte) irq_sprite_ypos#11 ← phi( sprites_irq::@7/(byte) irq_sprite_ypos#17 ) - (byte) irq_raster_next#10 ← phi( sprites_irq::@7/(byte) irq_raster_next#14 ) - (byte) irq_cnt#6 ← phi( sprites_irq::@7/(byte) irq_cnt#9 ) - (byte) sprites_irq::ptr#5 ← phi( sprites_irq::@7/(byte) sprites_irq::ptr#0 ) +sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@1 + (byte) irq_sprite_ypos#20 ← phi( sprites_irq::@1/(byte) irq_sprite_ypos#22 ) + (byte) irq_raster_next#19 ← phi( sprites_irq::@1/(byte) irq_raster_next#22 ) + (byte) irq_cnt#10 ← phi( sprites_irq::@1/(byte) irq_cnt#13 ) + (byte) render_screen_showing#1 ← phi( sprites_irq::@1/(byte) render_screen_showing#2 ) + (byte) irq_sprite_ptr#5 ← phi( sprites_irq::@1/(byte) irq_sprite_ptr#9 ) + (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#5 + (bool~) sprites_irq::$2 ← (byte) render_screen_showing#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) sprites_irq::$2) goto sprites_irq::@2 + to:sprites_irq::@9 +sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@8 + (byte) irq_sprite_ptr#15 ← phi( sprites_irq::@8/(byte) irq_sprite_ptr#5 ) + (byte) irq_sprite_ypos#16 ← phi( sprites_irq::@8/(byte) irq_sprite_ypos#20 ) + (byte) irq_raster_next#14 ← phi( sprites_irq::@8/(byte) irq_raster_next#19 ) + (byte) irq_cnt#7 ← phi( sprites_irq::@8/(byte) irq_cnt#10 ) + (byte) sprites_irq::ptr#5 ← phi( sprites_irq::@8/(byte) sprites_irq::ptr#0 ) *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) sprites_irq::ptr#5 (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#5 *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 @@ -243,12 +254,12 @@ sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@7 (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 to:sprites_irq::@3 -sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@7 - (byte) irq_sprite_ptr#12 ← phi( sprites_irq::@7/(byte) irq_sprite_ptr#4 ) - (byte) irq_sprite_ypos#12 ← phi( sprites_irq::@7/(byte) irq_sprite_ypos#17 ) - (byte) irq_raster_next#11 ← phi( sprites_irq::@7/(byte) irq_raster_next#14 ) - (byte) irq_cnt#7 ← phi( sprites_irq::@7/(byte) irq_cnt#9 ) - (byte) sprites_irq::ptr#6 ← phi( sprites_irq::@7/(byte) sprites_irq::ptr#0 ) +sprites_irq::@9: scope:[sprites_irq] from sprites_irq::@8 + (byte) irq_sprite_ptr#16 ← phi( sprites_irq::@8/(byte) irq_sprite_ptr#5 ) + (byte) irq_sprite_ypos#17 ← phi( sprites_irq::@8/(byte) irq_sprite_ypos#20 ) + (byte) irq_raster_next#15 ← phi( sprites_irq::@8/(byte) irq_raster_next#19 ) + (byte) irq_cnt#8 ← phi( sprites_irq::@8/(byte) irq_cnt#10 ) + (byte) sprites_irq::ptr#6 ← phi( sprites_irq::@8/(byte) sprites_irq::ptr#0 ) *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) sprites_irq::ptr#6 (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#6 *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 @@ -256,25 +267,26 @@ sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@7 (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 to:sprites_irq::@3 -sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@8 - (byte) irq_sprite_ptr#8 ← phi( sprites_irq::@2/(byte) irq_sprite_ptr#11 sprites_irq::@8/(byte) irq_sprite_ptr#12 ) - (byte) irq_sprite_ypos#9 ← phi( sprites_irq::@2/(byte) irq_sprite_ypos#11 sprites_irq::@8/(byte) irq_sprite_ypos#12 ) - (byte) irq_raster_next#7 ← phi( sprites_irq::@2/(byte) irq_raster_next#10 sprites_irq::@8/(byte) irq_raster_next#11 ) - (byte) irq_cnt#4 ← phi( sprites_irq::@2/(byte) irq_cnt#6 sprites_irq::@8/(byte) irq_cnt#7 ) +sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@9 + (byte) irq_sprite_ptr#13 ← phi( sprites_irq::@2/(byte) irq_sprite_ptr#15 sprites_irq::@9/(byte) irq_sprite_ptr#16 ) + (byte) irq_sprite_ypos#12 ← phi( sprites_irq::@2/(byte) irq_sprite_ypos#16 sprites_irq::@9/(byte) irq_sprite_ypos#17 ) + (byte) irq_raster_next#11 ← phi( sprites_irq::@2/(byte) irq_raster_next#14 sprites_irq::@9/(byte) irq_raster_next#15 ) + (byte) irq_cnt#4 ← phi( sprites_irq::@2/(byte) irq_cnt#7 sprites_irq::@9/(byte) irq_cnt#8 ) (byte) irq_cnt#1 ← ++ (byte) irq_cnt#4 - (bool~) sprites_irq::$2 ← (byte) irq_cnt#1 == (byte/signed byte/word/signed word/dword/signed dword) 10 - if((bool~) sprites_irq::$2) goto sprites_irq::@4 - to:sprites_irq::@10 + (bool~) sprites_irq::$3 ← (byte) irq_cnt#1 == (byte/signed byte/word/signed word/dword/signed dword) 9 + if((bool~) sprites_irq::$3) goto sprites_irq::@4 + to:sprites_irq::@11 sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@3 - (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) irq_raster_next#1 ← (byte) IRQ_RASTER_FIRST#0 - (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte) irq_cnt#18 ← phi( sprites_irq::@3/(byte) irq_cnt#1 ) + (byte) irq_raster_next#6 ← phi( sprites_irq::@3/(byte) irq_raster_next#11 ) + (byte) irq_raster_next#1 ← (byte) irq_raster_next#6 + (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) irq_sprite_ypos#1 ← (byte) SPRITES_FIRST_YPOS#0 (byte*) sprites_irq::toSpritePtr2_sprite#0 ← (byte*) PLAYFIELD_SPRITES#0 to:sprites_irq::toSpritePtr2 sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@4 (byte) irq_sprite_ypos#21 ← phi( sprites_irq::@4/(byte) irq_sprite_ypos#1 ) - (byte) irq_cnt#18 ← phi( sprites_irq::@4/(byte) irq_cnt#2 ) - (byte) irq_raster_next#15 ← phi( sprites_irq::@4/(byte) irq_raster_next#1 ) + (byte) irq_cnt#16 ← phi( sprites_irq::@4/(byte) irq_cnt#18 ) + (byte) irq_raster_next#20 ← phi( sprites_irq::@4/(byte) irq_raster_next#1 ) (byte*) sprites_irq::toSpritePtr2_sprite#1 ← phi( sprites_irq::@4/(byte*) sprites_irq::toSpritePtr2_sprite#0 ) (word) sprites_irq::toSpritePtr2_$0#0 ← ((word)) (byte*) sprites_irq::toSpritePtr2_sprite#1 (word) sprites_irq::toSpritePtr2_$1#0 ← (word) sprites_irq::toSpritePtr2_$0#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6 @@ -282,66 +294,62 @@ sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@4 (byte) sprites_irq::toSpritePtr2_return#0 ← (byte) sprites_irq::toSpritePtr2_$2#0 to:sprites_irq::toSpritePtr2_@return sprites_irq::toSpritePtr2_@return: scope:[sprites_irq] from sprites_irq::toSpritePtr2 - (byte) irq_sprite_ypos#20 ← phi( sprites_irq::toSpritePtr2/(byte) irq_sprite_ypos#21 ) - (byte) irq_cnt#16 ← phi( sprites_irq::toSpritePtr2/(byte) irq_cnt#18 ) - (byte) irq_raster_next#12 ← phi( sprites_irq::toSpritePtr2/(byte) irq_raster_next#15 ) + (byte) irq_sprite_ypos#18 ← phi( sprites_irq::toSpritePtr2/(byte) irq_sprite_ypos#21 ) + (byte) irq_cnt#14 ← phi( sprites_irq::toSpritePtr2/(byte) irq_cnt#16 ) + (byte) irq_raster_next#16 ← phi( sprites_irq::toSpritePtr2/(byte) irq_raster_next#20 ) (byte) sprites_irq::toSpritePtr2_return#2 ← phi( sprites_irq::toSpritePtr2/(byte) sprites_irq::toSpritePtr2_return#0 ) (byte) sprites_irq::toSpritePtr2_return#1 ← (byte) sprites_irq::toSpritePtr2_return#2 - to:sprites_irq::@13 -sprites_irq::@13: scope:[sprites_irq] from sprites_irq::toSpritePtr2_@return - (byte) irq_sprite_ypos#18 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_sprite_ypos#20 ) - (byte) irq_cnt#14 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_cnt#16 ) - (byte) irq_raster_next#8 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_raster_next#12 ) + to:sprites_irq::@15 +sprites_irq::@15: scope:[sprites_irq] from sprites_irq::toSpritePtr2_@return + (byte) irq_sprite_ypos#13 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_sprite_ypos#18 ) + (byte) irq_cnt#12 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_cnt#14 ) + (byte) irq_raster_next#13 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_raster_next#16 ) (byte) sprites_irq::toSpritePtr2_return#3 ← phi( sprites_irq::toSpritePtr2_@return/(byte) sprites_irq::toSpritePtr2_return#1 ) - (byte~) sprites_irq::$3 ← (byte) sprites_irq::toSpritePtr2_return#3 - (byte) irq_sprite_ptr#1 ← (byte~) sprites_irq::$3 - to:sprites_irq::@5 -sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@3 - (byte) irq_cnt#13 ← phi( sprites_irq::@3/(byte) irq_cnt#1 ) - (byte) irq_sprite_ptr#5 ← phi( sprites_irq::@3/(byte) irq_sprite_ptr#8 ) - (byte) irq_sprite_ypos#6 ← phi( sprites_irq::@3/(byte) irq_sprite_ypos#9 ) - (byte) irq_raster_next#4 ← phi( sprites_irq::@3/(byte) irq_raster_next#7 ) - (byte) irq_raster_next#2 ← (byte) irq_raster_next#4 + (byte/signed byte/word/signed word/dword/signed dword) 21 - (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#6 + (byte/signed byte/word/signed word/dword/signed dword) 21 - (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#5 + (byte/signed byte/word/signed word/dword/signed dword) 3 - to:sprites_irq::@5 -sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@10 sprites_irq::@13 - (byte) irq_sprite_ptr#14 ← phi( sprites_irq::@10/(byte) irq_sprite_ptr#2 sprites_irq::@13/(byte) irq_sprite_ptr#1 ) - (byte) irq_sprite_ypos#14 ← phi( sprites_irq::@10/(byte) irq_sprite_ypos#2 sprites_irq::@13/(byte) irq_sprite_ypos#18 ) - (byte) irq_cnt#11 ← phi( sprites_irq::@10/(byte) irq_cnt#13 sprites_irq::@13/(byte) irq_cnt#14 ) - (byte) irq_raster_next#5 ← phi( sprites_irq::@10/(byte) irq_raster_next#2 sprites_irq::@13/(byte) irq_raster_next#8 ) - (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#5 - (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 - (bool~) sprites_irq::$5 ← (byte~) sprites_irq::$4 == (byte/signed byte/word/signed word/dword/signed dword) 3 - (bool~) sprites_irq::$6 ← ! (bool~) sprites_irq::$5 - if((bool~) sprites_irq::$6) goto sprites_irq::@6 + (byte~) sprites_irq::$5 ← (byte) sprites_irq::toSpritePtr2_return#3 + (byte) irq_sprite_ptr#1 ← (byte~) sprites_irq::$5 + to:sprites_irq::@7 +sprites_irq::@11: scope:[sprites_irq] from sprites_irq::@3 + (byte) irq_raster_next#12 ← phi( sprites_irq::@3/(byte) irq_raster_next#11 ) + (byte) irq_sprite_ptr#10 ← phi( sprites_irq::@3/(byte) irq_sprite_ptr#13 ) + (byte) irq_sprite_ypos#10 ← phi( sprites_irq::@3/(byte) irq_sprite_ypos#12 ) + (byte) irq_cnt#5 ← phi( sprites_irq::@3/(byte) irq_cnt#1 ) + (bool~) sprites_irq::$4 ← (byte) irq_cnt#5 == (byte/signed byte/word/signed word/dword/signed dword) 10 + if((bool~) sprites_irq::$4) goto sprites_irq::@5 to:sprites_irq::@12 -sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@5 - (byte) irq_sprite_ptr#9 ← phi( sprites_irq::@12/(byte) irq_sprite_ptr#13 sprites_irq::@5/(byte) irq_sprite_ptr#14 ) - (byte) irq_sprite_ypos#10 ← phi( sprites_irq::@12/(byte) irq_sprite_ypos#13 sprites_irq::@5/(byte) irq_sprite_ypos#14 ) - (byte) irq_raster_next#9 ← phi( sprites_irq::@12/(byte) irq_raster_next#13 sprites_irq::@5/(byte) irq_raster_next#5 ) - (byte) irq_cnt#8 ← phi( sprites_irq::@12/(byte) irq_cnt#10 sprites_irq::@5/(byte) irq_cnt#11 ) - (byte) sprites_irq::raster_next#2 ← phi( sprites_irq::@12/(byte) sprites_irq::raster_next#1 sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) - *((byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 +sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@11 + (byte) irq_sprite_ptr#6 ← phi( sprites_irq::@11/(byte) irq_sprite_ptr#10 ) + (byte) irq_sprite_ypos#6 ← phi( sprites_irq::@11/(byte) irq_sprite_ypos#10 ) + (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) irq_raster_next#2 ← (byte) IRQ_RASTER_FIRST#0 + (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#6 + (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#6 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:sprites_irq::@7 +sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@11 + (byte) irq_cnt#11 ← phi( sprites_irq::@11/(byte) irq_cnt#5 ) + (byte) irq_sprite_ptr#7 ← phi( sprites_irq::@11/(byte) irq_sprite_ptr#10 ) + (byte) irq_sprite_ypos#7 ← phi( sprites_irq::@11/(byte) irq_sprite_ypos#10 ) + (byte) irq_raster_next#7 ← phi( sprites_irq::@11/(byte) irq_raster_next#12 ) + (byte) irq_raster_next#3 ← (byte) irq_raster_next#7 + (byte/signed byte/word/signed word/dword/signed dword) 20 + (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#7 + (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#7 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:sprites_irq::@7 +sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 + (byte) irq_sprite_ptr#11 ← phi( sprites_irq::@12/(byte) irq_sprite_ptr#3 sprites_irq::@15/(byte) irq_sprite_ptr#1 sprites_irq::@5/(byte) irq_sprite_ptr#2 ) + (byte) irq_sprite_ypos#11 ← phi( sprites_irq::@12/(byte) irq_sprite_ypos#3 sprites_irq::@15/(byte) irq_sprite_ypos#13 sprites_irq::@5/(byte) irq_sprite_ypos#2 ) + (byte) irq_cnt#9 ← phi( sprites_irq::@12/(byte) irq_cnt#11 sprites_irq::@15/(byte) irq_cnt#12 sprites_irq::@5/(byte) irq_cnt#2 ) + (byte) irq_raster_next#8 ← phi( sprites_irq::@12/(byte) irq_raster_next#3 sprites_irq::@15/(byte) irq_raster_next#13 sprites_irq::@5/(byte) irq_raster_next#2 ) + *((byte*) RASTER#0) ← (byte) irq_raster_next#8 *((byte*) IRQ_STATUS#0) ← (byte) IRQ_RASTER#0 to:sprites_irq::@return -sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@5 - (byte) irq_sprite_ptr#13 ← phi( sprites_irq::@5/(byte) irq_sprite_ptr#14 ) - (byte) irq_sprite_ypos#13 ← phi( sprites_irq::@5/(byte) irq_sprite_ypos#14 ) - (byte) irq_raster_next#13 ← phi( sprites_irq::@5/(byte) irq_raster_next#5 ) - (byte) irq_cnt#10 ← phi( sprites_irq::@5/(byte) irq_cnt#11 ) - (byte) sprites_irq::raster_next#3 ← phi( sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) - (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#3 - (byte/signed byte/word/signed word/dword/signed dword) 1 - to:sprites_irq::@6 -sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6 - (byte) irq_sprite_ptr#6 ← phi( sprites_irq::@6/(byte) irq_sprite_ptr#9 ) - (byte) irq_sprite_ypos#7 ← phi( sprites_irq::@6/(byte) irq_sprite_ypos#10 ) - (byte) irq_raster_next#6 ← phi( sprites_irq::@6/(byte) irq_raster_next#9 ) - (byte) irq_cnt#5 ← phi( sprites_irq::@6/(byte) irq_cnt#8 ) - (byte) irq_cnt#3 ← (byte) irq_cnt#5 - (byte) irq_raster_next#3 ← (byte) irq_raster_next#6 - (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#7 - (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#6 +sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@7 + (byte) irq_sprite_ptr#8 ← phi( sprites_irq::@7/(byte) irq_sprite_ptr#11 ) + (byte) irq_sprite_ypos#8 ← phi( sprites_irq::@7/(byte) irq_sprite_ypos#11 ) + (byte) irq_raster_next#9 ← phi( sprites_irq::@7/(byte) irq_raster_next#8 ) + (byte) irq_cnt#6 ← phi( sprites_irq::@7/(byte) irq_cnt#9 ) + (byte) irq_cnt#3 ← (byte) irq_cnt#6 + (byte) irq_raster_next#4 ← (byte) irq_raster_next#9 + (byte) irq_sprite_ypos#4 ← (byte) irq_sprite_ypos#8 + (byte) irq_sprite_ptr#4 ← (byte) irq_sprite_ptr#8 return to:@return main: scope:[main] from @8 @@ -412,11 +420,11 @@ main::@return: scope:[main] from main::@1 return to:@return @8: scope:[] from @9 - (byte) irq_raster_next#18 ← phi( @9/(byte) irq_raster_next#19 ) (byte) irq_cnt#17 ← phi( @9/(byte) irq_cnt#0 ) (byte) render_screen_showing#4 ← phi( @9/(byte) render_screen_showing#5 ) - (byte) irq_sprite_ptr#15 ← phi( @9/(byte) irq_sprite_ptr#0 ) - (byte) irq_sprite_ypos#8 ← phi( @9/(byte) irq_sprite_ypos#15 ) + (byte) irq_sprite_ptr#14 ← phi( @9/(byte) irq_sprite_ptr#0 ) + (byte) irq_raster_next#10 ← phi( @9/(byte) irq_raster_next#17 ) + (byte) irq_sprite_ypos#9 ← phi( @9/(byte) irq_sprite_ypos#14 ) call main to:@10 @10: scope:[] from @8 @@ -427,7 +435,10 @@ SYMBOL TABLE SSA (byte*~) $0 (byte*~) $1 (byte~) $2 -(byte~) $3 +(byte/signed word/word/dword/signed dword~) $3 +(byte/signed word/word/dword/signed dword~) $4 +(byte~) $5 +(byte/signed word/word/dword/signed dword~) $6 (label) @10 (label) @4 (label) @5 @@ -575,6 +586,8 @@ SYMBOL TABLE SSA (byte*) SPRITES_EXPAND_X#0 (byte*) SPRITES_EXPAND_Y (byte*) SPRITES_EXPAND_Y#0 +(byte) SPRITES_FIRST_YPOS +(byte) SPRITES_FIRST_YPOS#0 (byte*) SPRITES_MC (byte*) SPRITES_MC#0 (byte*) SPRITES_MC1 @@ -619,6 +632,8 @@ SYMBOL TABLE SSA (byte*) current_piece_gfx (byte) current_xpos (byte) current_ypos +(byte) game_over +(byte) game_over#0 (byte) irq_cnt (byte) irq_cnt#0 (byte) irq_cnt#1 @@ -655,6 +670,7 @@ SYMBOL TABLE SSA (byte) irq_raster_next#2 (byte) irq_raster_next#20 (byte) irq_raster_next#21 +(byte) irq_raster_next#22 (byte) irq_raster_next#3 (byte) irq_raster_next#4 (byte) irq_raster_next#5 @@ -671,6 +687,7 @@ SYMBOL TABLE SSA (byte) irq_sprite_ptr#13 (byte) irq_sprite_ptr#14 (byte) irq_sprite_ptr#15 +(byte) irq_sprite_ptr#16 (byte) irq_sprite_ptr#2 (byte) irq_sprite_ptr#3 (byte) irq_sprite_ptr#4 @@ -695,6 +712,7 @@ SYMBOL TABLE SSA (byte) irq_sprite_ypos#2 (byte) irq_sprite_ypos#20 (byte) irq_sprite_ypos#21 +(byte) irq_sprite_ypos#22 (byte) irq_sprite_ypos#3 (byte) irq_sprite_ypos#4 (byte) irq_sprite_ypos#5 @@ -810,24 +828,23 @@ SYMBOL TABLE SSA (byte) sprites_init::xpos#1 (byte) sprites_init::xpos#2 interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -(bool~) sprites_irq::$0 +(byte/signed word/word/dword/signed dword~) sprites_irq::$0 (bool~) sprites_irq::$1 (bool~) sprites_irq::$2 -(byte~) sprites_irq::$3 -(byte~) sprites_irq::$4 -(bool~) sprites_irq::$5 -(bool~) sprites_irq::$6 +(bool~) sprites_irq::$3 +(bool~) sprites_irq::$4 +(byte~) sprites_irq::$5 (label) sprites_irq::@1 -(label) sprites_irq::@10 +(label) sprites_irq::@11 (label) sprites_irq::@12 -(label) sprites_irq::@13 +(label) sprites_irq::@15 (label) sprites_irq::@2 (label) sprites_irq::@3 (label) sprites_irq::@4 (label) sprites_irq::@5 -(label) sprites_irq::@6 (label) sprites_irq::@7 (label) sprites_irq::@8 +(label) sprites_irq::@9 (label) sprites_irq::@return (byte) sprites_irq::ptr (byte) sprites_irq::ptr#0 @@ -837,11 +854,9 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() (byte) sprites_irq::ptr#4 (byte) sprites_irq::ptr#5 (byte) sprites_irq::ptr#6 -(byte) sprites_irq::raster_next -(byte) sprites_irq::raster_next#0 -(byte) sprites_irq::raster_next#1 -(byte) sprites_irq::raster_next#2 -(byte) sprites_irq::raster_next#3 +(byte) sprites_irq::raster_sprite_gfx_modify +(byte) sprites_irq::raster_sprite_gfx_modify#0 +(byte) sprites_irq::raster_sprite_gfx_modify#1 (label) sprites_irq::toSpritePtr2 (word~) sprites_irq::toSpritePtr2_$0 (word) sprites_irq::toSpritePtr2_$0#0 @@ -883,11 +898,11 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() Culled Empty Block (label) main::@10 Culled Empty Block (label) @10 Successful SSA optimization Pass2CullEmptyBlocks -Inversing boolean not (bool~) sprites_irq::$6 ← (byte~) sprites_irq::$4 != (byte/signed byte/word/signed word/dword/signed dword) 3 from (bool~) sprites_irq::$5 ← (byte~) sprites_irq::$4 == (byte/signed byte/word/signed word/dword/signed dword) 3 -Successful SSA optimization Pass2UnaryNotSimplification -Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#21 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 -Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $3 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#15 -Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$3 (byte) irq_sprite_ptr#1 +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte/signed word/word/dword/signed dword~) $3 (byte) irq_raster_next#0 (byte) irq_raster_next#21 (byte) irq_raster_next#18 (byte) irq_raster_next#17 (byte) irq_raster_next#10 +Alias candidate removed (volatile)(byte) irq_sprite_ypos#0 = (byte/signed word/word/dword/signed dword~) $4 (byte) irq_sprite_ypos#19 (byte) irq_sprite_ypos#15 (byte) irq_sprite_ypos#14 (byte) irq_sprite_ypos#9 +Alias candidate removed (volatile)(byte) irq_sprite_ptr#0 = (byte/signed word/word/dword/signed dword~) $6 (byte) irq_sprite_ptr#14 +Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0 +Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$5 (byte) irq_sprite_ptr#1 Alias (byte*) PLAYFIELD_SPRITE_PTRS_1#0 = (byte*~) $0 Alias (byte*) PLAYFIELD_SPRITE_PTRS_2#0 = (byte*~) $1 Alias (byte) sprites_init::xpos#0 = (byte/signed word/word/dword/signed dword/signed byte~) sprites_init::$1 @@ -895,30 +910,24 @@ Alias (byte) sprites_init::s2#0 = (byte~) sprites_init::$2 Alias (byte) sprites_init::xpos#1 = (byte/signed word/word/dword/signed dword~) sprites_init::$3 Alias (byte) render_screen_showing#0 = (byte) render_screen_showing#8 (byte) render_screen_showing#7 (byte) render_screen_showing#6 (byte) render_screen_showing#5 (byte) render_screen_showing#4 Alias (byte*) PLAYFIELD_SPRITES#0 = (byte*) toSpritePtr1_sprite#0 (byte*) toSpritePtr1_sprite#1 -Alias (byte) irq_sprite_ypos#0 = (byte) irq_sprite_ypos#19 (byte) irq_sprite_ypos#16 (byte) irq_sprite_ypos#15 (byte) irq_sprite_ypos#8 -Alias (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#4 (byte) irq_sprite_ptr#7 (byte) irq_sprite_ptr#12 +Alias (byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $5 +Alias (byte) irq_sprite_ptr#15 = (byte) irq_sprite_ptr#5 (byte) irq_sprite_ptr#9 (byte) irq_sprite_ptr#16 Alias (byte) render_screen_showing#1 = (byte) render_screen_showing#2 -Alias (byte) irq_cnt#12 = (byte) irq_cnt#9 (byte) irq_cnt#6 (byte) irq_cnt#7 -Alias (byte) irq_raster_next#10 = (byte) irq_raster_next#14 (byte) irq_raster_next#16 (byte) irq_raster_next#11 -Alias (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#17 (byte) irq_sprite_ypos#5 (byte) irq_sprite_ypos#12 +Alias (byte) irq_cnt#10 = (byte) irq_cnt#13 (byte) irq_cnt#7 (byte) irq_cnt#8 +Alias (byte) irq_raster_next#14 = (byte) irq_raster_next#19 (byte) irq_raster_next#22 (byte) irq_raster_next#15 +Alias (byte) irq_sprite_ypos#16 = (byte) irq_sprite_ypos#20 (byte) irq_sprite_ypos#22 (byte) irq_sprite_ypos#17 Alias (byte) sprites_irq::ptr#0 = (byte) sprites_irq::ptr#5 (byte) sprites_irq::ptr#6 +Alias (byte) irq_raster_next#11 = (byte) irq_raster_next#6 (byte) irq_raster_next#12 (byte) irq_raster_next#7 +Alias (byte) irq_cnt#1 = (byte) irq_cnt#18 (byte) irq_cnt#16 (byte) irq_cnt#14 (byte) irq_cnt#12 (byte) irq_cnt#5 (byte) irq_cnt#11 Alias (byte*) sprites_irq::toSpritePtr2_sprite#0 = (byte*) sprites_irq::toSpritePtr2_sprite#1 -Alias (byte) irq_raster_next#1 = (byte) irq_raster_next#15 (byte) irq_raster_next#12 (byte) irq_raster_next#8 -Alias (byte) irq_cnt#14 = (byte) irq_cnt#18 (byte) irq_cnt#2 (byte) irq_cnt#16 -Alias (byte) irq_sprite_ypos#1 = (byte) irq_sprite_ypos#21 (byte) irq_sprite_ypos#20 (byte) irq_sprite_ypos#18 -Alias (byte) irq_raster_next#4 = (byte) irq_raster_next#7 -Alias (byte) irq_sprite_ypos#6 = (byte) irq_sprite_ypos#9 -Alias (byte) irq_sprite_ptr#5 = (byte) irq_sprite_ptr#8 -Alias (byte) irq_cnt#1 = (byte) irq_cnt#13 -Alias (byte) sprites_irq::raster_next#0 = (byte) sprites_irq::raster_next#3 -Alias (byte) irq_cnt#10 = (byte) irq_cnt#11 -Alias (byte) irq_raster_next#13 = (byte) irq_raster_next#5 -Alias (byte) irq_sprite_ypos#13 = (byte) irq_sprite_ypos#14 -Alias (byte) irq_sprite_ptr#13 = (byte) irq_sprite_ptr#14 -Alias (byte) irq_cnt#3 = (byte) irq_cnt#5 (byte) irq_cnt#8 -Alias (byte) irq_raster_next#3 = (byte) irq_raster_next#6 (byte) irq_raster_next#9 -Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#7 (byte) irq_sprite_ypos#3 -Alias (byte) irq_sprite_ptr#3 = (byte) irq_sprite_ptr#6 (byte) irq_sprite_ptr#9 +Alias (byte) irq_raster_next#1 = (byte) irq_raster_next#20 (byte) irq_raster_next#16 (byte) irq_raster_next#13 +Alias (byte) irq_sprite_ypos#1 = (byte) irq_sprite_ypos#21 (byte) irq_sprite_ypos#18 (byte) irq_sprite_ypos#13 +Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#12 (byte) irq_sprite_ypos#6 (byte) irq_sprite_ypos#7 +Alias (byte) irq_sprite_ptr#10 = (byte) irq_sprite_ptr#13 (byte) irq_sprite_ptr#6 (byte) irq_sprite_ptr#7 +Alias (byte) irq_cnt#3 = (byte) irq_cnt#6 (byte) irq_cnt#9 +Alias (byte) irq_raster_next#4 = (byte) irq_raster_next#9 (byte) irq_raster_next#8 +Alias (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#8 (byte) irq_sprite_ypos#4 +Alias (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#8 (byte) irq_sprite_ptr#4 Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte) main::vicSelectGfxBank1_$0#0 Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 @@ -926,52 +935,56 @@ Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 Alias (byte) main::toD0181_return#0 = (byte) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$1 Alias (byte) irq_cnt#0 = (byte) irq_cnt#17 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#21 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 -Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $3 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#15 -Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$3 (byte) irq_sprite_ptr#1 -Alias (byte) irq_cnt#12 = (byte) irq_cnt#4 -Alias (byte) irq_raster_next#10 = (byte) irq_raster_next#4 -Alias (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#6 -Alias (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#5 -Alias (byte) irq_cnt#10 = (byte) irq_cnt#3 -Alias (byte) irq_raster_next#13 = (byte) irq_raster_next#3 -Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#13 -Alias (byte) irq_sprite_ptr#13 = (byte) irq_sprite_ptr#3 +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte/signed word/word/dword/signed dword~) $3 (byte) irq_raster_next#0 (byte) irq_raster_next#21 (byte) irq_raster_next#18 (byte) irq_raster_next#17 (byte) irq_raster_next#10 +Alias candidate removed (volatile)(byte) irq_sprite_ypos#0 = (byte/signed word/word/dword/signed dword~) $4 (byte) irq_sprite_ypos#19 (byte) irq_sprite_ypos#15 (byte) irq_sprite_ypos#14 (byte) irq_sprite_ypos#9 +Alias candidate removed (volatile)(byte) irq_sprite_ptr#0 = (byte/signed word/word/dword/signed dword~) $6 (byte) irq_sprite_ptr#14 +Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0 +Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$5 (byte) irq_sprite_ptr#1 +Alias (byte) irq_cnt#10 = (byte) irq_cnt#4 +Alias (byte) irq_raster_next#11 = (byte) irq_raster_next#14 +Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#16 +Alias (byte) irq_sprite_ptr#10 = (byte) irq_sprite_ptr#15 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#21 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 -Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $3 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#15 -Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$3 (byte) irq_sprite_ptr#1 -Self Phi Eliminated (byte) irq_sprite_ypos#11 -Self Phi Eliminated (byte) irq_sprite_ptr#11 +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte/signed word/word/dword/signed dword~) $3 (byte) irq_raster_next#0 (byte) irq_raster_next#21 (byte) irq_raster_next#18 (byte) irq_raster_next#17 (byte) irq_raster_next#10 +Alias candidate removed (volatile)(byte) irq_sprite_ypos#0 = (byte/signed word/word/dword/signed dword~) $4 (byte) irq_sprite_ypos#19 (byte) irq_sprite_ypos#15 (byte) irq_sprite_ypos#14 (byte) irq_sprite_ypos#9 +Alias candidate removed (volatile)(byte) irq_sprite_ptr#0 = (byte/signed word/word/dword/signed dword~) $6 (byte) irq_sprite_ptr#14 +Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0 +Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$5 (byte) irq_sprite_ptr#1 +Self Phi Eliminated (byte) sprites_irq::raster_sprite_gfx_modify#1 +Self Phi Eliminated (byte) irq_sprite_ptr#10 Self Phi Eliminated (byte) render_screen_showing#1 -Self Phi Eliminated (byte) irq_cnt#12 -Self Phi Eliminated (byte) irq_raster_next#10 +Self Phi Eliminated (byte) irq_cnt#10 +Self Phi Eliminated (byte) irq_raster_next#11 +Self Phi Eliminated (byte) irq_sprite_ypos#10 Successful SSA optimization Pass2SelfPhiElimination +Redundant Phi (byte) irq_sprite_ypos#19 (byte) irq_sprite_ypos#0 Redundant Phi (byte) irq_raster_next#21 (byte) irq_raster_next#0 -Redundant Phi (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#0 -Redundant Phi (byte) irq_raster_next#20 (byte) irq_raster_next#21 -Redundant Phi (byte) toSpritePtr1_return#3 (byte) toSpritePtr1_return#1 -Redundant Phi (byte) irq_raster_next#19 (byte) irq_raster_next#20 -Redundant Phi (byte) irq_sprite_ypos#4 (byte) irq_sprite_ypos#0 -Redundant Phi (byte) irq_sprite_ptr#10 (byte) irq_sprite_ptr#15 +Redundant Phi (byte) irq_sprite_ypos#15 (byte) irq_sprite_ypos#19 +Redundant Phi (byte) irq_raster_next#18 (byte) irq_raster_next#21 +Redundant Phi (byte) irq_sprite_ypos#14 (byte) irq_sprite_ypos#15 +Redundant Phi (byte) irq_raster_next#17 (byte) irq_raster_next#18 +Redundant Phi (byte) irq_sprite_ypos#5 (byte) irq_sprite_ypos#9 +Redundant Phi (byte) irq_raster_next#5 (byte) irq_raster_next#10 +Redundant Phi (byte) irq_sprite_ptr#12 (byte) irq_sprite_ptr#14 Redundant Phi (byte) render_screen_showing#3 (byte) render_screen_showing#0 Redundant Phi (byte) irq_cnt#15 (byte) irq_cnt#0 -Redundant Phi (byte) irq_raster_next#17 (byte) irq_raster_next#18 -Redundant Phi (byte) irq_sprite_ypos#11 (byte) irq_sprite_ypos#4 -Redundant Phi (byte) irq_sprite_ptr#11 (byte) irq_sprite_ptr#10 +Redundant Phi (byte) sprites_irq::raster_sprite_gfx_modify#1 (byte) sprites_irq::raster_sprite_gfx_modify#0 +Redundant Phi (byte) irq_sprite_ptr#10 (byte) irq_sprite_ptr#12 Redundant Phi (byte) render_screen_showing#1 (byte) render_screen_showing#3 -Redundant Phi (byte) irq_cnt#12 (byte) irq_cnt#15 -Redundant Phi (byte) irq_raster_next#10 (byte) irq_raster_next#17 +Redundant Phi (byte) irq_cnt#10 (byte) irq_cnt#15 +Redundant Phi (byte) irq_raster_next#11 (byte) irq_raster_next#5 +Redundant Phi (byte) irq_sprite_ypos#10 (byte) irq_sprite_ypos#5 Redundant Phi (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#0 Redundant Phi (byte) sprites_irq::toSpritePtr2_return#3 (byte) sprites_irq::toSpritePtr2_return#1 -Redundant Phi (byte) irq_sprite_ptr#15 (byte) irq_sprite_ptr#0 -Redundant Phi (byte) irq_raster_next#18 (byte) irq_raster_next#19 +Redundant Phi (byte) irq_sprite_ypos#9 (byte) irq_sprite_ypos#14 +Redundant Phi (byte) irq_raster_next#10 (byte) irq_raster_next#17 +Redundant Phi (byte) irq_sprite_ptr#14 (byte) irq_sprite_ptr#0 Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) sprites_init::$4 if((byte) sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1 -Simple Condition (bool~) sprites_irq::$0 if(*((byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 -Simple Condition (bool~) sprites_irq::$1 if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -Simple Condition (bool~) sprites_irq::$2 if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 -Simple Condition (bool~) sprites_irq::$6 if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 +Simple Condition (bool~) sprites_irq::$1 if(*((byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 +Simple Condition (bool~) sprites_irq::$2 if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 +Simple Condition (bool~) sprites_irq::$3 if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 +Simple Condition (bool~) sprites_irq::$4 if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 @@ -1066,15 +1079,18 @@ Constant (const dword) score_bcd#0 = 0 Constant (const word) lines_bcd#0 = 0 Constant (const byte) level_bcd#0 = 0 Constant (const byte) level#0 = 0 +Constant (const byte) game_over#0 = 0 Constant (const byte/signed byte/word/signed word/dword/signed dword) sprites_init::$0 = 15*8 Constant (const byte) sprites_init::s#0 = 0 -Constant (const byte) IRQ_RASTER_FIRST#0 = 49 +Constant (const byte) SPRITES_FIRST_YPOS#0 = 49 Constant (const void()*) sprites_irq_init::$0 = &sprites_irq Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) PLAYFIELD_SPRITE_PTRS_1#0 = PLAYFIELD_SCREEN_1#0+SPRITE_PTRS#0 Constant (const byte*) PLAYFIELD_SPRITE_PTRS_2#0 = PLAYFIELD_SCREEN_2#0+SPRITE_PTRS#0 Constant (const byte) $2 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0 Constant (const byte) sprites_init::xpos#0 = 24+sprites_init::$0 +Constant (const byte/signed word/word/dword/signed dword) $3 = SPRITES_FIRST_YPOS#0+19 +Constant (const byte/signed word/word/dword/signed dword) $4 = SPRITES_FIRST_YPOS#0+21 Constant (const word) toSpritePtr1_$0#0 = ((word))PLAYFIELD_SPRITES#0 Constant (const byte*) sprites_irq::toSpritePtr2_sprite#0 = PLAYFIELD_SPRITES#0 Constant (const byte*) main::vicSelectGfxBank1_gfx#0 = PLAYFIELD_SCREEN_1#0 @@ -1082,35 +1098,34 @@ Constant (const byte*) main::toD0181_screen#0 = PLAYFIELD_SCREEN_1#0 Constant (const byte*) main::toD0181_gfx#0 = PLAYFIELD_CHARSET#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte[$2]) playfield#0 = { fill( $2, 0) } +Constant (const byte) IRQ_RASTER_FIRST#0 = $3 Constant (const word) toSpritePtr1_$1#0 = toSpritePtr1_$0#0>>6 Constant (const word) sprites_irq::toSpritePtr2_$0#0 = ((word))sprites_irq::toSpritePtr2_sprite#0 Constant (const word) main::vicSelectGfxBank1_toDd001_$0#0 = ((word))main::vicSelectGfxBank1_gfx#0 Constant (const word) main::toD0181_$0#0 = ((word))main::toD0181_screen#0 Constant (const word) main::toD0181_$4#0 = ((word))main::toD0181_gfx#0 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte) toSpritePtr1_$2#0 = ((byte))toSpritePtr1_$1#0 +Constant (const byte) toSpritePtr1_return#0 = ((byte))toSpritePtr1_$1#0 Constant (const word) sprites_irq::toSpritePtr2_$1#0 = sprites_irq::toSpritePtr2_$0#0>>6 Constant (const byte) main::vicSelectGfxBank1_toDd001_$1#0 = >main::vicSelectGfxBank1_toDd001_$0#0 Constant (const word) main::toD0181_$1#0 = main::toD0181_$0#0&16383 Constant (const byte) main::toD0181_$5#0 = >main::toD0181_$4#0 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte) toSpritePtr1_return#0 = toSpritePtr1_$2#0 +Constant (const byte/signed word/word/dword/signed dword) $6 = toSpritePtr1_return#0+3 Constant (const byte) sprites_irq::toSpritePtr2_$2#0 = ((byte))sprites_irq::toSpritePtr2_$1#0 Constant (const byte) main::vicSelectGfxBank1_toDd001_$2#0 = main::vicSelectGfxBank1_toDd001_$1#0>>6 Constant (const word) main::toD0181_$2#0 = main::toD0181_$1#0<<2 Constant (const byte) main::toD0181_$6#0 = main::toD0181_$5#0>>2 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte) toSpritePtr1_return#1 = toSpritePtr1_return#0 Constant (const byte) sprites_irq::toSpritePtr2_return#0 = sprites_irq::toSpritePtr2_$2#0 Constant (const byte) main::vicSelectGfxBank1_toDd001_return#0 = 3^main::vicSelectGfxBank1_toDd001_$2#0 Constant (const byte) main::toD0181_$3#0 = >main::toD0181_$2#0 Constant (const byte) main::toD0181_$7#0 = main::toD0181_$6#0&15 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte) $3 = toSpritePtr1_return#1 Constant (const byte) sprites_irq::toSpritePtr2_return#1 = sprites_irq::toSpritePtr2_return#0 Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte) sprites_irq::$3 = sprites_irq::toSpritePtr2_return#1 +Constant (const byte) sprites_irq::$5 = sprites_irq::toSpritePtr2_return#1 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(SPRITES_YPOS#0+0) Consolidated array index constant in *(SPRITES_YPOS#0+2) @@ -1139,17 +1154,20 @@ Culled Empty Block (label) main::@7 Culled Empty Block (label) main::toD0181_@return Culled Empty Block (label) main::@1 Successful SSA optimization Pass2CullEmptyBlocks +Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0 +Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0 Inlining constant with var siblings (const byte) sprites_init::s#0 Inlining constant with var siblings (const byte) sprites_init::xpos#0 Inlining constant with different constant siblings (const byte) sprites_irq::toSpritePtr2_return#1 -Inlining constant with different constant siblings (const byte) toSpritePtr1_return#1 Constant inlined main::toD0181_screen#0 = (const byte*) PLAYFIELD_SCREEN_1#0 Constant inlined main::toD0181_gfx#0 = (const byte*) PLAYFIELD_CHARSET#0 -Constant inlined sprites_irq::$3 = (const byte) sprites_irq::toSpritePtr2_return#0 Constant inlined sprites_irq::toSpritePtr2_return#1 = (const byte) sprites_irq::toSpritePtr2_return#0 +Constant inlined sprites_irq::$5 = (const byte) sprites_irq::toSpritePtr2_return#0 Constant inlined sprites_init::xpos#0 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 Constant inlined $2 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 -Constant inlined $3 = (const byte) toSpritePtr1_return#0 +Constant inlined $3 = (const byte) IRQ_RASTER_FIRST#0 +Constant inlined $4 = (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 +Constant inlined $6 = (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 Constant inlined sprites_init::s#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::vicSelectGfxBank1_toDd001_$2#0 = >((word))(const byte*) PLAYFIELD_SCREEN_1#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 Constant inlined main::vicSelectGfxBank1_toDd001_$1#0 = >((word))(const byte*) PLAYFIELD_SCREEN_1#0 @@ -1169,16 +1187,13 @@ Constant inlined main::toD0181_$4#0 = ((word))(const byte*) PLAYFIELD_CHARSET#0 Constant inlined main::toD0181_$5#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0 Constant inlined toSpritePtr1_$1#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 Constant inlined main::vicSelectGfxBank1_gfx#0 = (const byte*) PLAYFIELD_SCREEN_1#0 -Constant inlined toSpritePtr1_$2#0 = (const byte) toSpritePtr1_return#0 Constant inlined sprites_init::$0 = (byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 Constant inlined toSpritePtr1_$0#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0 -Constant inlined toSpritePtr1_return#1 = (const byte) toSpritePtr1_return#0 Successful SSA optimization Pass2ConstantInlining Simplifying constant plus zero SPRITES_YPOS#0+0 Simplifying constant plus zero PLAYFIELD_SPRITE_PTRS_1#0+0 Simplifying constant plus zero PLAYFIELD_SPRITE_PTRS_2#0+0 Added new block during phi lifting sprites_init::@3(between sprites_init::@1 and sprites_init::@1) -Added new block during phi lifting sprites_irq::@14(between sprites_irq::@5 and sprites_irq::@6) Adding NOP phi() at start of @begin Adding NOP phi() at start of toSpritePtr1 Adding NOP phi() at start of @8 @@ -1192,16 +1207,14 @@ CALL GRAPH Calls in [] to main:9 Calls in [main] to sprites_init:17 sprites_irq_init:19 -Created 4 initial phi equivalence classes +Created 3 initial phi equivalence classes Coalesced [45] sprites_init::s#3 ← sprites_init::s#1 Coalesced [46] sprites_init::xpos#3 ← sprites_init::xpos#1 -Coalesced [67] irq_raster_next#22 ← irq_raster_next#2 -Coalesced [73] sprites_irq::raster_next#4 ← sprites_irq::raster_next#1 -Coalesced [78] sprites_irq::raster_next#5 ← sprites_irq::raster_next#0 -Coalesced [84] irq_raster_next#23 ← irq_raster_next#1 -Coalesced down to 4 phi equivalence classes +Coalesced [70] irq_raster_next#23 ← irq_raster_next#3 +Coalesced [79] irq_raster_next#25 ← irq_raster_next#2 +Coalesced [84] irq_raster_next#24 ← irq_raster_next#1 +Coalesced down to 3 phi equivalence classes Culled Empty Block (label) sprites_init::@3 -Culled Empty Block (label) sprites_irq::@14 Adding NOP phi() at start of @begin Adding NOP phi() at start of toSpritePtr1 Adding NOP phi() at start of @8 @@ -1219,11 +1232,14 @@ FINAL CONTROL FLOW GRAPH @4: scope:[] from @begin [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 @@ -1233,13 +1249,13 @@ FINAL CONTROL FLOW GRAPH to:@5 @5: scope:[] from @4 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 - [4] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 to:toSpritePtr1 toSpritePtr1: scope:[] from @5 [5] phi() to:@9 @9: scope:[] from toSpritePtr1 - [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 + [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@8 @8: scope:[] from @9 @@ -1316,66 +1332,67 @@ sprites_irq: scope:[sprites_irq] from [48] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 [49] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 [50] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + [51] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [52] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 to:sprites_irq::@1 sprites_irq::@1: scope:[sprites_irq] from sprites_irq sprites_irq::@1 - [51] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 - to:sprites_irq::@7 -sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@1 - [52] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [53] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 + [53] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 to:sprites_irq::@8 -sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@7 - [54] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 - [55] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 - [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 - [57] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 - [58] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 - [59] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 +sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@1 + [54] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [55] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 + to:sprites_irq::@9 +sprites_irq::@9: scope:[sprites_irq] from sprites_irq::@8 + [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 + [57] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 + [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 + [59] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 + [60] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + [61] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 to:sprites_irq::@3 -sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@8 - [60] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [61] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 - to:sprites_irq::@10 -sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@3 - [62] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [63] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [64] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 - to:sprites_irq::@5 -sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@10 sprites_irq::@13 - [65] (byte) irq_raster_next#13 ← phi( sprites_irq::@10/(byte) irq_raster_next#2 sprites_irq::@13/(byte) irq_raster_next#1 ) - [66] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 - [67] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [68] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 +sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@9 + [62] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [63] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 + to:sprites_irq::@11 +sprites_irq::@11: scope:[sprites_irq] from sprites_irq::@3 + [64] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 to:sprites_irq::@12 -sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@5 - [69] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 - to:sprites_irq::@6 -sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@5 - [70] (byte) sprites_irq::raster_next#2 ← phi( sprites_irq::@12/(byte) sprites_irq::raster_next#1 sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) - [71] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 - [72] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 +sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@11 + [65] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 + [66] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [67] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:sprites_irq::@7 +sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 + [68] (byte) irq_raster_next#4 ← phi( sprites_irq::@12/(byte) irq_raster_next#3 sprites_irq::@15/(byte) irq_raster_next#1 sprites_irq::@5/(byte) irq_raster_next#2 ) + [69] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 + [70] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:sprites_irq::@return -sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6 - [73] return +sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@7 + [71] return to:@return +sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@11 + [72] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [73] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 + [74] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [75] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:sprites_irq::@7 sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@3 - [74] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 - [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + [76] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [77] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 to:sprites_irq::toSpritePtr2 sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@4 - [77] phi() - to:sprites_irq::@13 -sprites_irq::@13: scope:[sprites_irq] from sprites_irq::toSpritePtr2 - [78] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 - to:sprites_irq::@5 -sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@7 - [79] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 - [80] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 - [81] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 - [82] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 - [83] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 - [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 + [78] phi() + to:sprites_irq::@15 +sprites_irq::@15: scope:[sprites_irq] from sprites_irq::toSpritePtr2 + [79] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 + to:sprites_irq::@7 +sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@8 + [80] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 + [81] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 + [82] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 + [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 + [84] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + [85] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 to:sprites_irq::@3 @@ -1450,6 +1467,7 @@ VARIABLE REGISTER WEIGHTS (byte*) SPRITES_ENABLE (byte*) SPRITES_EXPAND_X (byte*) SPRITES_EXPAND_Y +(byte) SPRITES_FIRST_YPOS (byte*) SPRITES_MC (byte*) SPRITES_MC1 (byte*) SPRITES_MC2 @@ -1474,23 +1492,27 @@ VARIABLE REGISTER WEIGHTS (byte*) current_piece_gfx (byte) current_xpos (byte) current_ypos +(byte) game_over (byte) irq_cnt -(byte) irq_cnt#0 0.19047619047619047 -(byte) irq_cnt#1 4.0 -(byte) irq_cnt#14 20.0 +(byte) irq_cnt#0 0.17391304347826086 +(byte) irq_cnt#1 3.0 +(byte) irq_cnt#2 20.0 (byte) irq_raster_next -(byte) irq_raster_next#0 0.17391304347826086 +(byte) irq_raster_next#0 0.3076923076923077 (byte) irq_raster_next#1 1.0 -(byte) irq_raster_next#13 6.0 (byte) irq_raster_next#2 1.3333333333333333 +(byte) irq_raster_next#3 1.3333333333333333 +(byte) irq_raster_next#4 8.0 (byte) irq_sprite_ptr -(byte) irq_sprite_ptr#0 0.24 +(byte) irq_sprite_ptr#0 0.25806451612903225 (byte) irq_sprite_ptr#1 20.0 (byte) irq_sprite_ptr#2 20.0 +(byte) irq_sprite_ptr#3 20.0 (byte) irq_sprite_ypos -(byte) irq_sprite_ypos#0 0.7083333333333334 +(byte) irq_sprite_ypos#0 0.27586206896551724 (byte) irq_sprite_ypos#1 20.0 (byte) irq_sprite_ypos#2 20.0 +(byte) irq_sprite_ypos#3 20.0 (byte) level (byte) level_bcd (word) lines_bcd @@ -1519,7 +1541,7 @@ VARIABLE REGISTER WEIGHTS (byte) render_screen_render (byte) render_screen_show (byte) render_screen_showing -(byte) render_screen_showing#0 0.5 +(byte) render_screen_showing#0 0.4 (dword) score_bcd (void()) sprites_init() (byte) sprites_init::s @@ -1531,17 +1553,15 @@ VARIABLE REGISTER WEIGHTS (byte) sprites_init::xpos#1 7.333333333333333 (byte) sprites_init::xpos#2 8.25 interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -(byte~) sprites_irq::$4 4.0 +(byte/signed word/word/dword/signed dword~) sprites_irq::$0 4.0 (byte) sprites_irq::ptr (byte) sprites_irq::ptr#0 2.5 (byte) sprites_irq::ptr#1 2.6666666666666665 (byte) sprites_irq::ptr#2 4.0 (byte) sprites_irq::ptr#3 2.6666666666666665 (byte) sprites_irq::ptr#4 4.0 -(byte) sprites_irq::raster_next -(byte) sprites_irq::raster_next#0 2.6666666666666665 -(byte) sprites_irq::raster_next#1 4.0 -(byte) sprites_irq::raster_next#2 6.0 +(byte) sprites_irq::raster_sprite_gfx_modify +(byte) sprites_irq::raster_sprite_gfx_modify#0 6.5 (word~) sprites_irq::toSpritePtr2_$0 (word~) sprites_irq::toSpritePtr2_$1 (byte~) sprites_irq::toSpritePtr2_$2 @@ -1559,8 +1579,7 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() Initial phi equivalence classes [ sprites_init::s#2 sprites_init::s#1 ] [ sprites_init::xpos#2 sprites_init::xpos#1 ] -[ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] -[ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +[ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] Added variable render_screen_showing#0 to zero page equivalence class [ render_screen_showing#0 ] Added variable irq_raster_next#0 to zero page equivalence class [ irq_raster_next#0 ] Added variable irq_sprite_ypos#0 to zero page equivalence class [ irq_sprite_ypos#0 ] @@ -1568,14 +1587,17 @@ Added variable irq_sprite_ptr#0 to zero page equivalence class [ irq_sprite_ptr# Added variable irq_cnt#0 to zero page equivalence class [ irq_cnt#0 ] Added variable sprites_init::s2#0 to zero page equivalence class [ sprites_init::s2#0 ] Added variable sprites_irq::ypos#0 to zero page equivalence class [ sprites_irq::ypos#0 ] +Added variable sprites_irq::$0 to zero page equivalence class [ sprites_irq::$0 ] +Added variable sprites_irq::raster_sprite_gfx_modify#0 to zero page equivalence class [ sprites_irq::raster_sprite_gfx_modify#0 ] Added variable sprites_irq::ptr#0 to zero page equivalence class [ sprites_irq::ptr#0 ] Added variable sprites_irq::ptr#3 to zero page equivalence class [ sprites_irq::ptr#3 ] Added variable sprites_irq::ptr#4 to zero page equivalence class [ sprites_irq::ptr#4 ] Added variable irq_cnt#1 to zero page equivalence class [ irq_cnt#1 ] +Added variable irq_sprite_ypos#3 to zero page equivalence class [ irq_sprite_ypos#3 ] +Added variable irq_sprite_ptr#3 to zero page equivalence class [ irq_sprite_ptr#3 ] +Added variable irq_cnt#2 to zero page equivalence class [ irq_cnt#2 ] Added variable irq_sprite_ypos#2 to zero page equivalence class [ irq_sprite_ypos#2 ] Added variable irq_sprite_ptr#2 to zero page equivalence class [ irq_sprite_ptr#2 ] -Added variable sprites_irq::$4 to zero page equivalence class [ sprites_irq::$4 ] -Added variable irq_cnt#14 to zero page equivalence class [ irq_cnt#14 ] Added variable irq_sprite_ypos#1 to zero page equivalence class [ irq_sprite_ypos#1 ] Added variable irq_sprite_ptr#1 to zero page equivalence class [ irq_sprite_ptr#1 ] Added variable sprites_irq::ptr#1 to zero page equivalence class [ sprites_irq::ptr#1 ] @@ -1583,8 +1605,7 @@ Added variable sprites_irq::ptr#2 to zero page equivalence class [ sprites_irq:: Complete equivalence classes [ sprites_init::s#2 sprites_init::s#1 ] [ sprites_init::xpos#2 sprites_init::xpos#1 ] -[ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] -[ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +[ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] [ render_screen_showing#0 ] [ irq_raster_next#0 ] [ irq_sprite_ypos#0 ] @@ -1592,41 +1613,46 @@ Complete equivalence classes [ irq_cnt#0 ] [ sprites_init::s2#0 ] [ sprites_irq::ypos#0 ] +[ sprites_irq::$0 ] +[ sprites_irq::raster_sprite_gfx_modify#0 ] [ sprites_irq::ptr#0 ] [ sprites_irq::ptr#3 ] [ sprites_irq::ptr#4 ] [ irq_cnt#1 ] +[ irq_sprite_ypos#3 ] +[ irq_sprite_ptr#3 ] +[ irq_cnt#2 ] [ irq_sprite_ypos#2 ] [ irq_sprite_ptr#2 ] -[ sprites_irq::$4 ] -[ irq_cnt#14 ] [ irq_sprite_ypos#1 ] [ irq_sprite_ptr#1 ] [ sprites_irq::ptr#1 ] [ sprites_irq::ptr#2 ] Allocated zp ZP_BYTE:2 [ sprites_init::s#2 sprites_init::s#1 ] Allocated zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Allocated zp ZP_BYTE:4 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] -Allocated zp ZP_BYTE:5 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] -Allocated zp ZP_BYTE:6 [ render_screen_showing#0 ] -Allocated zp ZP_BYTE:7 [ irq_raster_next#0 ] -Allocated zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] -Allocated zp ZP_BYTE:9 [ irq_sprite_ptr#0 ] -Allocated zp ZP_BYTE:10 [ irq_cnt#0 ] -Allocated zp ZP_BYTE:11 [ sprites_init::s2#0 ] -Allocated zp ZP_BYTE:12 [ sprites_irq::ypos#0 ] -Allocated zp ZP_BYTE:13 [ sprites_irq::ptr#0 ] -Allocated zp ZP_BYTE:14 [ sprites_irq::ptr#3 ] -Allocated zp ZP_BYTE:15 [ sprites_irq::ptr#4 ] -Allocated zp ZP_BYTE:16 [ irq_cnt#1 ] -Allocated zp ZP_BYTE:17 [ irq_sprite_ypos#2 ] -Allocated zp ZP_BYTE:18 [ irq_sprite_ptr#2 ] -Allocated zp ZP_BYTE:19 [ sprites_irq::$4 ] -Allocated zp ZP_BYTE:20 [ irq_cnt#14 ] -Allocated zp ZP_BYTE:21 [ irq_sprite_ypos#1 ] -Allocated zp ZP_BYTE:22 [ irq_sprite_ptr#1 ] -Allocated zp ZP_BYTE:23 [ sprites_irq::ptr#1 ] -Allocated zp ZP_BYTE:24 [ sprites_irq::ptr#2 ] +Allocated zp ZP_BYTE:4 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] +Allocated zp ZP_BYTE:5 [ render_screen_showing#0 ] +Allocated zp ZP_BYTE:6 [ irq_raster_next#0 ] +Allocated zp ZP_BYTE:7 [ irq_sprite_ypos#0 ] +Allocated zp ZP_BYTE:8 [ irq_sprite_ptr#0 ] +Allocated zp ZP_BYTE:9 [ irq_cnt#0 ] +Allocated zp ZP_BYTE:10 [ sprites_init::s2#0 ] +Allocated zp ZP_BYTE:11 [ sprites_irq::ypos#0 ] +Allocated zp ZP_BYTE:12 [ sprites_irq::$0 ] +Allocated zp ZP_BYTE:13 [ sprites_irq::raster_sprite_gfx_modify#0 ] +Allocated zp ZP_BYTE:14 [ sprites_irq::ptr#0 ] +Allocated zp ZP_BYTE:15 [ sprites_irq::ptr#3 ] +Allocated zp ZP_BYTE:16 [ sprites_irq::ptr#4 ] +Allocated zp ZP_BYTE:17 [ irq_cnt#1 ] +Allocated zp ZP_BYTE:18 [ irq_sprite_ypos#3 ] +Allocated zp ZP_BYTE:19 [ irq_sprite_ptr#3 ] +Allocated zp ZP_BYTE:20 [ irq_cnt#2 ] +Allocated zp ZP_BYTE:21 [ irq_sprite_ypos#2 ] +Allocated zp ZP_BYTE:22 [ irq_sprite_ptr#2 ] +Allocated zp ZP_BYTE:23 [ irq_sprite_ypos#1 ] +Allocated zp ZP_BYTE:24 [ irq_sprite_ptr#1 ] +Allocated zp ZP_BYTE:25 [ sprites_irq::ptr#1 ] +Allocated zp ZP_BYTE:26 [ sprites_irq::ptr#2 ] INITIAL ASM //SEG0 Basic Upstart @@ -1664,24 +1690,28 @@ INITIAL ASM .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a - .const IRQ_RASTER_FIRST = $31 + .const SPRITES_FIRST_YPOS = $31 .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS .label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS + .const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13 .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 - .label render_screen_showing = 6 - .label irq_raster_next = 7 - .label irq_sprite_ypos = 8 - .label irq_sprite_ptr = 9 - .label irq_cnt = $a - .label irq_cnt_1 = $10 + .label render_screen_showing = 5 + .label irq_raster_next = 6 + .label irq_sprite_ypos = 7 + .label irq_sprite_ptr = 8 + .label irq_cnt = 9 + .label irq_cnt_1 = $11 .label irq_raster_next_1 = 4 - .label irq_sprite_ypos_1 = $15 - .label irq_sprite_ptr_1 = $16 + .label irq_sprite_ypos_1 = $17 + .label irq_sprite_ptr_1 = $18 + .label irq_cnt_2 = $14 .label irq_raster_next_2 = 4 - .label irq_sprite_ypos_2 = $11 - .label irq_sprite_ptr_2 = $12 - .label irq_raster_next_13 = 4 - .label irq_cnt_14 = $14 + .label irq_sprite_ypos_2 = $15 + .label irq_sprite_ptr_2 = $16 + .label irq_raster_next_3 = 4 + .label irq_sprite_ypos_3 = $12 + .label irq_sprite_ptr_3 = $13 + .label irq_raster_next_4 = 4 //SEG2 @begin bbegin: jmp b4 @@ -1690,15 +1720,15 @@ b4: //SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta render_screen_showing -//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} +//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} jmp b5 //SEG6 @5 b5: //SEG7 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG8 [4] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 - lda #$32 +//SEG8 [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 + lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos //SEG9 [5] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] toSpritePtr1_from_b5: @@ -1708,8 +1738,8 @@ toSpritePtr1: jmp b9 //SEG11 @9 b9: -//SEG12 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 - lda #toSpritePtr1_return +//SEG12 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 + lda #toSpritePtr1_return+3 sta irq_sprite_ptr //SEG13 [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 @@ -1819,7 +1849,7 @@ sprites_irq_init: { } //SEG51 sprites_init sprites_init: { - .label s2 = $b + .label s2 = $a .label xpos = 3 .label s = 2 //SEG52 [33] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 @@ -1882,14 +1912,14 @@ sprites_init: { //SEG71 sprites_irq sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 - .label _4 = $13 - .label ypos = $c - .label ptr = $d - .label ptr_1 = $17 - .label ptr_2 = $18 - .label ptr_3 = $e - .label ptr_4 = $f - .label raster_next = 5 + .label _0 = $c + .label ypos = $b + .label raster_sprite_gfx_modify = $d + .label ptr = $e + .label ptr_1 = $19 + .label ptr_2 = $1a + .label ptr_3 = $f + .label ptr_4 = $10 //SEG72 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 @@ -1911,115 +1941,107 @@ sprites_irq: { //SEG78 [50] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+6 + //SEG79 [51] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + ldy irq_raster_next + iny + sty _0 + //SEG80 [52] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuz2 + lda _0 + sta raster_sprite_gfx_modify jmp b1 - //SEG79 sprites_irq::@1 + //SEG81 sprites_irq::@1 b1: - //SEG80 [51] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG82 [53] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER - cmp irq_sprite_ypos + cmp raster_sprite_gfx_modify bcc b1 - jmp b7 - //SEG81 sprites_irq::@7 - b7: - //SEG82 [52] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 + jmp b8 + //SEG83 sprites_irq::@8 + b8: + //SEG84 [54] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 lda irq_sprite_ptr sta ptr - //SEG83 [53] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + //SEG85 [55] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b2 - jmp b8 - //SEG84 sprites_irq::@8 - b8: - //SEG85 [54] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + jmp b9 + //SEG86 sprites_irq::@9 + b9: + //SEG87 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_2 - //SEG86 [55] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG88 [57] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_3 - //SEG87 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + //SEG89 [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG88 [57] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + //SEG90 [59] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG89 [58] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 + //SEG91 [60] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 ldy ptr_3 iny sty ptr_4 - //SEG90 [59] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 + //SEG92 [61] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 lda ptr_4 sta PLAYFIELD_SPRITE_PTRS_2+3 jmp b3 - //SEG91 sprites_irq::@3 + //SEG93 sprites_irq::@3 b3: - //SEG92 [60] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 + //SEG94 [62] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 ldy irq_cnt iny sty irq_cnt_1 - //SEG93 [61] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG95 [63] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + lda irq_cnt_1 + cmp #9 + beq b4 + jmp b11 + //SEG96 sprites_irq::@11 + b11: + //SEG97 [64] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt_1 cmp #$a - beq b4 - jmp b10 - //SEG94 sprites_irq::@10 - b10: - //SEG95 [62] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 - lda #$15 + beq b5 + jmp b12 + //SEG98 sprites_irq::@12 + b12: + //SEG99 [65] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz2_plus_vbuc1 + lda #$14 clc adc irq_raster_next - sta irq_raster_next_2 - //SEG96 [63] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + sta irq_raster_next_3 + //SEG100 [66] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 lda #$15 clc adc irq_sprite_ypos - sta irq_sprite_ypos_2 - //SEG97 [64] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + sta irq_sprite_ypos_3 + //SEG101 [67] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 lda #3 clc adc irq_sprite_ptr - sta irq_sprite_ptr_2 - //SEG98 [65] phi from sprites_irq::@10 sprites_irq::@13 to sprites_irq::@5 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5] - b5_from_b10: - b5_from_b13: - //SEG99 [65] phi (byte) irq_raster_next#13 = (byte) irq_raster_next#2 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5#0] -- register_copy - jmp b5 - //SEG100 sprites_irq::@5 - b5: - //SEG101 [66] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 -- vbuz1=vbuz2 - lda irq_raster_next_13 - sta raster_next - //SEG102 [67] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 - lda #7 - and raster_next - sta _4 - //SEG103 [68] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 -- vbuz1_neq_vbuc1_then_la1 - lda _4 - cmp #3 - bne b6_from_b5 - jmp b12 - //SEG104 sprites_irq::@12 - b12: - //SEG105 [69] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_minus_1 - dec raster_next - //SEG106 [70] phi from sprites_irq::@12 sprites_irq::@5 to sprites_irq::@6 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6] - b6_from_b12: - b6_from_b5: - //SEG107 [70] phi (byte) sprites_irq::raster_next#2 = (byte) sprites_irq::raster_next#1 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6#0] -- register_copy - jmp b6 - //SEG108 sprites_irq::@6 - b6: - //SEG109 [71] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 -- _deref_pbuc1=vbuz1 - lda raster_next + sta irq_sprite_ptr_3 + //SEG102 [68] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] + b7_from_b12: + b7_from_b15: + b7_from_b5: + //SEG103 [68] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy + jmp b7 + //SEG104 sprites_irq::@7 + b7: + //SEG105 [69] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + lda irq_raster_next_4 sta RASTER - //SEG110 [72] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG106 [70] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG111 sprites_irq::@return + //SEG107 sprites_irq::@return breturn: - //SEG112 [73] return - exit interrupt(HARDWARE_CLOBBER) + //SEG108 [71] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: @@ -2027,60 +2049,81 @@ sprites_irq: { regy: ldy #00 rti - //SEG113 sprites_irq::@4 - b4: - //SEG114 [74] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG109 sprites_irq::@5 + b5: + //SEG110 [72] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 - sta irq_cnt_14 - //SEG115 [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + sta irq_cnt_2 + //SEG111 [73] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST + sta irq_raster_next_2 + //SEG112 [74] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + lda #$15 + clc + adc irq_sprite_ypos + sta irq_sprite_ypos_2 + //SEG113 [75] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + lda #3 + clc + adc irq_sprite_ptr + sta irq_sprite_ptr_2 + jmp b7_from_b5 + //SEG114 sprites_irq::@4 + b4: + //SEG115 [76] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + lda #$15 + clc + adc irq_raster_next sta irq_raster_next_1 - //SEG116 [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 - lda #$32 + //SEG116 [77] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos_1 - //SEG117 [77] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + //SEG117 [78] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] toSpritePtr2_from_b4: jmp toSpritePtr2 //SEG118 sprites_irq::toSpritePtr2 toSpritePtr2: - jmp b13 - //SEG119 sprites_irq::@13 - b13: - //SEG120 [78] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + jmp b15 + //SEG119 sprites_irq::@15 + b15: + //SEG120 [79] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr_1 - jmp b5_from_b13 + jmp b7_from_b15 //SEG121 sprites_irq::@2 b2: - //SEG122 [79] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG122 [80] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_1 - //SEG123 [80] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG123 [81] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_1 - //SEG124 [81] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG124 [82] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG125 [82] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG125 [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG126 [83] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 + //SEG126 [84] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 ldy ptr_1 iny sty ptr_2 - //SEG127 [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 + //SEG127 [85] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 lda ptr_2 sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 } .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 @@ -2091,8 +2134,8 @@ sprites_irq: { REGISTER UPLIFT POTENTIAL REGISTERS Statement [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a Statement [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a -Statement [4] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a -Statement [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a +Statement [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 [ ] ( ) always clobbers reg byte a +Statement [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( ) always clobbers reg byte a Statement [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a Statement [12] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:9 [ ] ) always clobbers reg byte a Statement [14] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:9 [ ] ) always clobbers reg byte a @@ -2116,26 +2159,29 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ sp Statement [39] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a Statement [40] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a Statement [41] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:9::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [51] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a -Statement [53] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ sprites_irq::ptr#0 ] -Statement [60] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte y -Statement [61] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [62] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [63] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [64] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a -Statement [67] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ sprites_irq::raster_next#0 sprites_irq::$4 ] ( [ sprites_irq::raster_next#0 sprites_irq::$4 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] -Statement [72] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [73] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [74] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [78] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [53] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a +Statement [55] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ sprites_irq::ptr#0 ] +Statement [62] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte y +Statement [63] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a +Statement [64] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [65] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a +Statement [66] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a +Statement [67] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a +Statement [69] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a +Statement [70] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [71] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [72] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [73] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [74] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [75] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a +Statement [76] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [77] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [79] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a Statement [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a Statement [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a -Statement [4] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a -Statement [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a +Statement [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 [ ] ( ) always clobbers reg byte a +Statement [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( ) always clobbers reg byte a Statement [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a Statement [12] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:9 [ ] ) always clobbers reg byte a Statement [14] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:9 [ ] ) always clobbers reg byte a @@ -2157,108 +2203,121 @@ Statement [38] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/s Statement [39] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a Statement [40] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:9::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a Statement [41] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:9::sprites_init:17 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [51] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a -Statement [53] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a -Statement [60] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte y -Statement [61] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [62] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [63] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [64] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a -Statement [67] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ sprites_irq::raster_next#0 sprites_irq::$4 ] ( [ sprites_irq::raster_next#0 sprites_irq::$4 ] ) always clobbers reg byte a -Statement [72] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [73] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [74] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [78] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [53] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a +Statement [55] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Statement [62] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte y +Statement [63] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a +Statement [64] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [65] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a +Statement [66] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a +Statement [67] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a +Statement [69] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a +Statement [70] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [71] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [72] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [73] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [74] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [75] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a +Statement [76] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [77] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [79] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ sprites_init::s#2 sprites_init::s#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:4 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] : zp ZP_BYTE:4 , -Potential registers zp ZP_BYTE:5 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:6 [ render_screen_showing#0 ] : zp ZP_BYTE:6 , -Potential registers zp ZP_BYTE:7 [ irq_raster_next#0 ] : zp ZP_BYTE:7 , -Potential registers zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] : zp ZP_BYTE:8 , -Potential registers zp ZP_BYTE:9 [ irq_sprite_ptr#0 ] : zp ZP_BYTE:9 , -Potential registers zp ZP_BYTE:10 [ irq_cnt#0 ] : zp ZP_BYTE:10 , -Potential registers zp ZP_BYTE:11 [ sprites_init::s2#0 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:12 [ sprites_irq::ypos#0 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:13 [ sprites_irq::ptr#0 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:14 [ sprites_irq::ptr#3 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:15 [ sprites_irq::ptr#4 ] : zp ZP_BYTE:15 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:16 [ irq_cnt#1 ] : zp ZP_BYTE:16 , -Potential registers zp ZP_BYTE:17 [ irq_sprite_ypos#2 ] : zp ZP_BYTE:17 , -Potential registers zp ZP_BYTE:18 [ irq_sprite_ptr#2 ] : zp ZP_BYTE:18 , -Potential registers zp ZP_BYTE:19 [ sprites_irq::$4 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:20 [ irq_cnt#14 ] : zp ZP_BYTE:20 , -Potential registers zp ZP_BYTE:21 [ irq_sprite_ypos#1 ] : zp ZP_BYTE:21 , -Potential registers zp ZP_BYTE:22 [ irq_sprite_ptr#1 ] : zp ZP_BYTE:22 , -Potential registers zp ZP_BYTE:23 [ sprites_irq::ptr#1 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:24 [ sprites_irq::ptr#2 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:4 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] : zp ZP_BYTE:4 , +Potential registers zp ZP_BYTE:5 [ render_screen_showing#0 ] : zp ZP_BYTE:5 , +Potential registers zp ZP_BYTE:6 [ irq_raster_next#0 ] : zp ZP_BYTE:6 , +Potential registers zp ZP_BYTE:7 [ irq_sprite_ypos#0 ] : zp ZP_BYTE:7 , +Potential registers zp ZP_BYTE:8 [ irq_sprite_ptr#0 ] : zp ZP_BYTE:8 , +Potential registers zp ZP_BYTE:9 [ irq_cnt#0 ] : zp ZP_BYTE:9 , +Potential registers zp ZP_BYTE:10 [ sprites_init::s2#0 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:11 [ sprites_irq::ypos#0 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:12 [ sprites_irq::$0 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:13 [ sprites_irq::raster_sprite_gfx_modify#0 ] : zp ZP_BYTE:13 , +Potential registers zp ZP_BYTE:14 [ sprites_irq::ptr#0 ] : zp ZP_BYTE:14 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:15 [ sprites_irq::ptr#3 ] : zp ZP_BYTE:15 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:16 [ sprites_irq::ptr#4 ] : zp ZP_BYTE:16 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:17 [ irq_cnt#1 ] : zp ZP_BYTE:17 , +Potential registers zp ZP_BYTE:18 [ irq_sprite_ypos#3 ] : zp ZP_BYTE:18 , +Potential registers zp ZP_BYTE:19 [ irq_sprite_ptr#3 ] : zp ZP_BYTE:19 , +Potential registers zp ZP_BYTE:20 [ irq_cnt#2 ] : zp ZP_BYTE:20 , +Potential registers zp ZP_BYTE:21 [ irq_sprite_ypos#2 ] : zp ZP_BYTE:21 , +Potential registers zp ZP_BYTE:22 [ irq_sprite_ptr#2 ] : zp ZP_BYTE:22 , +Potential registers zp ZP_BYTE:23 [ irq_sprite_ypos#1 ] : zp ZP_BYTE:23 , +Potential registers zp ZP_BYTE:24 [ irq_sprite_ptr#1 ] : zp ZP_BYTE:24 , +Potential registers zp ZP_BYTE:25 [ sprites_irq::ptr#1 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:26 [ sprites_irq::ptr#2 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 20: zp ZP_BYTE:17 [ irq_sprite_ypos#2 ] 20: zp ZP_BYTE:18 [ irq_sprite_ptr#2 ] 20: zp ZP_BYTE:20 [ irq_cnt#14 ] 20: zp ZP_BYTE:21 [ irq_sprite_ypos#1 ] 20: zp ZP_BYTE:22 [ irq_sprite_ptr#1 ] 8.33: zp ZP_BYTE:4 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] 4: zp ZP_BYTE:16 [ irq_cnt#1 ] 0.71: zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] 0.5: zp ZP_BYTE:6 [ render_screen_showing#0 ] 0.24: zp ZP_BYTE:9 [ irq_sprite_ptr#0 ] 0.19: zp ZP_BYTE:10 [ irq_cnt#0 ] 0.17: zp ZP_BYTE:7 [ irq_raster_next#0 ] -Uplift Scope [sprites_init] 25.3: zp ZP_BYTE:2 [ sprites_init::s#2 sprites_init::s#1 ] 22: zp ZP_BYTE:11 [ sprites_init::s2#0 ] 15.58: zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplift Scope [sprites_irq] 12.67: zp ZP_BYTE:5 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] 4: zp ZP_BYTE:15 [ sprites_irq::ptr#4 ] 4: zp ZP_BYTE:19 [ sprites_irq::$4 ] 4: zp ZP_BYTE:24 [ sprites_irq::ptr#2 ] 2.67: zp ZP_BYTE:14 [ sprites_irq::ptr#3 ] 2.67: zp ZP_BYTE:23 [ sprites_irq::ptr#1 ] 2.5: zp ZP_BYTE:12 [ sprites_irq::ypos#0 ] 2.5: zp ZP_BYTE:13 [ sprites_irq::ptr#0 ] +Uplift Scope [] 20: zp ZP_BYTE:18 [ irq_sprite_ypos#3 ] 20: zp ZP_BYTE:19 [ irq_sprite_ptr#3 ] 20: zp ZP_BYTE:20 [ irq_cnt#2 ] 20: zp ZP_BYTE:21 [ irq_sprite_ypos#2 ] 20: zp ZP_BYTE:22 [ irq_sprite_ptr#2 ] 20: zp ZP_BYTE:23 [ irq_sprite_ypos#1 ] 20: zp ZP_BYTE:24 [ irq_sprite_ptr#1 ] 11.67: zp ZP_BYTE:4 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] 3: zp ZP_BYTE:17 [ irq_cnt#1 ] 0.4: zp ZP_BYTE:5 [ render_screen_showing#0 ] 0.31: zp ZP_BYTE:6 [ irq_raster_next#0 ] 0.28: zp ZP_BYTE:7 [ irq_sprite_ypos#0 ] 0.26: zp ZP_BYTE:8 [ irq_sprite_ptr#0 ] 0.17: zp ZP_BYTE:9 [ irq_cnt#0 ] +Uplift Scope [sprites_init] 25.3: zp ZP_BYTE:2 [ sprites_init::s#2 sprites_init::s#1 ] 22: zp ZP_BYTE:10 [ sprites_init::s2#0 ] 15.58: zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplift Scope [sprites_irq] 6.5: zp ZP_BYTE:13 [ sprites_irq::raster_sprite_gfx_modify#0 ] 4: zp ZP_BYTE:12 [ sprites_irq::$0 ] 4: zp ZP_BYTE:16 [ sprites_irq::ptr#4 ] 4: zp ZP_BYTE:26 [ sprites_irq::ptr#2 ] 2.67: zp ZP_BYTE:15 [ sprites_irq::ptr#3 ] 2.67: zp ZP_BYTE:25 [ sprites_irq::ptr#1 ] 2.5: zp ZP_BYTE:11 [ sprites_irq::ypos#0 ] 2.5: zp ZP_BYTE:14 [ sprites_irq::ptr#0 ] Uplift Scope [sprites_irq_init] Uplift Scope [main] -Uplifting [] best 1956 combination zp ZP_BYTE:17 [ irq_sprite_ypos#2 ] zp ZP_BYTE:18 [ irq_sprite_ptr#2 ] zp ZP_BYTE:20 [ irq_cnt#14 ] zp ZP_BYTE:21 [ irq_sprite_ypos#1 ] zp ZP_BYTE:22 [ irq_sprite_ptr#1 ] zp ZP_BYTE:4 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] zp ZP_BYTE:16 [ irq_cnt#1 ] zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] zp ZP_BYTE:6 [ render_screen_showing#0 ] zp ZP_BYTE:9 [ irq_sprite_ptr#0 ] zp ZP_BYTE:10 [ irq_cnt#0 ] zp ZP_BYTE:7 [ irq_raster_next#0 ] -Uplifting [sprites_init] best 1786 combination reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte a [ sprites_init::s2#0 ] zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [sprites_irq] best 1760 combination reg byte x [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] reg byte x [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::$4 ] reg byte a [ sprites_irq::ptr#2 ] zp ZP_BYTE:14 [ sprites_irq::ptr#3 ] zp ZP_BYTE:23 [ sprites_irq::ptr#1 ] zp ZP_BYTE:12 [ sprites_irq::ypos#0 ] zp ZP_BYTE:13 [ sprites_irq::ptr#0 ] -Limited combination testing to 100 combinations of 36864 possible. -Uplifting [sprites_irq_init] best 1760 combination -Uplifting [main] best 1760 combination -Attempting to uplift remaining variables inzp ZP_BYTE:17 [ irq_sprite_ypos#2 ] -Uplifting [] best 1760 combination zp ZP_BYTE:17 [ irq_sprite_ypos#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:18 [ irq_sprite_ptr#2 ] -Uplifting [] best 1760 combination zp ZP_BYTE:18 [ irq_sprite_ptr#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:20 [ irq_cnt#14 ] -Uplifting [] best 1760 combination zp ZP_BYTE:20 [ irq_cnt#14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:21 [ irq_sprite_ypos#1 ] -Uplifting [] best 1760 combination zp ZP_BYTE:21 [ irq_sprite_ypos#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:22 [ irq_sprite_ptr#1 ] -Uplifting [] best 1760 combination zp ZP_BYTE:22 [ irq_sprite_ptr#1 ] +Uplifting [] best 1981 combination zp ZP_BYTE:18 [ irq_sprite_ypos#3 ] zp ZP_BYTE:19 [ irq_sprite_ptr#3 ] zp ZP_BYTE:20 [ irq_cnt#2 ] zp ZP_BYTE:21 [ irq_sprite_ypos#2 ] zp ZP_BYTE:22 [ irq_sprite_ptr#2 ] zp ZP_BYTE:23 [ irq_sprite_ypos#1 ] zp ZP_BYTE:24 [ irq_sprite_ptr#1 ] zp ZP_BYTE:4 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] zp ZP_BYTE:17 [ irq_cnt#1 ] zp ZP_BYTE:5 [ render_screen_showing#0 ] zp ZP_BYTE:6 [ irq_raster_next#0 ] zp ZP_BYTE:7 [ irq_sprite_ypos#0 ] zp ZP_BYTE:8 [ irq_sprite_ptr#0 ] zp ZP_BYTE:9 [ irq_cnt#0 ] +Uplifting [sprites_init] best 1811 combination reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte a [ sprites_init::s2#0 ] zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [sprites_irq] best 1787 combination zp ZP_BYTE:13 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:25 [ sprites_irq::ptr#1 ] zp ZP_BYTE:11 [ sprites_irq::ypos#0 ] zp ZP_BYTE:14 [ sprites_irq::ptr#0 ] +Limited combination testing to 100 combinations of 12288 possible. +Uplifting [sprites_irq_init] best 1787 combination +Uplifting [main] best 1787 combination +Attempting to uplift remaining variables inzp ZP_BYTE:18 [ irq_sprite_ypos#3 ] +Uplifting [] best 1787 combination zp ZP_BYTE:18 [ irq_sprite_ypos#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:19 [ irq_sprite_ptr#3 ] +Uplifting [] best 1787 combination zp ZP_BYTE:19 [ irq_sprite_ptr#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:20 [ irq_cnt#2 ] +Uplifting [] best 1787 combination zp ZP_BYTE:20 [ irq_cnt#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:21 [ irq_sprite_ypos#2 ] +Uplifting [] best 1787 combination zp ZP_BYTE:21 [ irq_sprite_ypos#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:22 [ irq_sprite_ptr#2 ] +Uplifting [] best 1787 combination zp ZP_BYTE:22 [ irq_sprite_ptr#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:23 [ irq_sprite_ypos#1 ] +Uplifting [] best 1787 combination zp ZP_BYTE:23 [ irq_sprite_ypos#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:24 [ irq_sprite_ptr#1 ] +Uplifting [] best 1787 combination zp ZP_BYTE:24 [ irq_sprite_ptr#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [sprites_init] best 1760 combination zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:4 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] -Uplifting [] best 1760 combination zp ZP_BYTE:4 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:16 [ irq_cnt#1 ] -Uplifting [] best 1760 combination zp ZP_BYTE:16 [ irq_cnt#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:14 [ sprites_irq::ptr#3 ] -Uplifting [sprites_irq] best 1748 combination reg byte x [ sprites_irq::ptr#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:23 [ sprites_irq::ptr#1 ] -Uplifting [sprites_irq] best 1738 combination reg byte a [ sprites_irq::ptr#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:12 [ sprites_irq::ypos#0 ] -Uplifting [sprites_irq] best 1723 combination reg byte a [ sprites_irq::ypos#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:13 [ sprites_irq::ptr#0 ] -Uplifting [sprites_irq] best 1710 combination reg byte x [ sprites_irq::ptr#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:8 [ irq_sprite_ypos#0 ] -Uplifting [] best 1710 combination zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:6 [ render_screen_showing#0 ] -Uplifting [] best 1710 combination zp ZP_BYTE:6 [ render_screen_showing#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:9 [ irq_sprite_ptr#0 ] -Uplifting [] best 1710 combination zp ZP_BYTE:9 [ irq_sprite_ptr#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:10 [ irq_cnt#0 ] -Uplifting [] best 1710 combination zp ZP_BYTE:10 [ irq_cnt#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:7 [ irq_raster_next#0 ] -Uplifting [] best 1710 combination zp ZP_BYTE:7 [ irq_raster_next#0 ] -Coalescing zero page register with common assignment [ zp ZP_BYTE:4 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] ] with [ zp ZP_BYTE:7 [ irq_raster_next#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] ] with [ zp ZP_BYTE:17 [ irq_sprite_ypos#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ irq_sprite_ptr#0 ] ] with [ zp ZP_BYTE:18 [ irq_sprite_ptr#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:10 [ irq_cnt#0 ] ] with [ zp ZP_BYTE:16 [ irq_cnt#1 ] ] - score: 1 -Coalescing zero page register [ zp ZP_BYTE:8 [ irq_sprite_ypos#0 irq_sprite_ypos#2 ] ] with [ zp ZP_BYTE:21 [ irq_sprite_ypos#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:9 [ irq_sprite_ptr#0 irq_sprite_ptr#2 ] ] with [ zp ZP_BYTE:22 [ irq_sprite_ptr#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ irq_cnt#0 irq_cnt#1 ] ] with [ zp ZP_BYTE:20 [ irq_cnt#14 ] ] +Uplifting [sprites_init] best 1787 combination zp ZP_BYTE:3 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:4 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] +Uplifting [] best 1787 combination zp ZP_BYTE:4 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:13 [ sprites_irq::raster_sprite_gfx_modify#0 ] +Uplifting [sprites_irq] best 1787 combination zp ZP_BYTE:13 [ sprites_irq::raster_sprite_gfx_modify#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:17 [ irq_cnt#1 ] +Uplifting [] best 1787 combination zp ZP_BYTE:17 [ irq_cnt#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:25 [ sprites_irq::ptr#1 ] +Uplifting [sprites_irq] best 1777 combination reg byte a [ sprites_irq::ptr#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:11 [ sprites_irq::ypos#0 ] +Uplifting [sprites_irq] best 1762 combination reg byte a [ sprites_irq::ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:14 [ sprites_irq::ptr#0 ] +Uplifting [sprites_irq] best 1751 combination reg byte x [ sprites_irq::ptr#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:5 [ render_screen_showing#0 ] +Uplifting [] best 1751 combination zp ZP_BYTE:5 [ render_screen_showing#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:6 [ irq_raster_next#0 ] +Uplifting [] best 1751 combination zp ZP_BYTE:6 [ irq_raster_next#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:7 [ irq_sprite_ypos#0 ] +Uplifting [] best 1751 combination zp ZP_BYTE:7 [ irq_sprite_ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:8 [ irq_sprite_ptr#0 ] +Uplifting [] best 1751 combination zp ZP_BYTE:8 [ irq_sprite_ptr#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:9 [ irq_cnt#0 ] +Uplifting [] best 1751 combination zp ZP_BYTE:9 [ irq_cnt#0 ] +Coalescing zero page register with common assignment [ zp ZP_BYTE:4 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] ] with [ zp ZP_BYTE:6 [ irq_raster_next#0 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_BYTE:7 [ irq_sprite_ypos#0 ] ] with [ zp ZP_BYTE:18 [ irq_sprite_ypos#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:7 [ irq_sprite_ypos#0 irq_sprite_ypos#3 ] ] with [ zp ZP_BYTE:21 [ irq_sprite_ypos#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:8 [ irq_sprite_ptr#0 ] ] with [ zp ZP_BYTE:19 [ irq_sprite_ptr#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:8 [ irq_sprite_ptr#0 irq_sprite_ptr#3 ] ] with [ zp ZP_BYTE:22 [ irq_sprite_ptr#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ irq_cnt#0 ] ] with [ zp ZP_BYTE:17 [ irq_cnt#1 ] ] - score: 1 +Coalescing zero page register [ zp ZP_BYTE:7 [ irq_sprite_ypos#0 irq_sprite_ypos#3 irq_sprite_ypos#2 ] ] with [ zp ZP_BYTE:23 [ irq_sprite_ypos#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ irq_sprite_ptr#0 irq_sprite_ptr#3 irq_sprite_ptr#2 ] ] with [ zp ZP_BYTE:24 [ irq_sprite_ptr#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:9 [ irq_cnt#0 irq_cnt#1 ] ] with [ zp ZP_BYTE:20 [ irq_cnt#2 ] ] Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Allocated (was zp ZP_BYTE:4) zp ZP_BYTE:3 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] -Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:4 [ render_screen_showing#0 ] -Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:5 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] -Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:6 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] -Allocated (was zp ZP_BYTE:10) zp ZP_BYTE:7 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ] +Allocated (was zp ZP_BYTE:4) zp ZP_BYTE:3 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 ] +Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ render_screen_showing#0 ] +Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:5 [ irq_sprite_ypos#0 irq_sprite_ypos#3 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:6 [ irq_sprite_ptr#0 irq_sprite_ptr#3 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:7 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] +Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:8 [ sprites_irq::raster_sprite_gfx_modify#0 ] Interrupt procedure sprites_irq clobbers AXCNZV Removing interrupt register storage sty regy+1 in SEG72 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regy: in SEG112 [73] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldy #00 in SEG112 [73] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regy: in SEG108 [71] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldy #00 in SEG108 [71] return - exit interrupt(HARDWARE_CLOBBER) ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -2296,9 +2355,10 @@ ASSEMBLER BEFORE OPTIMIZATION .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a - .const IRQ_RASTER_FIRST = $31 + .const SPRITES_FIRST_YPOS = $31 .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS .label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS + .const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13 .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 .label render_screen_showing = 4 .label irq_raster_next = 3 @@ -2313,15 +2373,15 @@ b4: //SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta render_screen_showing -//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} +//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} jmp b5 //SEG6 @5 b5: //SEG7 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG8 [4] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 - lda #$32 +//SEG8 [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 + lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos //SEG9 [5] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] toSpritePtr1_from_b5: @@ -2331,8 +2391,8 @@ toSpritePtr1: jmp b9 //SEG11 @9 b9: -//SEG12 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 - lda #toSpritePtr1_return +//SEG12 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 + lda #toSpritePtr1_return+3 sta irq_sprite_ptr //SEG13 [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 @@ -2499,6 +2559,7 @@ sprites_init: { //SEG71 sprites_irq sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 + .label raster_sprite_gfx_modify = 8 //SEG72 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 @@ -2514,154 +2575,172 @@ sprites_irq: { sta SPRITES_YPOS+4 //SEG78 [50] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 + //SEG79 [51] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + ldx irq_raster_next + inx + //SEG80 [52] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx + stx raster_sprite_gfx_modify jmp b1 - //SEG79 sprites_irq::@1 + //SEG81 sprites_irq::@1 b1: - //SEG80 [51] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG82 [53] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER - cmp irq_sprite_ypos + cmp raster_sprite_gfx_modify bcc b1 - jmp b7 - //SEG81 sprites_irq::@7 - b7: - //SEG82 [52] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + jmp b8 + //SEG83 sprites_irq::@8 + b8: + //SEG84 [54] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 ldx irq_sprite_ptr - //SEG83 [53] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + //SEG85 [55] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b2 - jmp b8 - //SEG84 sprites_irq::@8 - b8: - //SEG85 [54] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + jmp b9 + //SEG86 sprites_irq::@9 + b9: + //SEG87 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2 - //SEG86 [55] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx - inx - //SEG87 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_2+1 - //SEG88 [57] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_2+2 - //SEG89 [58] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuxx=_inc_vbuxx - inx - //SEG90 [59] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_2+3 + //SEG88 [57] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + txa + clc + adc #1 + //SEG89 [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_2+1 + //SEG90 [59] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_2+2 + //SEG91 [60] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa + clc + adc #1 + //SEG92 [61] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_2+3 jmp b3 - //SEG91 sprites_irq::@3 + //SEG93 sprites_irq::@3 b3: - //SEG92 [60] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG94 [62] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG93 [61] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG95 [63] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + lda irq_cnt + cmp #9 + beq b4 + jmp b11 + //SEG96 sprites_irq::@11 + b11: + //SEG97 [64] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt cmp #$a - beq b4 - jmp b10 - //SEG94 sprites_irq::@10 - b10: - //SEG95 [62] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 - lda #$15 + beq b5 + jmp b12 + //SEG98 sprites_irq::@12 + b12: + //SEG99 [65] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz1_plus_vbuc1 + lda #$14 clc adc irq_raster_next sta irq_raster_next - //SEG96 [63] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG100 [66] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 lda #$15 clc adc irq_sprite_ypos sta irq_sprite_ypos - //SEG97 [64] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG101 [67] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr - //SEG98 [65] phi from sprites_irq::@10 sprites_irq::@13 to sprites_irq::@5 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5] - b5_from_b10: - b5_from_b13: - //SEG99 [65] phi (byte) irq_raster_next#13 = (byte) irq_raster_next#2 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5#0] -- register_copy - jmp b5 - //SEG100 sprites_irq::@5 - b5: - //SEG101 [66] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 -- vbuxx=vbuz1 - ldx irq_raster_next - //SEG102 [67] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 - txa - and #7 - //SEG103 [68] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 -- vbuaa_neq_vbuc1_then_la1 - cmp #3 - bne b6_from_b5 - jmp b12 - //SEG104 sprites_irq::@12 - b12: - //SEG105 [69] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 - dex - //SEG106 [70] phi from sprites_irq::@12 sprites_irq::@5 to sprites_irq::@6 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6] - b6_from_b12: - b6_from_b5: - //SEG107 [70] phi (byte) sprites_irq::raster_next#2 = (byte) sprites_irq::raster_next#1 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6#0] -- register_copy - jmp b6 - //SEG108 sprites_irq::@6 - b6: - //SEG109 [71] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 -- _deref_pbuc1=vbuxx - stx RASTER - //SEG110 [72] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG102 [68] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] + b7_from_b12: + b7_from_b15: + b7_from_b5: + //SEG103 [68] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy + jmp b7 + //SEG104 sprites_irq::@7 + b7: + //SEG105 [69] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + lda irq_raster_next + sta RASTER + //SEG106 [70] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG111 sprites_irq::@return + //SEG107 sprites_irq::@return breturn: - //SEG112 [73] return - exit interrupt(HARDWARE_CLOBBER) + //SEG108 [71] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG113 sprites_irq::@4 - b4: - //SEG114 [74] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG109 sprites_irq::@5 + b5: + //SEG110 [72] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG115 [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG111 [73] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG116 [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 - lda #$32 + //SEG112 [74] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_sprite_ypos sta irq_sprite_ypos - //SEG117 [77] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + //SEG113 [75] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + lda #3 + clc + adc irq_sprite_ptr + sta irq_sprite_ptr + jmp b7_from_b5 + //SEG114 sprites_irq::@4 + b4: + //SEG115 [76] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_raster_next + sta irq_raster_next + //SEG116 [77] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + lda #SPRITES_FIRST_YPOS + sta irq_sprite_ypos + //SEG117 [78] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] toSpritePtr2_from_b4: jmp toSpritePtr2 //SEG118 sprites_irq::toSpritePtr2 toSpritePtr2: - jmp b13 - //SEG119 sprites_irq::@13 - b13: - //SEG120 [78] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + jmp b15 + //SEG119 sprites_irq::@15 + b15: + //SEG120 [79] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr - jmp b5_from_b13 + jmp b7_from_b15 //SEG121 sprites_irq::@2 b2: - //SEG122 [79] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG122 [80] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1 - //SEG123 [80] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG123 [81] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx txa clc adc #1 - //SEG124 [81] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG124 [82] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG125 [82] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG125 [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG126 [83] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa + //SEG126 [84] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG127 [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + //SEG127 [85] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 } .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 @@ -2687,23 +2766,22 @@ Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp b1 -Removing instruction jmp b7 Removing instruction jmp b8 +Removing instruction jmp b9 Removing instruction jmp b3 -Removing instruction jmp b10 -Removing instruction jmp b5 +Removing instruction jmp b11 Removing instruction jmp b12 -Removing instruction jmp b6 +Removing instruction jmp b7 Removing instruction jmp breturn Removing instruction jmp toSpritePtr2 -Removing instruction jmp b13 +Removing instruction jmp b15 Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda SPRITES_MC Removing instruction lda SPRITES_EXPAND_Y Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1_from_b1 with b1 -Replacing label b6_from_b5 with b6 -Replacing label b5_from_b13 with b5 +Replacing label b7_from_b5 with b7 +Replacing label b7_from_b15 with b7 Removing instruction b4: Removing instruction toSpritePtr1_from_b5: Removing instruction toSpritePtr1: @@ -2716,10 +2794,9 @@ Removing instruction toD0181_from_vicSelectGfxBank1_b1: Removing instruction toD0181: Removing instruction b9_from_b8: Removing instruction b1_from_b1: -Removing instruction b5_from_b10: -Removing instruction b5_from_b13: -Removing instruction b6_from_b12: -Removing instruction b6_from_b5: +Removing instruction b7_from_b12: +Removing instruction b7_from_b15: +Removing instruction b7_from_b5: Removing instruction breturn: Removing instruction toSpritePtr2_from_b4: Removing instruction toSpritePtr2: @@ -2735,14 +2812,16 @@ Removing instruction b9: Removing instruction breturn: Removing instruction b1_from_sprites_init: Removing instruction breturn: -Removing instruction b7: Removing instruction b8: -Removing instruction b10: +Removing instruction b9: +Removing instruction b11: Removing instruction b12: -Removing instruction b13: +Removing instruction b15: Succesful ASM optimization Pass5UnusedLabelElimination Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda irq_cnt +Succesful ASM optimization Pass5UnnecesaryLoadElimination FINAL SYMBOL TABLE (label) @4 @@ -2796,7 +2875,7 @@ FINAL SYMBOL TABLE (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) IRQ_RASTER_FIRST -(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (byte/signed byte/word/signed word/dword/signed dword) 49 +(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 19 (byte*) IRQ_STATUS (const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 (void()**) KERNEL_IRQ @@ -2849,6 +2928,8 @@ FINAL SYMBOL TABLE (const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277 (byte*) SPRITES_EXPAND_Y (const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271 +(byte) SPRITES_FIRST_YPOS +(const byte) SPRITES_FIRST_YPOS#0 SPRITES_FIRST_YPOS = (byte/signed byte/word/signed word/dword/signed dword) 49 (byte*) SPRITES_MC (const byte*) SPRITES_MC#0 SPRITES_MC = ((byte*))(word/dword/signed dword) 53276 (byte*) SPRITES_MC1 @@ -2878,23 +2959,27 @@ FINAL SYMBOL TABLE (byte*) current_piece_gfx (byte) current_xpos (byte) current_ypos +(byte) game_over (byte) irq_cnt -(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:7 0.19047619047619047 -(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:7 4.0 -(byte) irq_cnt#14 irq_cnt zp ZP_BYTE:7 20.0 +(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:7 0.17391304347826086 +(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:7 3.0 +(byte) irq_cnt#2 irq_cnt zp ZP_BYTE:7 20.0 (byte) irq_raster_next -(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:3 0.17391304347826086 +(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:3 0.3076923076923077 (byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:3 1.0 -(byte) irq_raster_next#13 irq_raster_next zp ZP_BYTE:3 6.0 (byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:3 1.3333333333333333 +(byte) irq_raster_next#3 irq_raster_next zp ZP_BYTE:3 1.3333333333333333 +(byte) irq_raster_next#4 irq_raster_next zp ZP_BYTE:3 8.0 (byte) irq_sprite_ptr -(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:6 0.24 +(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:6 0.25806451612903225 (byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:6 20.0 (byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:6 20.0 +(byte) irq_sprite_ptr#3 irq_sprite_ptr zp ZP_BYTE:6 20.0 (byte) irq_sprite_ypos -(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:5 0.7083333333333334 +(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:5 0.27586206896551724 (byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:5 20.0 (byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:5 20.0 +(byte) irq_sprite_ypos#3 irq_sprite_ypos zp ZP_BYTE:5 20.0 (byte) level (byte) level_bcd (word) lines_bcd @@ -2932,7 +3017,7 @@ FINAL SYMBOL TABLE (byte) render_screen_render (byte) render_screen_show (byte) render_screen_showing -(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:4 0.5 +(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:4 0.4 (dword) score_bcd (void()) sprites_init() (label) sprites_init::@1 @@ -2946,29 +3031,27 @@ FINAL SYMBOL TABLE (byte) sprites_init::xpos#1 xpos zp ZP_BYTE:2 7.333333333333333 (byte) sprites_init::xpos#2 xpos zp ZP_BYTE:2 8.25 interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -(byte~) sprites_irq::$4 reg byte a 4.0 +(byte/signed word/word/dword/signed dword~) sprites_irq::$0 reg byte x 4.0 (label) sprites_irq::@1 -(label) sprites_irq::@10 +(label) sprites_irq::@11 (label) sprites_irq::@12 -(label) sprites_irq::@13 +(label) sprites_irq::@15 (label) sprites_irq::@2 (label) sprites_irq::@3 (label) sprites_irq::@4 (label) sprites_irq::@5 -(label) sprites_irq::@6 (label) sprites_irq::@7 (label) sprites_irq::@8 +(label) sprites_irq::@9 (label) sprites_irq::@return (byte) sprites_irq::ptr (byte) sprites_irq::ptr#0 reg byte x 2.5 (byte) sprites_irq::ptr#1 reg byte a 2.6666666666666665 (byte) sprites_irq::ptr#2 reg byte a 4.0 -(byte) sprites_irq::ptr#3 reg byte x 2.6666666666666665 -(byte) sprites_irq::ptr#4 reg byte x 4.0 -(byte) sprites_irq::raster_next -(byte) sprites_irq::raster_next#0 reg byte x 2.6666666666666665 -(byte) sprites_irq::raster_next#1 reg byte x 4.0 -(byte) sprites_irq::raster_next#2 reg byte x 6.0 +(byte) sprites_irq::ptr#3 reg byte a 2.6666666666666665 +(byte) sprites_irq::ptr#4 reg byte a 4.0 +(byte) sprites_irq::raster_sprite_gfx_modify +(byte) sprites_irq::raster_sprite_gfx_modify#0 raster_sprite_gfx_modify zp ZP_BYTE:8 6.5 (label) sprites_irq::toSpritePtr2 (word~) sprites_irq::toSpritePtr2_$0 (word~) sprites_irq::toSpritePtr2_$1 @@ -2990,24 +3073,24 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() reg byte x [ sprites_init::s#2 sprites_init::s#1 ] zp ZP_BYTE:2 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -zp ZP_BYTE:3 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] -reg byte x [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +zp ZP_BYTE:3 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 ] zp ZP_BYTE:4 [ render_screen_showing#0 ] -zp ZP_BYTE:5 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] -zp ZP_BYTE:6 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] -zp ZP_BYTE:7 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ] +zp ZP_BYTE:5 [ irq_sprite_ypos#0 irq_sprite_ypos#3 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +zp ZP_BYTE:6 [ irq_sprite_ptr#0 irq_sprite_ptr#3 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +zp ZP_BYTE:7 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] reg byte a [ sprites_init::s2#0 ] reg byte a [ sprites_irq::ypos#0 ] +reg byte x [ sprites_irq::$0 ] +zp ZP_BYTE:8 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::ptr#0 ] -reg byte x [ sprites_irq::ptr#3 ] -reg byte x [ sprites_irq::ptr#4 ] -reg byte a [ sprites_irq::$4 ] +reg byte a [ sprites_irq::ptr#3 ] +reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#1 ] reg byte a [ sprites_irq::ptr#2 ] FINAL ASSEMBLER -Score: 1303 +Score: 1344 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -3044,9 +3127,10 @@ Score: 1303 .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a - .const IRQ_RASTER_FIRST = $31 + .const SPRITES_FIRST_YPOS = $31 .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS .label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS + .const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13 .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 .label render_screen_showing = 4 .label irq_raster_next = 3 @@ -3059,19 +3143,19 @@ bbegin: //SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta render_screen_showing -//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} +//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} //SEG6 @5 //SEG7 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG8 [4] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 - lda #$32 +//SEG8 [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 + lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos //SEG9 [5] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] //SEG10 toSpritePtr1 //SEG11 @9 -//SEG12 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 - lda #toSpritePtr1_return +//SEG12 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 + lda #toSpritePtr1_return+3 sta irq_sprite_ptr //SEG13 [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 @@ -3205,6 +3289,7 @@ sprites_init: { //SEG71 sprites_irq sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 + .label raster_sprite_gfx_modify = 8 //SEG72 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 @@ -3220,131 +3305,150 @@ sprites_irq: { sta SPRITES_YPOS+4 //SEG78 [50] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG79 sprites_irq::@1 + //SEG79 [51] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + ldx irq_raster_next + inx + //SEG80 [52] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx + stx raster_sprite_gfx_modify + //SEG81 sprites_irq::@1 b1: - //SEG80 [51] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG82 [53] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER - cmp irq_sprite_ypos + cmp raster_sprite_gfx_modify bcc b1 - //SEG81 sprites_irq::@7 - //SEG82 [52] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + //SEG83 sprites_irq::@8 + //SEG84 [54] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 ldx irq_sprite_ptr - //SEG83 [53] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + //SEG85 [55] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b2 - //SEG84 sprites_irq::@8 - //SEG85 [54] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG86 sprites_irq::@9 + //SEG87 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2 - //SEG86 [55] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx - inx - //SEG87 [56] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_2+1 - //SEG88 [57] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_2+2 - //SEG89 [58] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuxx=_inc_vbuxx - inx - //SEG90 [59] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_2+3 - //SEG91 sprites_irq::@3 + //SEG88 [57] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + txa + clc + adc #1 + //SEG89 [58] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_2+1 + //SEG90 [59] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_2+2 + //SEG91 [60] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa + clc + adc #1 + //SEG92 [61] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_2+3 + //SEG93 sprites_irq::@3 b3: - //SEG92 [60] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG94 [62] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG93 [61] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG95 [63] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt - cmp #$a + cmp #9 beq b4 - //SEG94 sprites_irq::@10 - //SEG95 [62] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 - lda #$15 + //SEG96 sprites_irq::@11 + //SEG97 [64] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 + cmp #$a + beq b5 + //SEG98 sprites_irq::@12 + //SEG99 [65] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz1_plus_vbuc1 + lda #$14 clc adc irq_raster_next sta irq_raster_next - //SEG96 [63] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG100 [66] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 lda #$15 clc adc irq_sprite_ypos sta irq_sprite_ypos - //SEG97 [64] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG101 [67] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr - //SEG98 [65] phi from sprites_irq::@10 sprites_irq::@13 to sprites_irq::@5 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5] - //SEG99 [65] phi (byte) irq_raster_next#13 = (byte) irq_raster_next#2 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5#0] -- register_copy - //SEG100 sprites_irq::@5 - b5: - //SEG101 [66] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 -- vbuxx=vbuz1 - ldx irq_raster_next - //SEG102 [67] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 - txa - and #7 - //SEG103 [68] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 -- vbuaa_neq_vbuc1_then_la1 - cmp #3 - bne b6 - //SEG104 sprites_irq::@12 - //SEG105 [69] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 - dex - //SEG106 [70] phi from sprites_irq::@12 sprites_irq::@5 to sprites_irq::@6 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6] - //SEG107 [70] phi (byte) sprites_irq::raster_next#2 = (byte) sprites_irq::raster_next#1 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6#0] -- register_copy - //SEG108 sprites_irq::@6 - b6: - //SEG109 [71] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 -- _deref_pbuc1=vbuxx - stx RASTER - //SEG110 [72] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG102 [68] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] + //SEG103 [68] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy + //SEG104 sprites_irq::@7 + b7: + //SEG105 [69] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + lda irq_raster_next + sta RASTER + //SEG106 [70] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG111 sprites_irq::@return - //SEG112 [73] return - exit interrupt(HARDWARE_CLOBBER) + //SEG107 sprites_irq::@return + //SEG108 [71] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG113 sprites_irq::@4 - b4: - //SEG114 [74] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG109 sprites_irq::@5 + b5: + //SEG110 [72] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG115 [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG111 [73] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG116 [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 - lda #$32 + //SEG112 [74] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_sprite_ypos sta irq_sprite_ypos - //SEG117 [77] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + //SEG113 [75] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + lda #3 + clc + adc irq_sprite_ptr + sta irq_sprite_ptr + jmp b7 + //SEG114 sprites_irq::@4 + b4: + //SEG115 [76] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_raster_next + sta irq_raster_next + //SEG116 [77] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + lda #SPRITES_FIRST_YPOS + sta irq_sprite_ypos + //SEG117 [78] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] //SEG118 sprites_irq::toSpritePtr2 - //SEG119 sprites_irq::@13 - //SEG120 [78] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG119 sprites_irq::@15 + //SEG120 [79] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr - jmp b5 + jmp b7 //SEG121 sprites_irq::@2 b2: - //SEG122 [79] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG122 [80] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1 - //SEG123 [80] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG123 [81] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx txa clc adc #1 - //SEG124 [81] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG124 [82] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG125 [82] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG125 [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG126 [83] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa + //SEG126 [84] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG127 [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + //SEG127 [85] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 } .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 diff --git a/src/test/ref/examples/tetris/test-sprites.sym b/src/test/ref/examples/tetris/test-sprites.sym index b8362996f..dcda1ba69 100644 --- a/src/test/ref/examples/tetris/test-sprites.sym +++ b/src/test/ref/examples/tetris/test-sprites.sym @@ -49,7 +49,7 @@ (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) IRQ_RASTER_FIRST -(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (byte/signed byte/word/signed word/dword/signed dword) 49 +(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 19 (byte*) IRQ_STATUS (const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 (void()**) KERNEL_IRQ @@ -102,6 +102,8 @@ (const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277 (byte*) SPRITES_EXPAND_Y (const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271 +(byte) SPRITES_FIRST_YPOS +(const byte) SPRITES_FIRST_YPOS#0 SPRITES_FIRST_YPOS = (byte/signed byte/word/signed word/dword/signed dword) 49 (byte*) SPRITES_MC (const byte*) SPRITES_MC#0 SPRITES_MC = ((byte*))(word/dword/signed dword) 53276 (byte*) SPRITES_MC1 @@ -131,23 +133,27 @@ (byte*) current_piece_gfx (byte) current_xpos (byte) current_ypos +(byte) game_over (byte) irq_cnt -(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:7 0.19047619047619047 -(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:7 4.0 -(byte) irq_cnt#14 irq_cnt zp ZP_BYTE:7 20.0 +(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:7 0.17391304347826086 +(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:7 3.0 +(byte) irq_cnt#2 irq_cnt zp ZP_BYTE:7 20.0 (byte) irq_raster_next -(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:3 0.17391304347826086 +(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:3 0.3076923076923077 (byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:3 1.0 -(byte) irq_raster_next#13 irq_raster_next zp ZP_BYTE:3 6.0 (byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:3 1.3333333333333333 +(byte) irq_raster_next#3 irq_raster_next zp ZP_BYTE:3 1.3333333333333333 +(byte) irq_raster_next#4 irq_raster_next zp ZP_BYTE:3 8.0 (byte) irq_sprite_ptr -(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:6 0.24 +(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:6 0.25806451612903225 (byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:6 20.0 (byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:6 20.0 +(byte) irq_sprite_ptr#3 irq_sprite_ptr zp ZP_BYTE:6 20.0 (byte) irq_sprite_ypos -(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:5 0.7083333333333334 +(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:5 0.27586206896551724 (byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:5 20.0 (byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:5 20.0 +(byte) irq_sprite_ypos#3 irq_sprite_ypos zp ZP_BYTE:5 20.0 (byte) level (byte) level_bcd (word) lines_bcd @@ -185,7 +191,7 @@ (byte) render_screen_render (byte) render_screen_show (byte) render_screen_showing -(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:4 0.5 +(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:4 0.4 (dword) score_bcd (void()) sprites_init() (label) sprites_init::@1 @@ -199,29 +205,27 @@ (byte) sprites_init::xpos#1 xpos zp ZP_BYTE:2 7.333333333333333 (byte) sprites_init::xpos#2 xpos zp ZP_BYTE:2 8.25 interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -(byte~) sprites_irq::$4 reg byte a 4.0 +(byte/signed word/word/dword/signed dword~) sprites_irq::$0 reg byte x 4.0 (label) sprites_irq::@1 -(label) sprites_irq::@10 +(label) sprites_irq::@11 (label) sprites_irq::@12 -(label) sprites_irq::@13 +(label) sprites_irq::@15 (label) sprites_irq::@2 (label) sprites_irq::@3 (label) sprites_irq::@4 (label) sprites_irq::@5 -(label) sprites_irq::@6 (label) sprites_irq::@7 (label) sprites_irq::@8 +(label) sprites_irq::@9 (label) sprites_irq::@return (byte) sprites_irq::ptr (byte) sprites_irq::ptr#0 reg byte x 2.5 (byte) sprites_irq::ptr#1 reg byte a 2.6666666666666665 (byte) sprites_irq::ptr#2 reg byte a 4.0 -(byte) sprites_irq::ptr#3 reg byte x 2.6666666666666665 -(byte) sprites_irq::ptr#4 reg byte x 4.0 -(byte) sprites_irq::raster_next -(byte) sprites_irq::raster_next#0 reg byte x 2.6666666666666665 -(byte) sprites_irq::raster_next#1 reg byte x 4.0 -(byte) sprites_irq::raster_next#2 reg byte x 6.0 +(byte) sprites_irq::ptr#3 reg byte a 2.6666666666666665 +(byte) sprites_irq::ptr#4 reg byte a 4.0 +(byte) sprites_irq::raster_sprite_gfx_modify +(byte) sprites_irq::raster_sprite_gfx_modify#0 raster_sprite_gfx_modify zp ZP_BYTE:8 6.5 (label) sprites_irq::toSpritePtr2 (word~) sprites_irq::toSpritePtr2_$0 (word~) sprites_irq::toSpritePtr2_$1 @@ -243,17 +247,17 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() reg byte x [ sprites_init::s#2 sprites_init::s#1 ] zp ZP_BYTE:2 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -zp ZP_BYTE:3 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] -reg byte x [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +zp ZP_BYTE:3 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 ] zp ZP_BYTE:4 [ render_screen_showing#0 ] -zp ZP_BYTE:5 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] -zp ZP_BYTE:6 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] -zp ZP_BYTE:7 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ] +zp ZP_BYTE:5 [ irq_sprite_ypos#0 irq_sprite_ypos#3 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +zp ZP_BYTE:6 [ irq_sprite_ptr#0 irq_sprite_ptr#3 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +zp ZP_BYTE:7 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] reg byte a [ sprites_init::s2#0 ] reg byte a [ sprites_irq::ypos#0 ] +reg byte x [ sprites_irq::$0 ] +zp ZP_BYTE:8 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::ptr#0 ] -reg byte x [ sprites_irq::ptr#3 ] -reg byte x [ sprites_irq::ptr#4 ] -reg byte a [ sprites_irq::$4 ] +reg byte a [ sprites_irq::ptr#3 ] +reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#1 ] reg byte a [ sprites_irq::ptr#2 ] diff --git a/src/test/ref/examples/tetris/tetris.asm b/src/test/ref/examples/tetris/tetris.asm index 2c12a8fcc..689ca70e4 100644 --- a/src/test/ref/examples/tetris/tetris.asm +++ b/src/test/ref/examples/tetris/tetris.asm @@ -65,7 +65,7 @@ .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a - .const IRQ_RASTER_FIRST = $31 + .const SPRITES_FIRST_YPOS = $31 .const current_movedown_fast = 2 .const COLLISION_NONE = 0 .const COLLISION_PLAYFIELD = 1 @@ -74,72 +74,79 @@ .const COLLISION_RIGHT = 8 .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS .label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS + .const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13 .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 - .label keyboard_events_size = $21 - .label render_screen_showing = $23 - .label irq_raster_next = $22 - .label irq_sprite_ypos = $24 - .label irq_sprite_ptr = $25 - .label irq_cnt = $26 + .label keyboard_events_size = $22 + .label render_screen_showing = $24 + .label irq_raster_next = $23 + .label irq_sprite_ypos = $25 + .label irq_sprite_ptr = $26 + .label irq_cnt = $27 .label current_movedown_slow = $18 - .label current_movedown_counter = 4 .label current_ypos = $10 - .label current_piece_gfx = $1d - .label current_xpos = $1f - .label current_piece_char = $20 - .label current_orientation = $1c + .label current_xpos = $20 + .label current_orientation = $1d + .label current_piece_gfx = $1e .label level_bcd = $19 + .label level = $17 .label render_screen_render = 3 .label render_screen_show = 2 + .label current_movedown_counter = 4 .label lines_bcd = $11 .label score_bcd = $13 - .label level = $17 .label current_piece = $1a - .label current_piece_12 = 5 + .label current_piece_char = $1c + .label game_over = $21 + .label current_piece_16 = 5 .label render_screen_render_30 = 9 - .label current_xpos_47 = $a - .label current_piece_gfx_53 = 5 - .label render_screen_render_64 = 9 - .label current_xpos_112 = $a - .label current_xpos_113 = $a - .label current_piece_gfx_102 = 5 - .label current_piece_gfx_103 = 5 - .label current_piece_76 = 5 - .label current_piece_77 = 5 - .label current_piece_78 = 5 - .label current_piece_79 = 5 + .label current_xpos_57 = $a + .label current_piece_gfx_62 = 5 + .label current_piece_char_75 = $b + .label render_screen_render_68 = 9 + .label current_xpos_125 = $a + .label current_xpos_126 = $a + .label current_piece_gfx_115 = 5 + .label current_piece_gfx_116 = 5 + .label current_piece_char_103 = $b + .label current_piece_char_104 = $b + .label current_piece_89 = 5 + .label current_piece_90 = 5 + .label current_piece_91 = 5 + .label current_piece_92 = 5 + .label current_piece_93 = 5 bbegin: lda #0 sta render_screen_showing lda #IRQ_RASTER_FIRST sta irq_raster_next - lda #$32 + lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos - lda #toSpritePtr1_return + lda #toSpritePtr1_return+3 sta irq_sprite_ptr lda #0 sta irq_cnt jsr main main: { - .label key_event = $f - .label render = $27 jsr sid_rnd_init sei jsr render_init jsr sprites_init jsr sprites_irq_init jsr play_init + lda #0 + sta game_over jsr play_spawn_current ldx #$40 jsr render_playfield - ldy current_ypos + ldx current_ypos lda current_xpos - sta current_xpos_112 + sta current_xpos_125 lda current_piece_gfx - sta current_piece_gfx_102 + sta current_piece_gfx_115 lda current_piece_gfx+1 - sta current_piece_gfx_102+1 - ldx current_piece_char + sta current_piece_gfx_115+1 + lda current_piece_char + sta current_piece_char_103 lda #$40 sta render_screen_render_30 jsr render_moving @@ -168,41 +175,46 @@ main: { lda RASTER cmp #$ff bne b4 + lda render_screen_show + lsr + lsr + lsr + lsr + sta BORDERCOL jsr render_show jsr keyboard_event_scan jsr keyboard_event_get - sta key_event - jsr play_move_down - txa - clc - adc #0 - sta render - lda key_event - jsr play_move_leftright - clc - adc render - sta render - lda key_event - jsr play_move_rotate - clc - adc render + lda game_over cmp #0 - beq b4 + beq b7 + b9: + inc BORDERCOL + jmp b9 + b7: + stx play_movement.key_event + jsr play_movement + lda play_movement.return + cmp #0 + beq b12 ldx render_screen_render jsr render_playfield - ldy current_ypos + ldx current_ypos lda render_screen_render - sta render_screen_render_64 + sta render_screen_render_68 lda current_xpos - sta current_xpos_113 + sta current_xpos_126 lda current_piece_gfx - sta current_piece_gfx_103 + sta current_piece_gfx_116 lda current_piece_gfx+1 - sta current_piece_gfx_103+1 - ldx current_piece_char + sta current_piece_gfx_116+1 + lda current_piece_char + sta current_piece_char_104 jsr render_moving jsr render_score jsr render_screen_swap + b12: + lda #0 + sta BORDERCOL jmp b4 } render_screen_swap: { @@ -281,7 +293,7 @@ render_score: { rts } render_bcd: { - .const ZERO_CHAR = $33 + .const ZERO_CHAR = $35 .label screen = 5 .label screen_pos = 7 .label offset = 7 @@ -321,13 +333,12 @@ render_bcd: { rts } render_moving: { - .label ypos2 = $b + .label ypos2 = $c .label screen_line = 7 - .label xpos = $e - .label i = $d - .label l = $c - .label c = $f - tya + .label xpos = $f + .label i = $e + .label l = $d + txa asl sta ypos2 lda #0 @@ -368,27 +379,25 @@ render_moving: { sta screen_line lda screen_lines_1+1,y sta screen_line+1 - lda current_xpos_47 + lda current_xpos_57 sta xpos - lda #0 - sta c + ldx #0 b4: ldy i - lda (current_piece_gfx_53),y + lda (current_piece_gfx_62),y inc i cmp #0 beq b5 lda xpos cmp #PLAYFIELD_COLS bcs b5 - tay - txa + lda current_piece_char_75 + ldy xpos sta (screen_line),y b5: inc xpos - inc c - lda c - cmp #4 + inx + cpx #4 bne b4 jmp b3 } @@ -434,8 +443,36 @@ render_playfield: { bne b1 rts } +play_movement: { + .label render = 9 + .label return = 9 + .label key_event = $28 + lda key_event + jsr play_move_down + txa + clc + adc #0 + sta render + lda game_over + cmp #0 + beq b1 + breturn: + rts + b1: + lda key_event + jsr play_move_leftright + clc + adc render + sta render + lda key_event + jsr play_move_rotate + clc + adc return + sta return + jmp breturn +} play_move_rotate: { - .label orientation = 9 + .label orientation = $a cmp #KEY_Z beq b1 cmp #KEY_X @@ -453,12 +490,13 @@ play_move_rotate: { b4: lda current_xpos sta play_collision.xpos - ldy current_ypos + lda current_ypos + sta play_collision.ypos ldx orientation lda current_piece - sta current_piece_79 + sta current_piece_92 lda current_piece+1 - sta current_piece_79+1 + sta current_piece_92+1 jsr play_collision cmp #COLLISION_NONE bne b3 @@ -481,17 +519,18 @@ play_move_rotate: { jmp b4 } play_collision: { - .label xpos = $a + .label xpos = $c + .label ypos = $b .label piece_gfx = 5 .label ypos2 = $b .label playfield_line = 7 - .label i = $28 - .label col = $e - .label l = $c - .label i_2 = $d - .label i_3 = $d - .label i_11 = $d - .label i_13 = $d + .label i = $29 + .label col = $f + .label l = $d + .label i_2 = $e + .label i_3 = $e + .label i_11 = $e + .label i_13 = $e txa clc adc piece_gfx @@ -499,9 +538,7 @@ play_collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - tya - asl - sta ypos2 + asl ypos2 lda #0 sta l sta i_3 @@ -580,12 +617,13 @@ play_move_leftright: { ldy current_xpos iny sty play_collision.xpos - ldy current_ypos + lda current_ypos + sta play_collision.ypos ldx current_orientation lda current_piece - sta current_piece_78 + sta current_piece_91 lda current_piece+1 - sta current_piece_78+1 + sta current_piece_91+1 jsr play_collision cmp #COLLISION_NONE bne b3 @@ -601,12 +639,13 @@ play_move_leftright: { ldx current_xpos dex stx play_collision.xpos - ldy current_ypos + lda current_ypos + sta play_collision.ypos ldx current_orientation lda current_piece - sta current_piece_77 + sta current_piece_90 lda current_piece+1 - sta current_piece_77+1 + sta current_piece_90+1 jsr play_collision cmp #COLLISION_NONE bne b3 @@ -641,13 +680,14 @@ play_move_down: { beq b5 ldy current_ypos iny + sty play_collision.ypos lda current_xpos sta play_collision.xpos ldx current_orientation lda current_piece - sta current_piece_76 + sta current_piece_89 lda current_piece+1 - sta current_piece_76+1 + sta current_piece_89+1 jsr play_collision cmp #COLLISION_NONE beq b6 @@ -686,7 +726,9 @@ play_spawn_current: { txa asl sta _3 - tay + lda PIECES_CHARS,x + sta current_piece_char + ldy _3 lda PIECES,y sta current_piece_gfx lda PIECES+1,y @@ -695,8 +737,21 @@ play_spawn_current: { sta current_xpos lda PIECES_START_Y,x sta current_ypos - lda PIECES_CHARS,x - sta current_piece_char + lda current_xpos + sta play_collision.xpos + lda current_ypos + sta play_collision.ypos + lda PIECES,y + sta current_piece_93 + lda PIECES+1,y + sta current_piece_93+1 + ldx #0 + jsr play_collision + cmp #COLLISION_PLAYFIELD + bne breturn + lda #1 + sta game_over + breturn: rts b2: jsr sid_rnd @@ -710,7 +765,7 @@ sid_rnd: { } play_update_score: { .label lines_before = 4 - .label add_bcd = $29 + .label add_bcd = $2a cpx #0 beq breturn lda lines_bcd @@ -943,11 +998,12 @@ keyboard_event_get: { cmp #0 beq b1 dec keyboard_events_size - ldy keyboard_events_size - lda keyboard_events,y + ldx keyboard_events_size + lda keyboard_events,x + tax jmp breturn b1: - lda #$ff + ldx #$ff breturn: rts } @@ -1355,6 +1411,7 @@ sid_rnd_init: { } sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 + .label raster_sprite_gfx_modify = $2e sta rega+1 stx regx+1 cld @@ -1363,26 +1420,34 @@ sprites_irq: { sta SPRITES_YPOS+2 sta SPRITES_YPOS+4 sta SPRITES_YPOS+6 + ldx irq_raster_next + inx + stx raster_sprite_gfx_modify b1: lda RASTER - cmp irq_sprite_ypos + cmp raster_sprite_gfx_modify bcc b1 ldx irq_sprite_ptr lda render_screen_showing cmp #0 beq b2 stx PLAYFIELD_SPRITE_PTRS_2 - inx - stx PLAYFIELD_SPRITE_PTRS_2+1 - stx PLAYFIELD_SPRITE_PTRS_2+2 - inx - stx PLAYFIELD_SPRITE_PTRS_2+3 + txa + clc + adc #1 + sta PLAYFIELD_SPRITE_PTRS_2+1 + sta PLAYFIELD_SPRITE_PTRS_2+2 + clc + adc #1 + sta PLAYFIELD_SPRITE_PTRS_2+3 b3: inc irq_cnt lda irq_cnt - cmp #$a + cmp #9 beq b4 - lda #$15 + cmp #$a + beq b5 + lda #$14 clc adc irq_raster_next sta irq_raster_next @@ -1394,15 +1459,9 @@ sprites_irq: { clc adc irq_sprite_ptr sta irq_sprite_ptr - b5: - ldx irq_raster_next - txa - and #7 - cmp #3 - bne b6 - dex - b6: - stx RASTER + b7: + lda irq_raster_next + sta RASTER lda #IRQ_RASTER sta IRQ_STATUS rega: @@ -1410,16 +1469,30 @@ sprites_irq: { regx: ldx #00 rti - b4: + b5: lda #0 sta irq_cnt lda #IRQ_RASTER_FIRST sta irq_raster_next - lda #$32 + lda #$15 + clc + adc irq_sprite_ypos + sta irq_sprite_ypos + lda #3 + clc + adc irq_sprite_ptr + sta irq_sprite_ptr + jmp b7 + b4: + lda #$15 + clc + adc irq_raster_next + sta irq_raster_next + lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos lda #toSpritePtr2_return sta irq_sprite_ptr - jmp b5 + jmp b7 b2: stx PLAYFIELD_SPRITE_PTRS_1 txa @@ -1453,9 +1526,9 @@ sprites_irq: { PIECES_CHARS: .byte $64, $65, $a5, $65, $64, $64, $a5 PIECES_START_X: .byte 4, 4, 4, 4, 4, 4, 4 PIECES_START_Y: .byte 1, 1, 1, 1, 1, 0, 1 + MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 SCORE_BASE_BCD: .dword 0, $40, $100, $300, $1200 score_add_bcd: .fill 4*5, 0 - MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 .align $80 screen_lines_1: .fill 2*PLAYFIELD_LINES, 0 .align $40 @@ -1483,11 +1556,14 @@ sprites_irq: { .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 diff --git a/src/test/ref/examples/tetris/tetris.cfg b/src/test/ref/examples/tetris/tetris.cfg index 85a23174f..7b56f2c3a 100644 --- a/src/test/ref/examples/tetris/tetris.cfg +++ b/src/test/ref/examples/tetris/tetris.cfg @@ -20,11 +20,14 @@ to:@22 @22: scope:[] from @14 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 @@ -34,1084 +37,1133 @@ to:@23 @23: scope:[] from @22 [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 - [7] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 to:toSpritePtr1 toSpritePtr1: scope:[] from @23 [8] phi() - to:@37 -@37: scope:[] from toSpritePtr1 - [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 + to:@38 +@38: scope:[] from toSpritePtr1 + [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@36 -@36: scope:[] from @37 + to:@37 +@37: scope:[] from @38 [11] phi() [12] call main to:@end -@end: scope:[] from @36 +@end: scope:[] from @37 [13] phi() -main: scope:[main] from @36 +main: scope:[main] from @37 [14] phi() [15] call sid_rnd_init - to:main::@15 -main::@15: scope:[main] from main + to:main::@25 +main::@25: scope:[main] from main asm { sei } [17] call render_init - to:main::@16 -main::@16: scope:[main] from main::@15 + to:main::@26 +main::@26: scope:[main] from main::@25 [18] phi() [19] call sprites_init - to:main::@17 -main::@17: scope:[main] from main::@16 + to:main::@27 +main::@27: scope:[main] from main::@26 [20] phi() [21] call sprites_irq_init - to:main::@18 -main::@18: scope:[main] from main::@17 + to:main::@28 +main::@28: scope:[main] from main::@27 [22] phi() [23] call play_init - to:main::@19 -main::@19: scope:[main] from main::@18 + to:main::@29 +main::@29: scope:[main] from main::@28 [24] phi() [25] call play_spawn_current - to:main::@20 -main::@20: scope:[main] from main::@19 + to:main::@30 +main::@30: scope:[main] from main::@29 [26] phi() [27] call render_playfield - to:main::@21 -main::@21: scope:[main] from main::@20 - [28] (byte~) current_ypos#86 ← (byte) current_ypos#18 - [29] (byte~) current_xpos#112 ← (byte) current_xpos#23 - [30] (byte*~) current_piece_gfx#102 ← (byte*) current_piece_gfx#16 - [31] (byte~) current_piece_char#90 ← (byte) current_piece_char#12 + to:main::@31 +main::@31: scope:[main] from main::@30 + [28] (byte~) current_ypos#99 ← (byte) current_ypos#22 + [29] (byte~) current_xpos#125 ← (byte) current_xpos#28 + [30] (byte*~) current_piece_gfx#115 ← (byte*) current_piece_gfx#21 + [31] (byte~) current_piece_char#103 ← (byte) current_piece_char#16 [32] call render_moving - [33] (byte*~) current_piece#73 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + [33] (byte*~) current_piece#88 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) to:main::@1 -main::@1: scope:[main] from main::@21 main::@28 main::@31 - [34] (byte) level_bcd#20 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(byte) level_bcd#13 main::@28/(byte) level_bcd#13 ) - [34] (byte) level#19 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(byte) level#12 main::@28/(byte) level#12 ) - [34] (dword) score_bcd#14 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(dword) score_bcd#10 main::@28/(dword) score_bcd#10 ) - [34] (word) lines_bcd#15 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(word) lines_bcd#11 main::@28/(word) lines_bcd#11 ) - [34] (byte) current_movedown_counter#12 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(byte) current_movedown_counter#10 main::@28/(byte) current_movedown_counter#10 ) - [34] (byte) keyboard_events_size#19 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(byte) keyboard_events_size#16 main::@28/(byte) keyboard_events_size#16 ) - [34] (byte) current_piece_char#15 ← phi( main::@21/(byte) current_piece_char#12 main::@31/(byte) current_piece_char#1 main::@28/(byte) current_piece_char#1 ) - [34] (byte) current_ypos#21 ← phi( main::@21/(byte) current_ypos#18 main::@31/(byte) current_ypos#13 main::@28/(byte) current_ypos#13 ) - [34] (byte) current_xpos#10 ← phi( main::@21/(byte) current_xpos#23 main::@31/(byte) current_xpos#19 main::@28/(byte) current_xpos#19 ) - [34] (byte*) current_piece_gfx#20 ← phi( main::@21/(byte*) current_piece_gfx#16 main::@31/(byte*) current_piece_gfx#14 main::@28/(byte*) current_piece_gfx#14 ) - [34] (byte) current_orientation#10 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(byte) current_orientation#19 main::@28/(byte) current_orientation#19 ) - [34] (byte*) current_piece#16 ← phi( main::@21/(byte*~) current_piece#73 main::@31/(byte*) current_piece#10 main::@28/(byte*) current_piece#10 ) - [34] (byte) current_movedown_slow#12 ← phi( main::@21/(byte) current_movedown_slow#1 main::@31/(byte) current_movedown_slow#17 main::@28/(byte) current_movedown_slow#17 ) - [34] (byte) render_screen_render#17 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 64 main::@31/(byte) render_screen_render#11 ) - [34] (byte) render_screen_show#16 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(byte) render_screen_show#13 ) +main::@1: scope:[main] from main::@12 main::@31 + [34] (byte) level_bcd#11 ← phi( main::@12/(byte) level_bcd#17 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [34] (byte) level#10 ← phi( main::@12/(byte) level#16 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [34] (dword) score_bcd#18 ← phi( main::@12/(dword) score_bcd#14 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [34] (word) lines_bcd#19 ← phi( main::@12/(word) lines_bcd#15 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [34] (byte) current_movedown_counter#16 ← phi( main::@12/(byte) current_movedown_counter#14 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [34] (byte) keyboard_events_size#19 ← phi( main::@12/(byte) keyboard_events_size#16 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [34] (byte) game_over#19 ← phi( main::@12/(byte) game_over#14 main::@31/(byte) game_over#15 ) + [34] (byte) current_ypos#25 ← phi( main::@12/(byte) current_ypos#17 main::@31/(byte) current_ypos#22 ) + [34] (byte) current_xpos#115 ← phi( main::@12/(byte) current_xpos#17 main::@31/(byte) current_xpos#28 ) + [34] (byte*) current_piece_gfx#105 ← phi( main::@12/(byte*) current_piece_gfx#16 main::@31/(byte*) current_piece_gfx#21 ) + [34] (byte) current_orientation#12 ← phi( main::@12/(byte) current_orientation#16 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [34] (byte) current_piece_char#19 ← phi( main::@12/(byte) current_piece_char#14 main::@31/(byte) current_piece_char#16 ) + [34] (byte*) current_piece#20 ← phi( main::@12/(byte*) current_piece#14 main::@31/(byte*~) current_piece#88 ) + [34] (byte) current_movedown_slow#14 ← phi( main::@12/(byte) current_movedown_slow#21 main::@31/(byte) current_movedown_slow#1 ) + [34] (byte) render_screen_render#17 ← phi( main::@12/(byte) render_screen_render#33 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 64 ) + [34] (byte) render_screen_show#17 ← phi( main::@12/(byte) render_screen_show#29 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) to:main::@4 main::@4: scope:[main] from main::@1 main::@4 [35] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 - [36] phi() - [37] call render_show + [36] (byte~) main::$9 ← (byte) render_screen_show#17 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [37] *((const byte*) BORDERCOL#0) ← (byte~) main::$9 + [38] call render_show + to:main::@33 +main::@33: scope:[main] from main::@6 + [39] phi() + [40] call keyboard_event_scan + to:main::@34 +main::@34: scope:[main] from main::@33 + [41] phi() + [42] call keyboard_event_get + [43] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + to:main::@35 +main::@35: scope:[main] from main::@34 + [44] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + [45] if((byte) game_over#19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 + to:main::@9 +main::@9: scope:[main] from main::@35 main::@9 + [46] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + to:main::@9 +main::@7: scope:[main] from main::@35 + [47] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 + [48] call play_movement + [49] (byte) play_movement::return#3 ← (byte) play_movement::return#2 + to:main::@36 +main::@36: scope:[main] from main::@7 + [50] (byte) main::render#1 ← (byte) play_movement::return#3 + to:main::@11 +main::@11: scope:[main] from main::@36 + [51] if((byte) main::render#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12 to:main::@23 -main::@23: scope:[main] from main::@6 - [38] phi() - [39] call keyboard_event_scan - to:main::@24 -main::@24: scope:[main] from main::@23 - [40] phi() - [41] call keyboard_event_get - [42] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 - to:main::@25 -main::@25: scope:[main] from main::@24 - [43] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 - [44] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 - [45] call play_move_down - [46] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 - to:main::@26 -main::@26: scope:[main] from main::@25 - [47] (byte~) main::$12 ← (byte) play_move_down::return#3 - [48] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 - [49] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 - [50] call play_move_leftright - [51] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 - to:main::@27 -main::@27: scope:[main] from main::@26 - [52] (byte~) main::$13 ← (byte) play_move_leftright::return#4 - [53] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 - [54] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 - [55] call play_move_rotate - [56] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 - to:main::@28 -main::@28: scope:[main] from main::@27 - [57] (byte~) main::$14 ← (byte) play_move_rotate::return#4 - [58] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 - [59] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 - to:main::@13 -main::@13: scope:[main] from main::@28 - [60] (byte~) render_screen_render#65 ← (byte) render_screen_render#17 - [61] call render_playfield - to:main::@29 -main::@29: scope:[main] from main::@13 - [62] (byte~) current_ypos#87 ← (byte) current_ypos#13 - [63] (byte~) render_screen_render#64 ← (byte) render_screen_render#17 - [64] (byte~) current_xpos#113 ← (byte) current_xpos#19 - [65] (byte*~) current_piece_gfx#103 ← (byte*) current_piece_gfx#14 - [66] (byte~) current_piece_char#91 ← (byte) current_piece_char#1 - [67] call render_moving - to:main::@30 -main::@30: scope:[main] from main::@29 - [68] phi() - [69] call render_score - to:main::@31 -main::@31: scope:[main] from main::@30 - [70] phi() - [71] call render_screen_swap +main::@23: scope:[main] from main::@11 + [52] (byte~) render_screen_render#69 ← (byte) render_screen_render#17 + [53] call render_playfield + to:main::@37 +main::@37: scope:[main] from main::@23 + [54] (byte~) current_ypos#100 ← (byte) current_ypos#17 + [55] (byte~) render_screen_render#68 ← (byte) render_screen_render#17 + [56] (byte~) current_xpos#126 ← (byte) current_xpos#17 + [57] (byte*~) current_piece_gfx#116 ← (byte*) current_piece_gfx#16 + [58] (byte~) current_piece_char#104 ← (byte) current_piece_char#14 + [59] call render_moving + to:main::@38 +main::@38: scope:[main] from main::@37 + [60] phi() + [61] call render_score + to:main::@39 +main::@39: scope:[main] from main::@38 + [62] phi() + [63] call render_screen_swap + to:main::@12 +main::@12: scope:[main] from main::@11 main::@39 + [64] (byte) render_screen_render#33 ← phi( main::@11/(byte) render_screen_render#17 main::@39/(byte) render_screen_render#11 ) + [64] (byte) render_screen_show#29 ← phi( main::@11/(byte) render_screen_show#17 main::@39/(byte) render_screen_show#13 ) + [65] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::@1 -render_screen_swap: scope:[render_screen_swap] from main::@31 - [72] (byte) render_screen_render#11 ← (byte) render_screen_render#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 - [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 +render_screen_swap: scope:[render_screen_swap] from main::@39 + [66] (byte) render_screen_render#11 ← (byte) render_screen_render#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 + [67] (byte) render_screen_show#13 ← (byte) render_screen_show#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 to:render_screen_swap::@return render_screen_swap::@return: scope:[render_screen_swap] from render_screen_swap - [74] return + [68] return to:@return -render_score: scope:[render_score] from main::@30 - [75] if((byte) render_screen_render#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 +render_score: scope:[render_score] from main::@38 + [69] if((byte) render_screen_render#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 to:render_score::@3 render_score::@3: scope:[render_score] from render_score - [76] phi() + [70] phi() to:render_score::@2 render_score::@2: scope:[render_score] from render_score render_score::@3 - [77] (byte*) render_score::screen#2 ← phi( render_score/(const byte*) PLAYFIELD_SCREEN_1#0 render_score::@3/(const byte*) PLAYFIELD_SCREEN_2#0 ) - [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 - [79] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) - [80] call render_bcd + [71] (byte*) render_score::screen#2 ← phi( render_score/(const byte*) PLAYFIELD_SCREEN_1#0 render_score::@3/(const byte*) PLAYFIELD_SCREEN_2#0 ) + [72] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 + [73] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) + [74] call render_bcd to:render_score::@5 render_score::@5: scope:[render_score] from render_score::@2 - [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 - [82] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) - [83] call render_bcd + [75] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 + [76] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) + [77] call render_bcd to:render_score::@6 render_score::@6: scope:[render_score] from render_score::@5 - [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 - [85] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) - [86] call render_bcd + [78] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 + [79] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) + [80] call render_bcd to:render_score::@7 render_score::@7: scope:[render_score] from render_score::@6 - [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#11 - [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 - [89] call render_bcd + [81] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 + [82] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 + [83] call render_bcd to:render_score::@8 render_score::@8: scope:[render_score] from render_score::@7 - [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#11 - [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 - [92] call render_bcd + [84] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 + [85] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 + [86] call render_bcd to:render_score::@9 render_score::@9: scope:[render_score] from render_score::@8 - [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 - [94] (byte) render_bcd::bcd#5 ← (byte) level_bcd#13 - [95] call render_bcd + [87] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 + [88] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 + [89] call render_bcd to:render_score::@return render_score::@return: scope:[render_score] from render_score::@9 - [96] return + [90] return to:@return render_bcd: scope:[render_bcd] from render_score::@2 render_score::@5 render_score::@6 render_score::@7 render_score::@8 render_score::@9 - [97] (byte) render_bcd::bcd#6 ← phi( render_score::@2/(byte) render_bcd::bcd#0 render_score::@5/(byte) render_bcd::bcd#1 render_score::@6/(byte) render_bcd::bcd#2 render_score::@7/(byte) render_bcd::bcd#3 render_score::@8/(byte) render_bcd::bcd#4 render_score::@9/(byte) render_bcd::bcd#5 ) - [97] (byte) render_bcd::only_low#6 ← phi( render_score::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 render_score::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [97] (word) render_bcd::offset#6 ← phi( render_score::@2/(const word) render_score::score_offset#0 render_score::@5/(const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 render_score::@6/(const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 render_score::@7/(const word) render_score::lines_offset#0 render_score::@8/(const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 render_score::@9/(const word) render_score::level_offset#0 ) - [97] (byte*) render_bcd::screen#6 ← phi( render_score::@2/(byte*) render_bcd::screen#0 render_score::@5/(byte*) render_bcd::screen#1 render_score::@6/(byte*) render_bcd::screen#2 render_score::@7/(byte*) render_bcd::screen#3 render_score::@8/(byte*) render_bcd::screen#4 render_score::@9/(byte*) render_bcd::screen#5 ) - [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 - [99] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 + [91] (byte) render_bcd::bcd#6 ← phi( render_score::@2/(byte) render_bcd::bcd#0 render_score::@5/(byte) render_bcd::bcd#1 render_score::@6/(byte) render_bcd::bcd#2 render_score::@7/(byte) render_bcd::bcd#3 render_score::@8/(byte) render_bcd::bcd#4 render_score::@9/(byte) render_bcd::bcd#5 ) + [91] (byte) render_bcd::only_low#6 ← phi( render_score::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 render_score::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [91] (word) render_bcd::offset#6 ← phi( render_score::@2/(const word) render_score::score_offset#0 render_score::@5/(const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 render_score::@6/(const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 render_score::@7/(const word) render_score::lines_offset#0 render_score::@8/(const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 render_score::@9/(const word) render_score::level_offset#0 ) + [91] (byte*) render_bcd::screen#6 ← phi( render_score::@2/(byte*) render_bcd::screen#0 render_score::@5/(byte*) render_bcd::screen#1 render_score::@6/(byte*) render_bcd::screen#2 render_score::@7/(byte*) render_bcd::screen#3 render_score::@8/(byte*) render_bcd::screen#4 render_score::@9/(byte*) render_bcd::screen#5 ) + [92] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 + [93] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 to:render_bcd::@2 render_bcd::@2: scope:[render_bcd] from render_bcd - [100] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [101] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 - [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 - [103] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 + [94] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [95] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 + [96] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 + [97] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 to:render_bcd::@1 render_bcd::@1: scope:[render_bcd] from render_bcd render_bcd::@2 - [104] (byte*) render_bcd::screen_pos#3 ← phi( render_bcd/(byte*) render_bcd::screen_pos#0 render_bcd::@2/(byte*) render_bcd::screen_pos#2 ) - [105] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [106] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 - [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 - [108] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 + [98] (byte*) render_bcd::screen_pos#3 ← phi( render_bcd/(byte*) render_bcd::screen_pos#0 render_bcd::@2/(byte*) render_bcd::screen_pos#2 ) + [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [100] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 + [101] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 + [102] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 to:render_bcd::@return render_bcd::@return: scope:[render_bcd] from render_bcd::@1 - [109] return + [103] return to:@return -render_moving: scope:[render_moving] from main::@21 main::@29 - [110] (byte) current_piece_char#64 ← phi( main::@21/(byte~) current_piece_char#90 main::@29/(byte~) current_piece_char#91 ) - [110] (byte*) current_piece_gfx#53 ← phi( main::@21/(byte*~) current_piece_gfx#102 main::@29/(byte*~) current_piece_gfx#103 ) - [110] (byte) current_xpos#47 ← phi( main::@21/(byte~) current_xpos#112 main::@29/(byte~) current_xpos#113 ) - [110] (byte) render_screen_render#30 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 64 main::@29/(byte~) render_screen_render#64 ) - [110] (byte) current_ypos#9 ← phi( main::@21/(byte~) current_ypos#86 main::@29/(byte~) current_ypos#87 ) - [111] (byte) render_moving::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 +render_moving: scope:[render_moving] from main::@31 main::@37 + [104] (byte) current_piece_char#75 ← phi( main::@31/(byte~) current_piece_char#103 main::@37/(byte~) current_piece_char#104 ) + [104] (byte*) current_piece_gfx#62 ← phi( main::@31/(byte*~) current_piece_gfx#115 main::@37/(byte*~) current_piece_gfx#116 ) + [104] (byte) current_xpos#57 ← phi( main::@31/(byte~) current_xpos#125 main::@37/(byte~) current_xpos#126 ) + [104] (byte) render_screen_render#30 ← phi( main::@31/(byte/signed byte/word/signed word/dword/signed dword) 64 main::@37/(byte~) render_screen_render#68 ) + [104] (byte) current_ypos#11 ← phi( main::@31/(byte~) current_ypos#99 main::@37/(byte~) current_ypos#100 ) + [105] (byte) render_moving::ypos2#0 ← (byte) current_ypos#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:render_moving::@1 render_moving::@1: scope:[render_moving] from render_moving render_moving::@3 - [112] (byte) render_moving::l#4 ← phi( render_moving/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@3/(byte) render_moving::l#1 ) - [112] (byte) render_moving::i#3 ← phi( render_moving/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@3/(byte) render_moving::i#8 ) - [112] (byte) render_moving::ypos2#2 ← phi( render_moving/(byte) render_moving::ypos2#0 render_moving::@3/(byte) render_moving::ypos2#1 ) - [113] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@13 + [106] (byte) render_moving::l#4 ← phi( render_moving/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@3/(byte) render_moving::l#1 ) + [106] (byte) render_moving::i#3 ← phi( render_moving/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@3/(byte) render_moving::i#8 ) + [106] (byte) render_moving::ypos2#2 ← phi( render_moving/(byte) render_moving::ypos2#0 render_moving::@3/(byte) render_moving::ypos2#1 ) + [107] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@13 to:render_moving::@7 render_moving::@7: scope:[render_moving] from render_moving::@1 render_moving::@13 - [114] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 + [108] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 to:render_moving::@3 render_moving::@3: scope:[render_moving] from render_moving::@5 render_moving::@7 - [115] (byte) render_moving::i#8 ← phi( render_moving::@5/(byte) render_moving::i#10 render_moving::@7/(byte) render_moving::i#1 ) - [116] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [117] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 - [118] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 + [109] (byte) render_moving::i#8 ← phi( render_moving::@5/(byte) render_moving::i#10 render_moving::@7/(byte) render_moving::i#1 ) + [110] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [111] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 + [112] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 to:render_moving::@return render_moving::@return: scope:[render_moving] from render_moving::@3 - [119] return + [113] return to:@return render_moving::@13: scope:[render_moving] from render_moving::@1 - [120] if((byte) render_moving::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_moving::@2 + [114] if((byte) render_moving::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_moving::@2 to:render_moving::@7 render_moving::@2: scope:[render_moving] from render_moving::@13 - [121] (byte~) render_moving::$5 ← (byte) render_screen_render#30 + (byte) render_moving::ypos2#2 - [122] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) - [123] (byte) render_moving::xpos#0 ← (byte) current_xpos#47 + [115] (byte~) render_moving::$5 ← (byte) render_screen_render#30 + (byte) render_moving::ypos2#2 + [116] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) + [117] (byte) render_moving::xpos#0 ← (byte) current_xpos#57 to:render_moving::@4 render_moving::@4: scope:[render_moving] from render_moving::@2 render_moving::@5 - [124] (byte) render_moving::c#2 ← phi( render_moving::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@5/(byte) render_moving::c#1 ) - [124] (byte) render_moving::xpos#2 ← phi( render_moving::@2/(byte) render_moving::xpos#0 render_moving::@5/(byte) render_moving::xpos#1 ) - [124] (byte) render_moving::i#4 ← phi( render_moving::@2/(byte) render_moving::i#3 render_moving::@5/(byte) render_moving::i#10 ) - [125] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_moving::i#4) - [126] (byte) render_moving::i#10 ← ++ (byte) render_moving::i#4 - [127] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 + [118] (byte) render_moving::c#2 ← phi( render_moving::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@5/(byte) render_moving::c#1 ) + [118] (byte) render_moving::xpos#2 ← phi( render_moving::@2/(byte) render_moving::xpos#0 render_moving::@5/(byte) render_moving::xpos#1 ) + [118] (byte) render_moving::i#4 ← phi( render_moving::@2/(byte) render_moving::i#3 render_moving::@5/(byte) render_moving::i#10 ) + [119] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#62 + (byte) render_moving::i#4) + [120] (byte) render_moving::i#10 ← ++ (byte) render_moving::i#4 + [121] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 to:render_moving::@9 render_moving::@9: scope:[render_moving] from render_moving::@4 - [128] if((byte) render_moving::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_moving::@5 + [122] if((byte) render_moving::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_moving::@5 to:render_moving::@10 render_moving::@10: scope:[render_moving] from render_moving::@9 - [129] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#64 + [123] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#75 to:render_moving::@5 render_moving::@5: scope:[render_moving] from render_moving::@10 render_moving::@4 render_moving::@9 - [130] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 - [131] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 - [132] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 + [124] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 + [125] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 + [126] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 to:render_moving::@3 -render_playfield: scope:[render_playfield] from main::@13 main::@20 - [133] (byte) render_screen_render#21 ← phi( main::@13/(byte~) render_screen_render#65 main::@20/(byte/signed byte/word/signed word/dword/signed dword) 64 ) +render_playfield: scope:[render_playfield] from main::@23 main::@30 + [127] (byte) render_screen_render#21 ← phi( main::@23/(byte~) render_screen_render#69 main::@30/(byte/signed byte/word/signed word/dword/signed dword) 64 ) to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 - [134] (byte) render_playfield::i#3 ← phi( render_playfield/(const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::i#1 ) - [134] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::l#1 ) - [135] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [136] (byte~) render_playfield::$3 ← (byte) render_screen_render#21 + (byte~) render_playfield::$2 - [137] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) + [128] (byte) render_playfield::i#3 ← phi( render_playfield/(const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::i#1 ) + [128] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::l#1 ) + [129] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [130] (byte~) render_playfield::$3 ← (byte) render_screen_render#21 + (byte~) render_playfield::$2 + [131] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 - [138] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@2/(byte) render_playfield::c#1 ) - [138] (byte*) render_playfield::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 ) - [138] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - [139] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) - [140] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 - [141] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 - [142] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 - [143] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 + [132] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@2/(byte) render_playfield::c#1 ) + [132] (byte*) render_playfield::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 ) + [132] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + [133] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) + [134] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 + [135] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 + [136] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 + [137] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 to:render_playfield::@3 render_playfield::@3: scope:[render_playfield] from render_playfield::@2 - [144] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 - [145] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 + [138] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 + [139] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 to:render_playfield::@return render_playfield::@return: scope:[render_playfield] from render_playfield::@3 - [146] return + [140] return to:@return -play_move_rotate: scope:[play_move_rotate] from main::@27 - [147] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 +play_movement: scope:[play_movement] from main::@7 + [141] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 + [142] call play_move_down + [143] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 + to:play_movement::@5 +play_movement::@5: scope:[play_movement] from play_movement + [144] (byte~) play_movement::$0 ← (byte) play_move_down::return#0 + [145] (byte) play_movement::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_movement::$0 + [146] if((byte) game_over#14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 + to:play_movement::@return +play_movement::@return: scope:[play_movement] from play_movement::@5 play_movement::@7 + [147] (byte) current_xpos#17 ← phi( play_movement::@5/(byte) current_xpos#20 play_movement::@7/(byte) current_xpos#24 ) + [147] (byte*) current_piece_gfx#16 ← phi( play_movement::@5/(byte*) current_piece_gfx#18 play_movement::@7/(byte*) current_piece_gfx#19 ) + [147] (byte) current_orientation#16 ← phi( play_movement::@5/(byte) current_orientation#19 play_movement::@7/(byte) current_orientation#24 ) + [147] (byte) play_movement::return#2 ← phi( play_movement::@5/(byte) play_movement::render#1 play_movement::@7/(byte) play_movement::return#0 ) + [148] return + to:@return +play_movement::@1: scope:[play_movement] from play_movement::@5 + [149] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 + [150] call play_move_leftright + [151] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + to:play_movement::@6 +play_movement::@6: scope:[play_movement] from play_movement::@1 + [152] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 + [153] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 + [154] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 + [155] call play_move_rotate + [156] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + to:play_movement::@7 +play_movement::@7: scope:[play_movement] from play_movement::@6 + [157] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 + [158] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 + to:play_movement::@return +play_move_rotate: scope:[play_move_rotate] from play_movement::@6 + [159] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 to:play_move_rotate::@6 play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate - [148] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 + [160] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 to:play_move_rotate::@return play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 play_move_rotate::@14 play_move_rotate::@6 - [149] (byte*) current_piece_gfx#14 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#3 play_move_rotate::@14/(byte*) current_piece_gfx#1 play_move_rotate::@6/(byte*) current_piece_gfx#1 ) - [149] (byte) current_orientation#19 ← phi( play_move_rotate::@11/(byte) current_orientation#4 play_move_rotate::@14/(byte) current_orientation#14 play_move_rotate::@6/(byte) current_orientation#14 ) - [149] (byte) play_move_rotate::return#1 ← phi( play_move_rotate::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [150] return + [161] (byte*) current_piece_gfx#19 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#6 play_move_rotate::@14/(byte*) current_piece_gfx#18 play_move_rotate::@6/(byte*) current_piece_gfx#18 ) + [161] (byte) current_orientation#24 ← phi( play_move_rotate::@11/(byte) current_orientation#7 play_move_rotate::@14/(byte) current_orientation#19 play_move_rotate::@6/(byte) current_orientation#19 ) + [161] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [162] return to:@return play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 - [151] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 - [152] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 + [163] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#19 + (byte/signed byte/word/signed word/dword/signed dword) 16 + [164] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 to:play_move_rotate::@4 play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 - [153] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) - [154] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 - [155] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 - [156] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [157] (byte*~) current_piece#79 ← (byte*) current_piece#10 - [158] call play_collision - [159] (byte) play_collision::return#13 ← (byte) play_collision::return#14 + [165] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) + [166] (byte) play_collision::xpos#3 ← (byte) current_xpos#24 + [167] (byte) play_collision::ypos#3 ← (byte) current_ypos#17 + [168] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [169] (byte*~) current_piece#92 ← (byte*) current_piece#14 + [170] call play_collision + [171] (byte) play_collision::return#14 ← (byte) play_collision::return#15 to:play_move_rotate::@14 play_move_rotate::@14: scope:[play_move_rotate] from play_move_rotate::@4 - [160] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 - [161] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return + [172] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#14 + [173] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return to:play_move_rotate::@11 play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 - [162] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 - [163] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 + [174] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 + [175] (byte*) current_piece_gfx#6 ← (byte*) current_piece#14 + (byte) current_orientation#7 to:play_move_rotate::@return play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - [164] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 - [165] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 + [176] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#19 - (byte/signed byte/word/signed word/dword/signed dword) 16 + [177] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 to:play_move_rotate::@4 -play_collision: scope:[play_collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 - [166] (byte) play_collision::xpos#5 ← phi( play_move_down::@12/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@7/(byte) play_collision::xpos#2 play_move_rotate::@4/(byte) play_collision::xpos#3 ) - [166] (byte) play_collision::ypos#4 ← phi( play_move_down::@12/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@7/(byte) play_collision::ypos#2 play_move_rotate::@4/(byte) play_collision::ypos#3 ) - [166] (byte) play_collision::orientation#4 ← phi( play_move_down::@12/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@7/(byte) play_collision::orientation#2 play_move_rotate::@4/(byte) play_collision::orientation#3 ) - [166] (byte*) current_piece#12 ← phi( play_move_down::@12/(byte*~) current_piece#76 play_move_leftright::@1/(byte*~) current_piece#77 play_move_leftright::@7/(byte*~) current_piece#78 play_move_rotate::@4/(byte*~) current_piece#79 ) - [167] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 - [168] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 +play_collision: scope:[play_collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 play_spawn_current::@3 + [178] (byte) play_collision::xpos#6 ← phi( play_move_down::@12/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@7/(byte) play_collision::xpos#2 play_move_rotate::@4/(byte) play_collision::xpos#3 play_spawn_current::@3/(byte) play_collision::xpos#4 ) + [178] (byte) play_collision::ypos#5 ← phi( play_move_down::@12/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@7/(byte) play_collision::ypos#2 play_move_rotate::@4/(byte) play_collision::ypos#3 play_spawn_current::@3/(byte) play_collision::ypos#4 ) + [178] (byte) play_collision::orientation#5 ← phi( play_move_down::@12/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@7/(byte) play_collision::orientation#2 play_move_rotate::@4/(byte) play_collision::orientation#3 play_spawn_current::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [178] (byte*) current_piece#16 ← phi( play_move_down::@12/(byte*~) current_piece#89 play_move_leftright::@1/(byte*~) current_piece#90 play_move_leftright::@7/(byte*~) current_piece#91 play_move_rotate::@4/(byte*~) current_piece#92 play_spawn_current::@3/(byte*~) current_piece#93 ) + [179] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#16 + (byte) play_collision::orientation#5 + [180] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_collision::@1 play_collision::@1: scope:[play_collision] from play_collision play_collision::@20 - [169] (byte) play_collision::l#6 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte) play_collision::l#1 ) - [169] (byte) play_collision::i#3 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte~) play_collision::i#11 ) - [169] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@20/(byte) play_collision::ypos2#1 ) - [170] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) - [171] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 + [181] (byte) play_collision::l#6 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte) play_collision::l#1 ) + [181] (byte) play_collision::i#3 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte~) play_collision::i#11 ) + [181] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@20/(byte) play_collision::ypos2#1 ) + [182] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) + [183] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 to:play_collision::@2 play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@21 - [172] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@21/(byte) play_collision::c#1 ) - [172] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@21/(byte) play_collision::col#1 ) - [172] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@21/(byte~) play_collision::i#13 ) - [173] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 - [174] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 + [184] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@21/(byte) play_collision::c#1 ) + [184] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@21/(byte) play_collision::col#1 ) + [184] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@21/(byte~) play_collision::i#13 ) + [185] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 + [186] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 to:play_collision::@8 play_collision::@8: scope:[play_collision] from play_collision::@2 - [175] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 + [187] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 to:play_collision::@return play_collision::@return: scope:[play_collision] from play_collision::@17 play_collision::@4 play_collision::@5 play_collision::@6 play_collision::@8 - [176] (byte) play_collision::return#14 ← phi( play_collision::@4/(const byte) COLLISION_LEFT#0 play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@17/(const byte) COLLISION_NONE#0 play_collision::@8/(const byte) COLLISION_BOTTOM#0 ) - [177] return + [188] (byte) play_collision::return#15 ← phi( play_collision::@4/(const byte) COLLISION_LEFT#0 play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@17/(const byte) COLLISION_NONE#0 play_collision::@8/(const byte) COLLISION_BOTTOM#0 ) + [189] return to:@return play_collision::@4: scope:[play_collision] from play_collision::@8 - [178] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 - [179] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 + [190] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 + [191] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 to:play_collision::@return play_collision::@5: scope:[play_collision] from play_collision::@4 - [180] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 + [192] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 to:play_collision::@return play_collision::@6: scope:[play_collision] from play_collision::@5 - [181] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 + [193] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 to:play_collision::@return play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@6 - [182] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 - [183] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 - [184] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 + [194] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 + [195] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 + [196] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 to:play_collision::@17 play_collision::@17: scope:[play_collision] from play_collision::@3 - [185] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [186] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 - [187] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 + [197] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [198] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 + [199] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 to:play_collision::@return play_collision::@20: scope:[play_collision] from play_collision::@17 - [188] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 + [200] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 to:play_collision::@1 play_collision::@21: scope:[play_collision] from play_collision::@3 - [189] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 + [201] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 to:play_collision::@2 -play_move_leftright: scope:[play_move_leftright] from main::@26 - [190] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 +play_move_leftright: scope:[play_move_leftright] from play_movement::@1 + [202] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 to:play_move_leftright::@6 play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright - [191] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return + [203] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return to:play_move_leftright::@7 play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@6 - [192] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [193] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 - [194] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 - [195] (byte*~) current_piece#78 ← (byte*) current_piece#10 - [196] call play_collision - [197] (byte) play_collision::return#12 ← (byte) play_collision::return#14 + [204] (byte) play_collision::xpos#2 ← (byte) current_xpos#20 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [205] (byte) play_collision::ypos#2 ← (byte) current_ypos#17 + [206] (byte) play_collision::orientation#2 ← (byte) current_orientation#19 + [207] (byte*~) current_piece#91 ← (byte*) current_piece#14 + [208] call play_collision + [209] (byte) play_collision::return#13 ← (byte) play_collision::return#15 to:play_move_leftright::@15 play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright::@7 - [198] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 - [199] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [210] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 + [211] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@8 play_move_leftright::@8: scope:[play_move_leftright] from play_move_leftright::@15 - [200] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 + [212] (byte) current_xpos#5 ← ++ (byte) current_xpos#20 to:play_move_leftright::@return play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@11 play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 play_move_leftright::@8 - [201] (byte) current_xpos#19 ← phi( play_move_leftright::@11/(byte) current_xpos#4 play_move_leftright::@15/(byte) current_xpos#1 play_move_leftright::@8/(byte) current_xpos#2 play_move_leftright::@14/(byte) current_xpos#1 play_move_leftright::@6/(byte) current_xpos#1 ) - [201] (byte) play_move_leftright::return#1 ← phi( play_move_leftright::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [202] return + [213] (byte) current_xpos#24 ← phi( play_move_leftright::@11/(byte) current_xpos#7 play_move_leftright::@15/(byte) current_xpos#20 play_move_leftright::@8/(byte) current_xpos#5 play_move_leftright::@14/(byte) current_xpos#20 play_move_leftright::@6/(byte) current_xpos#20 ) + [213] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [214] return to:@return play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - [203] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 - [204] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 - [205] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 - [206] (byte*~) current_piece#77 ← (byte*) current_piece#10 - [207] call play_collision - [208] (byte) play_collision::return#1 ← (byte) play_collision::return#14 + [215] (byte) play_collision::xpos#1 ← (byte) current_xpos#20 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [216] (byte) play_collision::ypos#1 ← (byte) current_ypos#17 + [217] (byte) play_collision::orientation#1 ← (byte) current_orientation#19 + [218] (byte*~) current_piece#90 ← (byte*) current_piece#14 + [219] call play_collision + [220] (byte) play_collision::return#1 ← (byte) play_collision::return#15 to:play_move_leftright::@14 play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright::@1 - [209] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - [210] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [221] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + [222] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@11 play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright::@14 - [211] (byte) current_xpos#4 ← -- (byte) current_xpos#1 + [223] (byte) current_xpos#7 ← -- (byte) current_xpos#20 to:play_move_leftright::@return -play_move_down: scope:[play_move_down] from main::@25 - [212] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 - [213] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 +play_move_down: scope:[play_move_down] from play_movement + [224] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 + [225] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 to:play_move_down::@8 play_move_down::@8: scope:[play_move_down] from play_move_down - [214] phi() + [226] phi() to:play_move_down::@1 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@8 - [215] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [216] call keyboard_event_pressed - [217] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + [227] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [228] call keyboard_event_pressed + [229] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 to:play_move_down::@17 play_move_down::@17: scope:[play_move_down] from play_move_down::@1 - [218] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - [219] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 + [230] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + [231] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 to:play_move_down::@9 play_move_down::@9: scope:[play_move_down] from play_move_down::@17 - [220] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 + [232] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 to:play_move_down::@10 play_move_down::@10: scope:[play_move_down] from play_move_down::@9 - [221] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 + [233] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 to:play_move_down::@2 play_move_down::@2: scope:[play_move_down] from play_move_down::@10 play_move_down::@17 play_move_down::@9 - [222] (byte) play_move_down::movedown#7 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@9/(byte) play_move_down::movedown#10 ) - [223] if((byte) current_movedown_counter#1<(byte) current_movedown_slow#12) goto play_move_down::@4 + [234] (byte) play_move_down::movedown#7 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@9/(byte) play_move_down::movedown#10 ) + [235] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@4 to:play_move_down::@11 play_move_down::@11: scope:[play_move_down] from play_move_down::@2 - [224] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + [236] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 to:play_move_down::@4 play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_down::@2 - [225] (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#7 ) - [226] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return + [237] (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#7 ) + [238] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return to:play_move_down::@12 play_move_down::@12: scope:[play_move_down] from play_move_down::@4 - [227] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [228] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 - [229] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 - [230] (byte*~) current_piece#76 ← (byte*) current_piece#16 - [231] call play_collision - [232] (byte) play_collision::return#0 ← (byte) play_collision::return#14 + [239] (byte) play_collision::ypos#0 ← (byte) current_ypos#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [240] (byte) play_collision::xpos#0 ← (byte) current_xpos#115 + [241] (byte) play_collision::orientation#0 ← (byte) current_orientation#12 + [242] (byte*~) current_piece#89 ← (byte*) current_piece#20 + [243] call play_collision + [244] (byte) play_collision::return#0 ← (byte) play_collision::return#15 to:play_move_down::@18 play_move_down::@18: scope:[play_move_down] from play_move_down::@12 - [233] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - [234] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 + [245] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + [246] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 to:play_move_down::@13 play_move_down::@13: scope:[play_move_down] from play_move_down::@18 - [235] phi() - [236] call play_lock_current + [247] phi() + [248] call play_lock_current to:play_move_down::@19 play_move_down::@19: scope:[play_move_down] from play_move_down::@13 - [237] phi() - [238] call play_remove_lines - [239] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 + [249] phi() + [250] call play_remove_lines + [251] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 to:play_move_down::@20 play_move_down::@20: scope:[play_move_down] from play_move_down::@19 - [240] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 - [241] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 - [242] call play_update_score + [252] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 + [253] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 + [254] call play_update_score to:play_move_down::@21 play_move_down::@21: scope:[play_move_down] from play_move_down::@20 - [243] phi() - [244] call play_spawn_current - [245] (byte*~) current_piece#80 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + [255] phi() + [256] call play_spawn_current + [257] (byte*~) current_piece#94 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@21 play_move_down::@6 - [246] (byte) current_piece_char#20 ← phi( play_move_down::@21/(byte) current_piece_char#12 play_move_down::@6/(byte) current_piece_char#15 ) - [246] (byte) current_xpos#33 ← phi( play_move_down::@21/(byte) current_xpos#23 play_move_down::@6/(byte) current_xpos#10 ) - [246] (byte*) current_piece_gfx#26 ← phi( play_move_down::@21/(byte*) current_piece_gfx#16 play_move_down::@6/(byte*) current_piece_gfx#20 ) - [246] (byte) current_orientation#29 ← phi( play_move_down::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_orientation#10 ) - [246] (byte*) current_piece#20 ← phi( play_move_down::@21/(byte*~) current_piece#80 play_move_down::@6/(byte*) current_piece#16 ) - [246] (byte) level_bcd#25 ← phi( play_move_down::@21/(byte) level_bcd#15 play_move_down::@6/(byte) level_bcd#20 ) - [246] (byte) current_movedown_slow#31 ← phi( play_move_down::@21/(byte) current_movedown_slow#19 play_move_down::@6/(byte) current_movedown_slow#12 ) - [246] (byte) level#24 ← phi( play_move_down::@21/(byte) level#14 play_move_down::@6/(byte) level#19 ) - [246] (dword) score_bcd#20 ← phi( play_move_down::@21/(dword) score_bcd#12 play_move_down::@6/(dword) score_bcd#14 ) - [246] (word) lines_bcd#20 ← phi( play_move_down::@21/(word) lines_bcd#13 play_move_down::@6/(word) lines_bcd#15 ) - [246] (byte) current_ypos#29 ← phi( play_move_down::@21/(byte) current_ypos#18 play_move_down::@6/(byte) current_ypos#0 ) + [258] (byte) game_over#26 ← phi( play_move_down::@21/(byte) game_over#15 play_move_down::@6/(byte) game_over#19 ) + [258] (byte) current_xpos#41 ← phi( play_move_down::@21/(byte) current_xpos#28 play_move_down::@6/(byte) current_xpos#115 ) + [258] (byte*) current_piece_gfx#33 ← phi( play_move_down::@21/(byte*) current_piece_gfx#21 play_move_down::@6/(byte*) current_piece_gfx#105 ) + [258] (byte) current_orientation#36 ← phi( play_move_down::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_orientation#12 ) + [258] (byte) current_piece_char#27 ← phi( play_move_down::@21/(byte) current_piece_char#16 play_move_down::@6/(byte) current_piece_char#19 ) + [258] (byte*) current_piece#27 ← phi( play_move_down::@21/(byte*~) current_piece#94 play_move_down::@6/(byte*) current_piece#20 ) + [258] (byte) level_bcd#32 ← phi( play_move_down::@21/(byte) level_bcd#19 play_move_down::@6/(byte) level_bcd#11 ) + [258] (byte) current_movedown_slow#38 ← phi( play_move_down::@21/(byte) current_movedown_slow#23 play_move_down::@6/(byte) current_movedown_slow#14 ) + [258] (byte) level#31 ← phi( play_move_down::@21/(byte) level#18 play_move_down::@6/(byte) level#10 ) + [258] (dword) score_bcd#27 ← phi( play_move_down::@21/(dword) score_bcd#16 play_move_down::@6/(dword) score_bcd#18 ) + [258] (word) lines_bcd#27 ← phi( play_move_down::@21/(word) lines_bcd#17 play_move_down::@6/(word) lines_bcd#19 ) + [258] (byte) current_ypos#36 ← phi( play_move_down::@21/(byte) current_ypos#22 play_move_down::@6/(byte) current_ypos#2 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@4 play_move_down::@7 - [247] (byte) current_piece_char#1 ← phi( play_move_down::@4/(byte) current_piece_char#15 play_move_down::@7/(byte) current_piece_char#20 ) - [247] (byte) current_xpos#1 ← phi( play_move_down::@4/(byte) current_xpos#10 play_move_down::@7/(byte) current_xpos#33 ) - [247] (byte*) current_piece_gfx#1 ← phi( play_move_down::@4/(byte*) current_piece_gfx#20 play_move_down::@7/(byte*) current_piece_gfx#26 ) - [247] (byte) current_orientation#14 ← phi( play_move_down::@4/(byte) current_orientation#10 play_move_down::@7/(byte) current_orientation#29 ) - [247] (byte*) current_piece#10 ← phi( play_move_down::@4/(byte*) current_piece#16 play_move_down::@7/(byte*) current_piece#20 ) - [247] (byte) level_bcd#13 ← phi( play_move_down::@4/(byte) level_bcd#20 play_move_down::@7/(byte) level_bcd#25 ) - [247] (byte) current_movedown_slow#17 ← phi( play_move_down::@4/(byte) current_movedown_slow#12 play_move_down::@7/(byte) current_movedown_slow#31 ) - [247] (byte) level#12 ← phi( play_move_down::@4/(byte) level#19 play_move_down::@7/(byte) level#24 ) - [247] (dword) score_bcd#10 ← phi( play_move_down::@4/(dword) score_bcd#14 play_move_down::@7/(dword) score_bcd#20 ) - [247] (word) lines_bcd#11 ← phi( play_move_down::@4/(word) lines_bcd#15 play_move_down::@7/(word) lines_bcd#20 ) - [247] (byte) current_ypos#13 ← phi( play_move_down::@4/(byte) current_ypos#21 play_move_down::@7/(byte) current_ypos#29 ) - [247] (byte) current_movedown_counter#10 ← phi( play_move_down::@4/(byte) current_movedown_counter#1 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [247] (byte) play_move_down::return#2 ← phi( play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [248] return + [259] (byte) game_over#14 ← phi( play_move_down::@4/(byte) game_over#19 play_move_down::@7/(byte) game_over#26 ) + [259] (byte) current_xpos#20 ← phi( play_move_down::@4/(byte) current_xpos#115 play_move_down::@7/(byte) current_xpos#41 ) + [259] (byte*) current_piece_gfx#18 ← phi( play_move_down::@4/(byte*) current_piece_gfx#105 play_move_down::@7/(byte*) current_piece_gfx#33 ) + [259] (byte) current_orientation#19 ← phi( play_move_down::@4/(byte) current_orientation#12 play_move_down::@7/(byte) current_orientation#36 ) + [259] (byte) current_piece_char#14 ← phi( play_move_down::@4/(byte) current_piece_char#19 play_move_down::@7/(byte) current_piece_char#27 ) + [259] (byte*) current_piece#14 ← phi( play_move_down::@4/(byte*) current_piece#20 play_move_down::@7/(byte*) current_piece#27 ) + [259] (byte) level_bcd#17 ← phi( play_move_down::@4/(byte) level_bcd#11 play_move_down::@7/(byte) level_bcd#32 ) + [259] (byte) current_movedown_slow#21 ← phi( play_move_down::@4/(byte) current_movedown_slow#14 play_move_down::@7/(byte) current_movedown_slow#38 ) + [259] (byte) level#16 ← phi( play_move_down::@4/(byte) level#10 play_move_down::@7/(byte) level#31 ) + [259] (dword) score_bcd#14 ← phi( play_move_down::@4/(dword) score_bcd#18 play_move_down::@7/(dword) score_bcd#27 ) + [259] (word) lines_bcd#15 ← phi( play_move_down::@4/(word) lines_bcd#19 play_move_down::@7/(word) lines_bcd#27 ) + [259] (byte) current_ypos#17 ← phi( play_move_down::@4/(byte) current_ypos#25 play_move_down::@7/(byte) current_ypos#36 ) + [259] (byte) current_movedown_counter#14 ← phi( play_move_down::@4/(byte) current_movedown_counter#12 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [259] (byte) play_move_down::return#3 ← phi( play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [260] return to:@return play_move_down::@6: scope:[play_move_down] from play_move_down::@18 - [249] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 + [261] (byte) current_ypos#2 ← ++ (byte) current_ypos#25 to:play_move_down::@7 -play_spawn_current: scope:[play_spawn_current] from main::@19 play_move_down::@21 - [250] phi() +play_spawn_current: scope:[play_spawn_current] from main::@29 play_move_down::@21 + [262] (byte) game_over#69 ← phi( main::@29/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@21/(byte) game_over#19 ) to:play_spawn_current::@1 -play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current play_spawn_current::@7 - [251] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 7 play_spawn_current::@7/(byte) play_spawn_current::piece_idx#1 ) - [252] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 +play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current play_spawn_current::@9 + [263] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 7 play_spawn_current::@9/(byte) play_spawn_current::piece_idx#1 ) + [264] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 to:play_spawn_current::@3 play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::@1 - [253] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [254] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 - [255] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) - [256] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) - [257] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) + [265] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [266] (byte) current_piece_char#16 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) + [267] (byte*) current_piece_gfx#21 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 + [268] (byte) current_xpos#28 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) + [269] (byte) current_ypos#22 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) + [270] (byte) play_collision::xpos#4 ← (byte) current_xpos#28 + [271] (byte) play_collision::ypos#4 ← (byte) current_ypos#22 + [272] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + [273] call play_collision + [274] (byte) play_collision::return#10 ← (byte) play_collision::return#15 + to:play_spawn_current::@10 +play_spawn_current::@10: scope:[play_spawn_current] from play_spawn_current::@3 + [275] (byte~) play_spawn_current::$5 ← (byte) play_collision::return#10 + [276] if((byte~) play_spawn_current::$5!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@11 to:play_spawn_current::@return -play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@3 - [258] return +play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@10 play_spawn_current::@11 + [277] (byte) game_over#15 ← phi( play_spawn_current::@11/(byte) game_over#69 play_spawn_current::@10/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [278] return to:@return +play_spawn_current::@11: scope:[play_spawn_current] from play_spawn_current::@10 + [279] phi() + to:play_spawn_current::@return play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 - [259] phi() - [260] call sid_rnd - [261] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 - to:play_spawn_current::@7 -play_spawn_current::@7: scope:[play_spawn_current] from play_spawn_current::@2 - [262] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 - [263] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [280] phi() + [281] call sid_rnd + [282] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + to:play_spawn_current::@9 +play_spawn_current::@9: scope:[play_spawn_current] from play_spawn_current::@2 + [283] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + [284] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 to:play_spawn_current::@1 sid_rnd: scope:[sid_rnd] from play_spawn_current::@2 - [264] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) + [285] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) to:sid_rnd::@return sid_rnd::@return: scope:[sid_rnd] from sid_rnd - [265] return + [286] return to:@return play_update_score: scope:[play_update_score] from play_move_down::@20 - [266] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return + [287] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return to:play_update_score::@3 play_update_score::@3: scope:[play_update_score] from play_update_score - [267] (byte~) play_update_score::$2 ← < (word) lines_bcd#15 - [268] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 - [269] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 - [270] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) + [288] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 + [289] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 + [290] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 + [291] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) asm { sed } - [272] (word) lines_bcd#23 ← (word) lines_bcd#15 + (byte) play_update_score::removed#0 - [273] (dword) score_bcd#23 ← (dword) score_bcd#14 + (dword) play_update_score::add_bcd#0 + [293] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 + [294] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 asm { cld } - [275] (byte~) play_update_score::$5 ← < (word) lines_bcd#23 - [276] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 - [277] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return + [296] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 + [297] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 + [298] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return to:play_update_score::@4 play_update_score::@4: scope:[play_update_score] from play_update_score::@3 - [278] phi() - [279] call play_increase_level + [299] phi() + [300] call play_increase_level to:play_update_score::@return play_update_score::@return: scope:[play_update_score] from play_update_score play_update_score::@3 play_update_score::@4 - [280] (byte) level_bcd#15 ← phi( play_update_score/(byte) level_bcd#20 play_update_score::@3/(byte) level_bcd#20 play_update_score::@4/(byte) level_bcd#55 ) - [280] (byte) current_movedown_slow#19 ← phi( play_update_score/(byte) current_movedown_slow#12 play_update_score::@3/(byte) current_movedown_slow#12 play_update_score::@4/(byte) current_movedown_slow#60 ) - [280] (byte) level#14 ← phi( play_update_score/(byte) level#19 play_update_score::@3/(byte) level#19 play_update_score::@4/(byte) level#16 ) - [280] (dword) score_bcd#12 ← phi( play_update_score/(dword) score_bcd#14 play_update_score::@3/(dword) score_bcd#23 play_update_score::@4/(dword) score_bcd#23 ) - [280] (word) lines_bcd#13 ← phi( play_update_score/(word) lines_bcd#15 play_update_score::@3/(word) lines_bcd#23 play_update_score::@4/(word) lines_bcd#23 ) - [281] return + [301] (byte) level_bcd#19 ← phi( play_update_score/(byte) level_bcd#11 play_update_score::@3/(byte) level_bcd#11 play_update_score::@4/(byte) level_bcd#63 ) + [301] (byte) current_movedown_slow#23 ← phi( play_update_score/(byte) current_movedown_slow#14 play_update_score::@3/(byte) current_movedown_slow#14 play_update_score::@4/(byte) current_movedown_slow#68 ) + [301] (byte) level#18 ← phi( play_update_score/(byte) level#10 play_update_score::@3/(byte) level#10 play_update_score::@4/(byte) level#20 ) + [301] (dword) score_bcd#16 ← phi( play_update_score/(dword) score_bcd#18 play_update_score::@3/(dword) score_bcd#30 play_update_score::@4/(dword) score_bcd#30 ) + [301] (word) lines_bcd#17 ← phi( play_update_score/(word) lines_bcd#19 play_update_score::@3/(word) lines_bcd#30 play_update_score::@4/(word) lines_bcd#30 ) + [302] return to:@return play_increase_level: scope:[play_increase_level] from play_update_score::@4 - [282] (byte) level#16 ← ++ (byte) level#19 - [283] if((byte) level#16>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 + [303] (byte) level#20 ← ++ (byte) level#10 + [304] if((byte) level#20>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 to:play_increase_level::@5 play_increase_level::@5: scope:[play_increase_level] from play_increase_level - [284] (byte) current_movedown_slow#8 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#16) + [305] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#20) to:play_increase_level::@2 play_increase_level::@2: scope:[play_increase_level] from play_increase_level play_increase_level::@5 - [285] (byte) current_movedown_slow#60 ← phi( play_increase_level/(byte/signed byte/word/signed word/dword/signed dword) 1 play_increase_level::@5/(byte) current_movedown_slow#8 ) - [286] (byte) level_bcd#17 ← ++ (byte) level_bcd#20 - [287] (byte~) play_increase_level::$1 ← (byte) level_bcd#17 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [288] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 + [306] (byte) current_movedown_slow#68 ← phi( play_increase_level/(byte/signed byte/word/signed word/dword/signed dword) 1 play_increase_level::@5/(byte) current_movedown_slow#10 ) + [307] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 + [308] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [309] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 to:play_increase_level::@7 play_increase_level::@7: scope:[play_increase_level] from play_increase_level::@2 - [289] (byte) level_bcd#6 ← (byte) level_bcd#17 + (byte/signed byte/word/signed word/dword/signed dword) 6 + [310] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 to:play_increase_level::@3 play_increase_level::@3: scope:[play_increase_level] from play_increase_level::@2 play_increase_level::@7 - [290] (byte) level_bcd#55 ← phi( play_increase_level::@2/(byte) level_bcd#17 play_increase_level::@7/(byte) level_bcd#6 ) + [311] (byte) level_bcd#63 ← phi( play_increase_level::@2/(byte) level_bcd#21 play_increase_level::@7/(byte) level_bcd#8 ) asm { sed } to:play_increase_level::@4 play_increase_level::@4: scope:[play_increase_level] from play_increase_level::@3 play_increase_level::@4 - [292] (byte) play_increase_level::b#2 ← phi( play_increase_level::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 play_increase_level::@4/(byte) play_increase_level::b#1 ) - [293] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 - [294] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) - [295] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 - [296] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 + [313] (byte) play_increase_level::b#2 ← phi( play_increase_level::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 play_increase_level::@4/(byte) play_increase_level::b#1 ) + [314] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 + [315] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) + [316] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 + [317] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 to:play_increase_level::@8 play_increase_level::@8: scope:[play_increase_level] from play_increase_level::@4 asm { cld } to:play_increase_level::@return play_increase_level::@return: scope:[play_increase_level] from play_increase_level::@8 - [298] return + [319] return to:@return play_remove_lines: scope:[play_remove_lines] from play_move_down::@19 - [299] phi() + [320] phi() to:play_remove_lines::@1 play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@4 - [300] (byte) play_remove_lines::removed#11 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@4/(byte) play_remove_lines::removed#7 ) - [300] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@4/(byte) play_remove_lines::y#1 ) - [300] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::w#11 ) - [300] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::r#1 ) + [321] (byte) play_remove_lines::removed#11 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@4/(byte) play_remove_lines::removed#7 ) + [321] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@4/(byte) play_remove_lines::y#1 ) + [321] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::w#11 ) + [321] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::r#1 ) to:play_remove_lines::@2 play_remove_lines::@2: scope:[play_remove_lines] from play_remove_lines::@1 play_remove_lines::@3 - [301] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 ) - [301] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) - [301] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) - [301] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 ) - [302] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) - [303] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 - [304] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 + [322] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 ) + [322] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) + [322] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) + [322] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 ) + [323] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) + [324] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 + [325] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 to:play_remove_lines::@3 play_remove_lines::@3: scope:[play_remove_lines] from play_remove_lines::@18 play_remove_lines::@2 - [305] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@18/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [306] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 - [307] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 - [308] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 - [309] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 + [326] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@18/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [327] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 + [328] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 + [329] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 + [330] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 to:play_remove_lines::@9 play_remove_lines::@9: scope:[play_remove_lines] from play_remove_lines::@3 - [310] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 + [331] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 to:play_remove_lines::@10 play_remove_lines::@10: scope:[play_remove_lines] from play_remove_lines::@9 - [311] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 - [312] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 + [332] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 + [333] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 to:play_remove_lines::@4 play_remove_lines::@4: scope:[play_remove_lines] from play_remove_lines::@10 play_remove_lines::@9 - [313] (byte) play_remove_lines::removed#7 ← phi( play_remove_lines::@10/(byte) play_remove_lines::removed#1 play_remove_lines::@9/(byte) play_remove_lines::removed#11 ) - [313] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@10/(byte) play_remove_lines::w#2 play_remove_lines::@9/(byte) play_remove_lines::w#1 ) - [314] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 - [315] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 + [334] (byte) play_remove_lines::removed#7 ← phi( play_remove_lines::@10/(byte) play_remove_lines::removed#1 play_remove_lines::@9/(byte) play_remove_lines::removed#11 ) + [334] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@10/(byte) play_remove_lines::w#2 play_remove_lines::@9/(byte) play_remove_lines::w#1 ) + [335] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 + [336] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 to:play_remove_lines::@5 play_remove_lines::@5: scope:[play_remove_lines] from play_remove_lines::@4 play_remove_lines::@6 - [316] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#11 play_remove_lines::@6/(byte) play_remove_lines::w#3 ) - [317] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 + [337] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#11 play_remove_lines::@6/(byte) play_remove_lines::w#3 ) + [338] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 to:play_remove_lines::@return play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@5 - [318] return + [339] return to:@return play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@5 - [319] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [320] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 + [340] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [341] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 to:play_remove_lines::@5 play_remove_lines::@18: scope:[play_remove_lines] from play_remove_lines::@2 - [321] phi() + [342] phi() to:play_remove_lines::@3 play_lock_current: scope:[play_lock_current] from play_move_down::@13 - [322] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [343] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#25 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_lock_current::@1 play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@7 - [323] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte) play_lock_current::l#1 ) - [323] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte~) play_lock_current::i#7 ) - [323] (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@7/(byte) play_lock_current::ypos2#1 ) - [324] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) - [325] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 + [344] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte) play_lock_current::l#1 ) + [344] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte~) play_lock_current::i#7 ) + [344] (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@7/(byte) play_lock_current::ypos2#1 ) + [345] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) + [346] (byte) play_lock_current::col#0 ← (byte) current_xpos#115 to:play_lock_current::@2 play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@8 - [326] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@8/(byte) play_lock_current::c#1 ) - [326] (byte) play_lock_current::col#2 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@8/(byte) play_lock_current::col#1 ) - [326] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@8/(byte~) play_lock_current::i#9 ) - [327] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 - [328] if(*((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 + [347] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@8/(byte) play_lock_current::c#1 ) + [347] (byte) play_lock_current::col#2 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@8/(byte) play_lock_current::col#1 ) + [347] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@8/(byte~) play_lock_current::i#9 ) + [348] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 + [349] if(*((byte*) current_piece_gfx#105 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 to:play_lock_current::@4 play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 - [329] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 + [350] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#19 to:play_lock_current::@3 play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 - [330] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 - [331] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 - [332] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 + [351] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 + [352] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 + [353] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 to:play_lock_current::@5 play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 - [333] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [334] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 - [335] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 + [354] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [355] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 + [356] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 to:play_lock_current::@return play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5 - [336] return + [357] return to:@return play_lock_current::@7: scope:[play_lock_current] from play_lock_current::@5 - [337] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 + [358] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 to:play_lock_current::@1 play_lock_current::@8: scope:[play_lock_current] from play_lock_current::@3 - [338] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 + [359] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 to:play_lock_current::@2 keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@10 keyboard_event_scan::@11 keyboard_event_scan::@20 keyboard_event_scan::@9 play_move_down::@1 - [339] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) - [340] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [341] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [342] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [343] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) + [360] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) + [361] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [362] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [363] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [364] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) to:keyboard_event_pressed::@return keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed - [344] return + [365] return to:@return -keyboard_event_get: scope:[keyboard_event_get] from main::@24 - [345] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return +keyboard_event_get: scope:[keyboard_event_get] from main::@34 + [366] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return to:keyboard_event_get::@3 keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get - [346] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [347] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [367] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [368] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) to:keyboard_event_get::@return keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@3 - [348] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) - [348] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) - [349] return + [369] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) + [369] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) + [370] return to:@return -keyboard_event_scan: scope:[keyboard_event_scan] from main::@23 - [350] phi() +keyboard_event_scan: scope:[keyboard_event_scan] from main::@33 + [371] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - [351] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) - [351] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) - [351] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) - [352] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [353] call keyboard_matrix_read - [354] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [372] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) + [372] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) + [372] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) + [373] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [374] call keyboard_matrix_read + [375] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_event_scan::@25 keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - [355] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [356] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 + [376] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [377] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 to:keyboard_event_scan::@13 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - [357] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 + [378] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@19 - [358] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [358] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) - [359] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [360] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 + [379] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [379] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) + [380] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [381] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 to:keyboard_event_scan::@20 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - [361] phi() - [362] call keyboard_event_pressed - [363] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + [382] phi() + [383] call keyboard_event_pressed + [384] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@26 keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - [364] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - [365] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 + [385] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + [386] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 to:keyboard_event_scan::@21 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - [366] phi() + [387] phi() to:keyboard_event_scan::@9 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - [367] (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@21/(byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 keyboard_event_scan::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [368] call keyboard_event_pressed - [369] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + [388] (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@21/(byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 keyboard_event_scan::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [389] call keyboard_event_pressed + [390] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@27 keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - [370] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - [371] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 + [391] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + [392] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 to:keyboard_event_scan::@22 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - [372] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 + [393] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - [373] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 ) - [374] call keyboard_event_pressed - [375] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + [394] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 ) + [395] call keyboard_event_pressed + [396] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@28 keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - [376] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - [377] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 + [397] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + [398] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 to:keyboard_event_scan::@23 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 - [378] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 + [399] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 to:keyboard_event_scan::@11 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 - [379] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 ) - [380] call keyboard_event_pressed - [381] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [400] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 ) + [401] call keyboard_event_pressed + [402] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@29 keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan::@11 - [382] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 - [383] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return + [403] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + [404] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@24 keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29 - [384] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 + [405] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29 - [385] return + [406] return to:@return keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@25 keyboard_event_scan::@5 - [386] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) - [386] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) - [386] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) - [387] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) - [388] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [389] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 + [407] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + [407] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) + [407] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) + [408] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) + [409] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [410] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 to:keyboard_event_scan::@15 keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@4 - [390] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 + [411] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 to:keyboard_event_scan::@16 keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15 - [391] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [392] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 + [412] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [413] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 to:keyboard_event_scan::@17 keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [393] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [394] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [414] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [415] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 - [395] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) - [396] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 - [397] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [398] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 + [416] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) + [417] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 + [418] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [419] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 to:keyboard_event_scan::@19 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@5 - [399] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [420] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 to:keyboard_event_scan::@3 keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [400] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 - [401] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 - [402] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [421] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 + [422] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 + [423] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1 - [403] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [404] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [424] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [425] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) to:keyboard_matrix_read::@return keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read - [405] return + [426] return to:@return render_show: scope:[render_show] from main::@6 - [406] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 + [427] if((byte) render_screen_show#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 to:render_show::toD0182 render_show::toD0182: scope:[render_show] from render_show - [407] phi() + [428] phi() to:render_show::@2 render_show::@2: scope:[render_show] from render_show::toD0181 render_show::toD0182 - [408] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) - [409] *((const byte*) D018#0) ← (byte) render_show::d018val#3 - [410] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 + [429] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) + [430] *((const byte*) D018#0) ← (byte) render_show::d018val#3 + [431] (byte) render_screen_showing#1 ← (byte) render_screen_show#17 to:render_show::@return render_show::@return: scope:[render_show] from render_show::@2 - [411] return + [432] return to:@return render_show::toD0181: scope:[render_show] from render_show - [412] phi() + [433] phi() to:render_show::@2 -play_init: scope:[play_init] from main::@18 - [413] phi() +play_init: scope:[play_init] from main::@28 + [434] phi() to:play_init::@1 play_init::@1: scope:[play_init] from play_init play_init::@1 - [414] (byte) play_init::idx#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::idx#1 ) - [414] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 ) - [414] (byte) play_init::j#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::j#1 ) - [415] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [416] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 - [417] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 - [418] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 - [419] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 - [420] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 - [421] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 + [435] (byte) play_init::idx#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::idx#1 ) + [435] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 ) + [435] (byte) play_init::j#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::j#1 ) + [436] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [437] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 + [438] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 + [439] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 + [440] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 + [441] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 + [442] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 to:play_init::@3 play_init::@3: scope:[play_init] from play_init::@1 - [422] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 - [423] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) + [443] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 + [444] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) to:play_init::@2 play_init::@2: scope:[play_init] from play_init::@2 play_init::@3 - [424] (byte) play_init::b#2 ← phi( play_init::@2/(byte) play_init::b#1 play_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [425] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 - [426] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) - [427] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 - [428] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 + [445] (byte) play_init::b#2 ← phi( play_init::@2/(byte) play_init::b#1 play_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [446] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 + [447] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) + [448] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 + [449] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 to:play_init::@return play_init::@return: scope:[play_init] from play_init::@2 - [429] return + [450] return to:@return -sprites_irq_init: scope:[sprites_irq_init] from main::@17 +sprites_irq_init: scope:[sprites_irq_init] from main::@27 asm { sei } - [431] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [452] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } - [433] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [434] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [435] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 - [436] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 - [437] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 - [438] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [439] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() + [454] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [455] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [456] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [457] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 + [458] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [459] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [460] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() asm { cli } to:sprites_irq_init::@return sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init - [441] return + [462] return to:@return -sprites_init: scope:[sprites_init] from main::@16 - [442] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 - [443] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [444] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) - [445] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) +sprites_init: scope:[sprites_init] from main::@26 + [463] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 + [464] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [465] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [466] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) to:sprites_init::@1 sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1 - [446] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) - [446] (byte) sprites_init::s#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 0 sprites_init::@1/(byte) sprites_init::s#1 ) - [447] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [448] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 - [449] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 - [450] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 - [451] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 - [452] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 + [467] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) + [467] (byte) sprites_init::s#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 0 sprites_init::@1/(byte) sprites_init::s#1 ) + [468] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [469] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [470] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [471] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + [472] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [473] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 to:sprites_init::@return sprites_init::@return: scope:[sprites_init] from sprites_init::@1 - [453] return + [474] return to:@return -render_init: scope:[render_init] from main::@15 - [454] phi() +render_init: scope:[render_init] from main::@25 + [475] phi() to:render_init::vicSelectGfxBank1 render_init::vicSelectGfxBank1: scope:[render_init] from render_init - [455] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + [476] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 to:render_init::vicSelectGfxBank1_toDd001 render_init::vicSelectGfxBank1_toDd001: scope:[render_init] from render_init::vicSelectGfxBank1 - [456] phi() + [477] phi() to:render_init::vicSelectGfxBank1_@1 render_init::vicSelectGfxBank1_@1: scope:[render_init] from render_init::vicSelectGfxBank1_toDd001 - [457] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 + [478] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 to:render_init::@3 render_init::@3: scope:[render_init] from render_init::vicSelectGfxBank1_@1 - [458] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 - [459] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 - [460] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 - [461] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 - [462] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 - [463] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 - [464] call render_screen_original + [479] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 + [480] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 + [481] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 + [482] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 + [483] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 + [484] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 + [485] call render_screen_original to:render_init::@4 render_init::@4: scope:[render_init] from render_init::@3 - [465] phi() - [466] call render_screen_original + [486] phi() + [487] call render_screen_original to:render_init::@1 render_init::@1: scope:[render_init] from render_init::@1 render_init::@4 - [467] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@4/(const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 ) - [467] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@4/(const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 ) - [467] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [468] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [469] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 - [470] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [471] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 - [472] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [473] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [474] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 - [475] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 + [488] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@4/(const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 ) + [488] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@4/(const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 ) + [488] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [489] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [490] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 + [491] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [492] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 + [493] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [494] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [495] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 + [496] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 to:render_init::@return render_init::@return: scope:[render_init] from render_init::@1 - [476] return + [497] return to:@return render_screen_original: scope:[render_screen_original] from render_init::@3 render_init::@4 - [477] (byte*) render_screen_original::screen#9 ← phi( render_init::@3/(const byte*) PLAYFIELD_SCREEN_1#0 render_init::@4/(const byte*) PLAYFIELD_SCREEN_2#0 ) + [498] (byte*) render_screen_original::screen#9 ← phi( render_init::@3/(const byte*) PLAYFIELD_SCREEN_1#0 render_init::@4/(const byte*) PLAYFIELD_SCREEN_2#0 ) to:render_screen_original::@1 render_screen_original::@1: scope:[render_screen_original] from render_screen_original render_screen_original::@7 - [478] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@7/(byte) render_screen_original::y#1 ) - [478] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@7/(byte*) render_screen_original::ocols#1 ) - [478] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@7/(byte*) render_screen_original::oscr#1 ) - [478] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@7/(byte*) render_screen_original::cols#3 ) - [478] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@7/(byte*) render_screen_original::screen#10 ) + [499] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@7/(byte) render_screen_original::y#1 ) + [499] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@7/(byte*) render_screen_original::ocols#1 ) + [499] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@7/(byte*) render_screen_original::oscr#1 ) + [499] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@7/(byte*) render_screen_original::cols#3 ) + [499] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@7/(byte*) render_screen_original::screen#10 ) to:render_screen_original::@2 render_screen_original::@2: scope:[render_screen_original] from render_screen_original::@1 render_screen_original::@2 - [479] (byte) render_screen_original::x#4 ← phi( render_screen_original::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@2/(byte) render_screen_original::x#1 ) - [479] (byte*) render_screen_original::cols#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::cols#7 render_screen_original::@2/(byte*) render_screen_original::cols#1 ) - [479] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#8 render_screen_original::@2/(byte*) render_screen_original::screen#2 ) - [480] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 - [481] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 - [482] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 - [483] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 - [484] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 - [485] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 + [500] (byte) render_screen_original::x#4 ← phi( render_screen_original::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@2/(byte) render_screen_original::x#1 ) + [500] (byte*) render_screen_original::cols#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::cols#7 render_screen_original::@2/(byte*) render_screen_original::cols#1 ) + [500] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#8 render_screen_original::@2/(byte*) render_screen_original::screen#2 ) + [501] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 + [502] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 + [503] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 + [504] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 + [505] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 + [506] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 to:render_screen_original::@3 render_screen_original::@3: scope:[render_screen_original] from render_screen_original::@2 render_screen_original::@3 - [486] (byte) render_screen_original::x#5 ← phi( render_screen_original::@2/(byte) render_screen_original::x#1 render_screen_original::@3/(byte) render_screen_original::x#2 ) - [486] (byte*) render_screen_original::cols#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::cols#1 render_screen_original::@3/(byte*) render_screen_original::cols#2 ) - [486] (byte*) render_screen_original::ocols#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::ocols#4 render_screen_original::@3/(byte*) render_screen_original::ocols#1 ) - [486] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#2 render_screen_original::@3/(byte*) render_screen_original::screen#3 ) - [486] (byte*) render_screen_original::oscr#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::oscr#4 render_screen_original::@3/(byte*) render_screen_original::oscr#1 ) - [487] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) - [488] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 - [489] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 - [490] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) - [491] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 - [492] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 - [493] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 - [494] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 + [507] (byte) render_screen_original::x#5 ← phi( render_screen_original::@2/(byte) render_screen_original::x#1 render_screen_original::@3/(byte) render_screen_original::x#2 ) + [507] (byte*) render_screen_original::cols#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::cols#1 render_screen_original::@3/(byte*) render_screen_original::cols#2 ) + [507] (byte*) render_screen_original::ocols#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::ocols#4 render_screen_original::@3/(byte*) render_screen_original::ocols#1 ) + [507] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#2 render_screen_original::@3/(byte*) render_screen_original::screen#3 ) + [507] (byte*) render_screen_original::oscr#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::oscr#4 render_screen_original::@3/(byte*) render_screen_original::oscr#1 ) + [508] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) + [509] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 + [510] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 + [511] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) + [512] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 + [513] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 + [514] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 + [515] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 to:render_screen_original::@4 render_screen_original::@4: scope:[render_screen_original] from render_screen_original::@3 render_screen_original::@4 - [495] (byte) render_screen_original::x#6 ← phi( render_screen_original::@3/(byte) render_screen_original::x#2 render_screen_original::@4/(byte) render_screen_original::x#3 ) - [495] (byte*) render_screen_original::cols#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::cols#2 render_screen_original::@4/(byte*) render_screen_original::cols#3 ) - [495] (byte*) render_screen_original::screen#7 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#3 render_screen_original::@4/(byte*) render_screen_original::screen#10 ) - [496] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 - [497] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 - [498] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 - [499] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 - [500] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 - [501] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 + [516] (byte) render_screen_original::x#6 ← phi( render_screen_original::@3/(byte) render_screen_original::x#2 render_screen_original::@4/(byte) render_screen_original::x#3 ) + [516] (byte*) render_screen_original::cols#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::cols#2 render_screen_original::@4/(byte*) render_screen_original::cols#3 ) + [516] (byte*) render_screen_original::screen#7 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#3 render_screen_original::@4/(byte*) render_screen_original::screen#10 ) + [517] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 + [518] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 + [519] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 + [520] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 + [521] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 + [522] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 to:render_screen_original::@7 render_screen_original::@7: scope:[render_screen_original] from render_screen_original::@4 - [502] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 - [503] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 + [523] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 + [524] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 to:render_screen_original::@return render_screen_original::@return: scope:[render_screen_original] from render_screen_original::@7 - [504] return + [525] return to:@return sid_rnd_init: scope:[sid_rnd_init] from main - [505] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 - [506] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 + [526] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 + [527] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 to:sid_rnd_init::@return sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init - [507] return + [528] return to:@return sprites_irq: scope:[sprites_irq] from asm { cld } - [509] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 - [510] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 - [511] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 - [512] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 - [513] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + [530] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [531] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 + [532] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 + [533] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 + [534] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + [535] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [536] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 to:sprites_irq::@1 sprites_irq::@1: scope:[sprites_irq] from sprites_irq sprites_irq::@1 - [514] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 - to:sprites_irq::@7 -sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@1 - [515] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [516] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 + [537] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 to:sprites_irq::@8 -sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@7 - [517] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 - [518] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 - [519] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 - [520] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 - [521] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 - [522] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 +sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@1 + [538] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [539] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 + to:sprites_irq::@9 +sprites_irq::@9: scope:[sprites_irq] from sprites_irq::@8 + [540] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 + [541] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 + [542] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 + [543] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 + [544] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + [545] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 to:sprites_irq::@3 -sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@8 - [523] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [524] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 - to:sprites_irq::@10 -sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@3 - [525] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [526] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [527] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 - to:sprites_irq::@5 -sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@10 sprites_irq::@13 - [528] (byte) irq_raster_next#13 ← phi( sprites_irq::@10/(byte) irq_raster_next#2 sprites_irq::@13/(byte) irq_raster_next#1 ) - [529] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 - [530] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [531] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 +sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@9 + [546] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [547] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 + to:sprites_irq::@11 +sprites_irq::@11: scope:[sprites_irq] from sprites_irq::@3 + [548] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 to:sprites_irq::@12 -sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@5 - [532] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 - to:sprites_irq::@6 -sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@5 - [533] (byte) sprites_irq::raster_next#2 ← phi( sprites_irq::@12/(byte) sprites_irq::raster_next#1 sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) - [534] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 - [535] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 +sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@11 + [549] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 + [550] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [551] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:sprites_irq::@7 +sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 + [552] (byte) irq_raster_next#4 ← phi( sprites_irq::@12/(byte) irq_raster_next#3 sprites_irq::@15/(byte) irq_raster_next#1 sprites_irq::@5/(byte) irq_raster_next#2 ) + [553] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 + [554] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:sprites_irq::@return -sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6 - [536] return +sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@7 + [555] return to:@return +sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@11 + [556] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [557] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 + [558] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [559] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:sprites_irq::@7 sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@3 - [537] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [538] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 - [539] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + [560] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [561] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 to:sprites_irq::toSpritePtr2 sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@4 - [540] phi() - to:sprites_irq::@13 -sprites_irq::@13: scope:[sprites_irq] from sprites_irq::toSpritePtr2 - [541] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 - to:sprites_irq::@5 -sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@7 - [542] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 - [543] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 - [544] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 - [545] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 - [546] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 - [547] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 + [562] phi() + to:sprites_irq::@15 +sprites_irq::@15: scope:[sprites_irq] from sprites_irq::toSpritePtr2 + [563] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 + to:sprites_irq::@7 +sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@8 + [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 + [565] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 + [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 + [567] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 + [568] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + [569] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 to:sprites_irq::@3 diff --git a/src/test/ref/examples/tetris/tetris.log b/src/test/ref/examples/tetris/tetris.log index 550b3cfd9..8dabf118c 100644 --- a/src/test/ref/examples/tetris/tetris.log +++ b/src/test/ref/examples/tetris/tetris.log @@ -7,15 +7,15 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa Inlined call call vicSelectGfxBank (byte*) PLAYFIELD_CHARSET Inlined call (byte~) render_show::$2 ← call toD018 (byte*) PLAYFIELD_SCREEN_1 (byte*) PLAYFIELD_CHARSET Inlined call (byte~) render_show::$1 ← call toD018 (byte*) PLAYFIELD_SCREEN_2 (byte*) PLAYFIELD_CHARSET -Inlined call (byte~) $4 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES -Inlined call (byte~) sprites_irq::$3 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES +Inlined call (byte~) $6 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES +Inlined call (byte~) sprites_irq::$5 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte) current_piece_char#86 ← phi( ) - (byte) current_ypos#82 ← phi( ) - (byte) current_xpos#108 ← phi( ) - (byte*) current_piece_gfx#98 ← phi( ) + (byte) current_ypos#96 ← phi( ) + (byte) current_xpos#122 ← phi( ) + (byte*) current_piece_gfx#112 ← phi( ) + (byte) current_piece_char#100 ← phi( ) (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -97,10 +97,10 @@ CONTROL FLOW GRAPH SSA (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 to:@5 @5: scope:[] from @begin - (byte) current_piece_char#85 ← phi( @begin/(byte) current_piece_char#86 ) - (byte) current_ypos#81 ← phi( @begin/(byte) current_ypos#82 ) - (byte) current_xpos#107 ← phi( @begin/(byte) current_xpos#108 ) - (byte*) current_piece_gfx#97 ← phi( @begin/(byte*) current_piece_gfx#98 ) + (byte) current_ypos#95 ← phi( @begin/(byte) current_ypos#96 ) + (byte) current_xpos#121 ← phi( @begin/(byte) current_xpos#122 ) + (byte*) current_piece_gfx#111 ← phi( @begin/(byte*) current_piece_gfx#112 ) + (byte) current_piece_char#99 ← phi( @begin/(byte) current_piece_char#100 ) (byte) KEY_DEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) KEY_RETURN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) KEY_CRSR_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -182,10 +182,10 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri return to:@return @9: scope:[] from @5 - (byte) current_piece_char#84 ← phi( @5/(byte) current_piece_char#85 ) - (byte) current_ypos#80 ← phi( @5/(byte) current_ypos#81 ) - (byte) current_xpos#106 ← phi( @5/(byte) current_xpos#107 ) - (byte*) current_piece_gfx#96 ← phi( @5/(byte*) current_piece_gfx#97 ) + (byte) current_ypos#94 ← phi( @5/(byte) current_ypos#95 ) + (byte) current_xpos#120 ← phi( @5/(byte) current_xpos#121 ) + (byte*) current_piece_gfx#110 ← phi( @5/(byte*) current_piece_gfx#111 ) + (byte) current_piece_char#98 ← phi( @5/(byte) current_piece_char#99 ) (byte[8]) keyboard_events#0 ← { fill( 8, 0) } (byte) keyboard_events_size#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_modifiers#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -197,13 +197,13 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (byte) KEY_MODIFIER_SHIFT#0 ← (byte~) $0 (byte[8]) keyboard_scan_values#0 ← { fill( 8, 0) } to:@12 -keyboard_event_scan: scope:[keyboard_event_scan] from main::@23 - (byte) keyboard_events_size#54 ← phi( main::@23/(byte) keyboard_events_size#26 ) +keyboard_event_scan: scope:[keyboard_event_scan] from main::@33 + (byte) keyboard_events_size#54 ← phi( main::@33/(byte) keyboard_events_size#26 ) (byte) keyboard_event_scan::keycode#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_event_scan::row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - (byte) keyboard_events_size#45 ← phi( keyboard_event_scan/(byte) keyboard_events_size#54 keyboard_event_scan::@3/(byte) keyboard_events_size#55 ) + (byte) keyboard_events_size#44 ← phi( keyboard_event_scan/(byte) keyboard_events_size#54 keyboard_event_scan::@3/(byte) keyboard_events_size#55 ) (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte) keyboard_event_scan::keycode#0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte) keyboard_event_scan::row#0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 @@ -211,7 +211,7 @@ keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan k (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#1 to:keyboard_event_scan::@25 keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - (byte) keyboard_events_size#37 ← phi( keyboard_event_scan::@1/(byte) keyboard_events_size#45 ) + (byte) keyboard_events_size#36 ← phi( keyboard_event_scan::@1/(byte) keyboard_events_size#44 ) (byte) keyboard_event_scan::keycode#7 ← phi( keyboard_event_scan::@1/(byte) keyboard_event_scan::keycode#11 ) (byte) keyboard_event_scan::row#3 ← phi( keyboard_event_scan::@1/(byte) keyboard_event_scan::row#2 ) (byte) keyboard_matrix_read::return#4 ← phi( keyboard_event_scan::@1/(byte) keyboard_matrix_read::return#2 ) @@ -221,21 +221,21 @@ keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$1) goto keyboard_event_scan::@2 to:keyboard_event_scan::@13 keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - (byte) keyboard_events_size#29 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#37 ) + (byte) keyboard_events_size#29 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#36 ) (byte) keyboard_event_scan::keycode#12 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#7 ) (byte) keyboard_event_scan::row#8 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::row#3 ) (byte) keyboard_event_scan::row_scan#4 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::row_scan#0 ) (byte) keyboard_event_scan::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:keyboard_event_scan::@4 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - (byte) keyboard_events_size#61 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#37 ) + (byte) keyboard_events_size#62 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#36 ) (byte) keyboard_event_scan::row#7 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::row#3 ) (byte) keyboard_event_scan::keycode#3 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#7 ) (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$2 ← (byte) keyboard_event_scan::keycode#3 + (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) keyboard_event_scan::keycode#1 ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$2 to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@19 - (byte) keyboard_events_size#55 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#61 keyboard_event_scan::@19/(byte) keyboard_events_size#62 ) + (byte) keyboard_events_size#55 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#62 keyboard_event_scan::@19/(byte) keyboard_events_size#63 ) (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) (byte) keyboard_event_scan::row#4 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::row#7 keyboard_event_scan::@19/(byte) keyboard_event_scan::row#6 ) (byte) keyboard_event_scan::row#1 ← (byte) keyboard_event_scan::row#4 + rangenext(0,7) @@ -255,7 +255,7 @@ keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan:: if((bool~) keyboard_event_scan::$6) goto keyboard_event_scan::@5 to:keyboard_event_scan::@15 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@6 keyboard_event_scan::@7 - (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#21 keyboard_event_scan::@6/(byte) keyboard_events_size#38 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) + (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#21 keyboard_event_scan::@6/(byte) keyboard_events_size#37 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) (byte) keyboard_event_scan::row#9 ← phi( keyboard_event_scan::@17/(byte) keyboard_event_scan::row#10 keyboard_event_scan::@4/(byte) keyboard_event_scan::row#5 keyboard_event_scan::@6/(byte) keyboard_event_scan::row#11 keyboard_event_scan::@7/(byte) keyboard_event_scan::row#12 ) (byte) keyboard_event_scan::row_scan#5 ← phi( keyboard_event_scan::@17/(byte) keyboard_event_scan::row_scan#7 keyboard_event_scan::@4/(byte) keyboard_event_scan::row_scan#1 keyboard_event_scan::@6/(byte) keyboard_event_scan::row_scan#8 keyboard_event_scan::@7/(byte) keyboard_event_scan::row_scan#9 ) (byte) keyboard_event_scan::col#3 ← phi( keyboard_event_scan::@17/(byte) keyboard_event_scan::col#5 keyboard_event_scan::@4/(byte) keyboard_event_scan::col#2 keyboard_event_scan::@6/(byte) keyboard_event_scan::col#6 keyboard_event_scan::@7/(byte) keyboard_event_scan::col#7 ) @@ -276,7 +276,7 @@ keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$8) goto keyboard_event_scan::@6 to:keyboard_event_scan::@16 keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@15 - (byte) keyboard_events_size#38 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#10 ) + (byte) keyboard_events_size#37 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#10 ) (byte) keyboard_event_scan::row#11 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::row#13 ) (byte) keyboard_event_scan::row_scan#8 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::row_scan#6 ) (byte) keyboard_event_scan::col#6 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::col#8 ) @@ -313,21 +313,21 @@ keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan: (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#12 to:keyboard_event_scan::@5 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@5 - (byte) keyboard_events_size#62 ← phi( keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + (byte) keyboard_events_size#63 ← phi( keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) (byte) keyboard_event_scan::keycode#15 ← phi( keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#2 ) (byte) keyboard_event_scan::row#6 ← phi( keyboard_event_scan::@5/(byte) keyboard_event_scan::row#9 ) (byte) keyboard_event_scan::row_scan#3 ← phi( keyboard_event_scan::@5/(byte) keyboard_event_scan::row_scan#5 ) *((byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#6) ← (byte) keyboard_event_scan::row_scan#3 to:keyboard_event_scan::@3 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - (byte) keyboard_events_size#75 ← phi( keyboard_event_scan::@3/(byte) keyboard_events_size#55 ) + (byte) keyboard_events_size#77 ← phi( keyboard_event_scan::@3/(byte) keyboard_events_size#55 ) (byte) keyboard_modifiers#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_event_pressed::keycode#0 ← (byte) KEY_LSHIFT#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@26 keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - (byte) keyboard_events_size#72 ← phi( keyboard_event_scan::@20/(byte) keyboard_events_size#75 ) + (byte) keyboard_events_size#74 ← phi( keyboard_event_scan::@20/(byte) keyboard_events_size#77 ) (byte) keyboard_modifiers#18 ← phi( keyboard_event_scan::@20/(byte) keyboard_modifiers#1 ) (byte) keyboard_event_pressed::return#7 ← phi( keyboard_event_scan::@20/(byte) keyboard_event_pressed::return#0 ) (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#7 @@ -336,14 +336,14 @@ keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$16) goto keyboard_event_scan::@9 to:keyboard_event_scan::@21 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - (byte) keyboard_events_size#68 ← phi( keyboard_event_scan::@21/(byte) keyboard_events_size#71 keyboard_event_scan::@26/(byte) keyboard_events_size#72 ) + (byte) keyboard_events_size#69 ← phi( keyboard_event_scan::@21/(byte) keyboard_events_size#73 keyboard_event_scan::@26/(byte) keyboard_events_size#74 ) (byte) keyboard_modifiers#26 ← phi( keyboard_event_scan::@21/(byte) keyboard_modifiers#2 keyboard_event_scan::@26/(byte) keyboard_modifiers#18 ) (byte) keyboard_event_pressed::keycode#1 ← (byte) KEY_RSHIFT#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@27 keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - (byte) keyboard_events_size#64 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#68 ) + (byte) keyboard_events_size#65 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#69 ) (byte) keyboard_modifiers#19 ← phi( keyboard_event_scan::@9/(byte) keyboard_modifiers#26 ) (byte) keyboard_event_pressed::return#8 ← phi( keyboard_event_scan::@9/(byte) keyboard_event_pressed::return#1 ) (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#8 @@ -352,20 +352,20 @@ keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$20) goto keyboard_event_scan::@10 to:keyboard_event_scan::@22 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - (byte) keyboard_events_size#71 ← phi( keyboard_event_scan::@26/(byte) keyboard_events_size#72 ) + (byte) keyboard_events_size#73 ← phi( keyboard_event_scan::@26/(byte) keyboard_events_size#74 ) (byte) keyboard_modifiers#10 ← phi( keyboard_event_scan::@26/(byte) keyboard_modifiers#18 ) (byte~) keyboard_event_scan::$17 ← (byte) keyboard_modifiers#10 | (byte) KEY_MODIFIER_LSHIFT#0 (byte) keyboard_modifiers#2 ← (byte~) keyboard_event_scan::$17 to:keyboard_event_scan::@9 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - (byte) keyboard_events_size#56 ← phi( keyboard_event_scan::@22/(byte) keyboard_events_size#63 keyboard_event_scan::@27/(byte) keyboard_events_size#64 ) + (byte) keyboard_events_size#56 ← phi( keyboard_event_scan::@22/(byte) keyboard_events_size#64 keyboard_event_scan::@27/(byte) keyboard_events_size#65 ) (byte) keyboard_modifiers#27 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#19 ) (byte) keyboard_event_pressed::keycode#2 ← (byte) KEY_CTRL#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@28 keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - (byte) keyboard_events_size#47 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#56 ) + (byte) keyboard_events_size#46 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#56 ) (byte) keyboard_modifiers#20 ← phi( keyboard_event_scan::@10/(byte) keyboard_modifiers#27 ) (byte) keyboard_event_pressed::return#9 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_pressed::return#2 ) (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#9 @@ -374,20 +374,20 @@ keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$24) goto keyboard_event_scan::@11 to:keyboard_event_scan::@23 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - (byte) keyboard_events_size#63 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#64 ) + (byte) keyboard_events_size#64 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#65 ) (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@27/(byte) keyboard_modifiers#19 ) (byte~) keyboard_event_scan::$21 ← (byte) keyboard_modifiers#11 | (byte) KEY_MODIFIER_RSHIFT#0 (byte) keyboard_modifiers#3 ← (byte~) keyboard_event_scan::$21 to:keyboard_event_scan::@10 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 - (byte) keyboard_events_size#39 ← phi( keyboard_event_scan::@23/(byte) keyboard_events_size#46 keyboard_event_scan::@28/(byte) keyboard_events_size#47 ) + (byte) keyboard_events_size#38 ← phi( keyboard_event_scan::@23/(byte) keyboard_events_size#45 keyboard_event_scan::@28/(byte) keyboard_events_size#46 ) (byte) keyboard_modifiers#28 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#20 ) (byte) keyboard_event_pressed::keycode#3 ← (byte) KEY_COMMODORE#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#3 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@29 keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan::@11 - (byte) keyboard_events_size#31 ← phi( keyboard_event_scan::@11/(byte) keyboard_events_size#39 ) + (byte) keyboard_events_size#31 ← phi( keyboard_event_scan::@11/(byte) keyboard_events_size#38 ) (byte) keyboard_modifiers#21 ← phi( keyboard_event_scan::@11/(byte) keyboard_modifiers#28 ) (byte) keyboard_event_pressed::return#10 ← phi( keyboard_event_scan::@11/(byte) keyboard_event_pressed::return#3 ) (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 @@ -396,7 +396,7 @@ keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$28) goto keyboard_event_scan::@12 to:keyboard_event_scan::@24 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 - (byte) keyboard_events_size#46 ← phi( keyboard_event_scan::@28/(byte) keyboard_events_size#47 ) + (byte) keyboard_events_size#45 ← phi( keyboard_event_scan::@28/(byte) keyboard_events_size#46 ) (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@28/(byte) keyboard_modifiers#20 ) (byte~) keyboard_event_scan::$25 ← (byte) keyboard_modifiers#12 | (byte) KEY_MODIFIER_CTRL#0 (byte) keyboard_modifiers#4 ← (byte~) keyboard_event_scan::$25 @@ -431,8 +431,8 @@ keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_e (byte) keyboard_event_pressed::return#5 ← (byte) keyboard_event_pressed::return#11 return to:@return -keyboard_event_get: scope:[keyboard_event_get] from main::@24 - (byte) keyboard_events_size#14 ← phi( main::@24/(byte) keyboard_events_size#6 ) +keyboard_event_get: scope:[keyboard_event_get] from main::@34 + (byte) keyboard_events_size#14 ← phi( main::@34/(byte) keyboard_events_size#6 ) (bool~) keyboard_event_get::$0 ← (byte) keyboard_events_size#14 == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) keyboard_event_get::$0) goto keyboard_event_get::@1 to:keyboard_event_get::@3 @@ -453,12 +453,12 @@ keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get return to:@return @12: scope:[] from @9 - (byte) keyboard_modifiers#59 ← phi( @9/(byte) keyboard_modifiers#0 ) - (byte) keyboard_events_size#78 ← phi( @9/(byte) keyboard_events_size#0 ) - (byte) current_piece_char#83 ← phi( @9/(byte) current_piece_char#84 ) - (byte) current_ypos#79 ← phi( @9/(byte) current_ypos#80 ) - (byte) current_xpos#105 ← phi( @9/(byte) current_xpos#106 ) - (byte*) current_piece_gfx#95 ← phi( @9/(byte*) current_piece_gfx#96 ) + (byte) keyboard_modifiers#61 ← phi( @9/(byte) keyboard_modifiers#0 ) + (byte) keyboard_events_size#80 ← phi( @9/(byte) keyboard_events_size#0 ) + (byte) current_ypos#93 ← phi( @9/(byte) current_ypos#94 ) + (byte) current_xpos#119 ← phi( @9/(byte) current_xpos#120 ) + (byte*) current_piece_gfx#109 ← phi( @9/(byte*) current_piece_gfx#110 ) + (byte) current_piece_char#97 ← phi( @9/(byte) current_piece_char#98 ) (word*) SID_VOICE3_FREQ#0 ← ((word*)) (word/dword/signed dword) 54286 (byte*) SID_VOICE3_FREQ_LOW#0 ← ((byte*)) (word/dword/signed dword) 54286 (byte*) SID_VOICE3_FREQ_HIGH#0 ← ((byte*)) (word/dword/signed dword) 54287 @@ -489,12 +489,12 @@ sid_rnd::@return: scope:[sid_rnd] from sid_rnd return to:@return @14: scope:[] from @12 - (byte) keyboard_modifiers#57 ← phi( @12/(byte) keyboard_modifiers#59 ) - (byte) keyboard_events_size#76 ← phi( @12/(byte) keyboard_events_size#78 ) - (byte) current_piece_char#82 ← phi( @12/(byte) current_piece_char#83 ) - (byte) current_ypos#78 ← phi( @12/(byte) current_ypos#79 ) - (byte) current_xpos#104 ← phi( @12/(byte) current_xpos#105 ) - (byte*) current_piece_gfx#94 ← phi( @12/(byte*) current_piece_gfx#95 ) + (byte) keyboard_modifiers#59 ← phi( @12/(byte) keyboard_modifiers#61 ) + (byte) keyboard_events_size#78 ← phi( @12/(byte) keyboard_events_size#80 ) + (byte) current_ypos#92 ← phi( @12/(byte) current_ypos#93 ) + (byte) current_xpos#118 ← phi( @12/(byte) current_xpos#119 ) + (byte*) current_piece_gfx#108 ← phi( @12/(byte*) current_piece_gfx#109 ) + (byte) current_piece_char#96 ← phi( @12/(byte) current_piece_char#97 ) (byte*) PLAYFIELD_SCREEN_1#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) PLAYFIELD_SCREEN_2#0 ← ((byte*)) (word/signed word/dword/signed dword) 11264 (byte*~) $1 ← (byte*) PLAYFIELD_SCREEN_1#0 + (word) SPRITE_PTRS#0 @@ -516,6 +516,7 @@ sid_rnd::@return: scope:[sid_rnd] from sid_rnd (word) lines_bcd#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) level_bcd#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) level#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) game_over#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 kickasm(location (byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} @@ -534,7 +535,7 @@ sid_rnd::@return: scope:[sid_rnd] from sid_rnd (byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 ← { fill( PLAYFIELD_LINES#0, 0) } (byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 ← { fill( PLAYFIELD_LINES#0, 0) } to:@22 -render_init: scope:[render_init] from main::@15 +render_init: scope:[render_init] from main::@25 (byte*) render_init::vicSelectGfxBank1_gfx#0 ← (byte*) PLAYFIELD_CHARSET#0 to:render_init::vicSelectGfxBank1 render_init::vicSelectGfxBank1: scope:[render_init] from render_init @@ -614,7 +615,7 @@ render_init::@return: scope:[render_init] from render_init::@2 return to:@return render_show: scope:[render_show] from main::@6 - (byte) render_screen_show#10 ← phi( main::@6/(byte) render_screen_show#18 ) + (byte) render_screen_show#10 ← phi( main::@6/(byte) render_screen_show#15 ) (byte) render_show::d018val#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) render_show::$0 ← (byte) render_screen_show#10 == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) render_show::$0) goto render_show::@1 @@ -625,7 +626,7 @@ render_show::@1: scope:[render_show] from render_show (byte*) render_show::toD0181_gfx#0 ← (byte*) PLAYFIELD_CHARSET#0 to:render_show::toD0181 render_show::toD0181: scope:[render_show] from render_show::@1 - (byte) render_screen_show#33 ← phi( render_show::@1/(byte) render_screen_show#41 ) + (byte) render_screen_show#35 ← phi( render_show::@1/(byte) render_screen_show#41 ) (byte*) render_show::toD0181_gfx#1 ← phi( render_show::@1/(byte*) render_show::toD0181_gfx#0 ) (byte*) render_show::toD0181_screen#1 ← phi( render_show::@1/(byte*) render_show::toD0181_screen#0 ) (word) render_show::toD0181_$0#0 ← ((word)) (byte*) render_show::toD0181_screen#1 @@ -640,12 +641,12 @@ render_show::toD0181: scope:[render_show] from render_show::@1 (byte) render_show::toD0181_return#0 ← (byte) render_show::toD0181_$8#0 to:render_show::toD0181_@return render_show::toD0181_@return: scope:[render_show] from render_show::toD0181 - (byte) render_screen_show#25 ← phi( render_show::toD0181/(byte) render_screen_show#33 ) + (byte) render_screen_show#26 ← phi( render_show::toD0181/(byte) render_screen_show#35 ) (byte) render_show::toD0181_return#2 ← phi( render_show::toD0181/(byte) render_show::toD0181_return#0 ) (byte) render_show::toD0181_return#1 ← (byte) render_show::toD0181_return#2 to:render_show::@5 render_show::@5: scope:[render_show] from render_show::toD0181_@return - (byte) render_screen_show#19 ← phi( render_show::toD0181_@return/(byte) render_screen_show#25 ) + (byte) render_screen_show#19 ← phi( render_show::toD0181_@return/(byte) render_screen_show#26 ) (byte) render_show::toD0181_return#3 ← phi( render_show::toD0181_@return/(byte) render_show::toD0181_return#1 ) (byte~) render_show::$2 ← (byte) render_show::toD0181_return#3 (byte) render_show::d018val#1 ← (byte~) render_show::$2 @@ -656,7 +657,7 @@ render_show::@3: scope:[render_show] from render_show (byte*) render_show::toD0182_gfx#0 ← (byte*) PLAYFIELD_CHARSET#0 to:render_show::toD0182 render_show::toD0182: scope:[render_show] from render_show::@3 - (byte) render_screen_show#34 ← phi( render_show::@3/(byte) render_screen_show#42 ) + (byte) render_screen_show#36 ← phi( render_show::@3/(byte) render_screen_show#42 ) (byte*) render_show::toD0182_gfx#1 ← phi( render_show::@3/(byte*) render_show::toD0182_gfx#0 ) (byte*) render_show::toD0182_screen#1 ← phi( render_show::@3/(byte*) render_show::toD0182_screen#0 ) (word) render_show::toD0182_$0#0 ← ((word)) (byte*) render_show::toD0182_screen#1 @@ -671,12 +672,12 @@ render_show::toD0182: scope:[render_show] from render_show::@3 (byte) render_show::toD0182_return#0 ← (byte) render_show::toD0182_$8#0 to:render_show::toD0182_@return render_show::toD0182_@return: scope:[render_show] from render_show::toD0182 - (byte) render_screen_show#26 ← phi( render_show::toD0182/(byte) render_screen_show#34 ) + (byte) render_screen_show#27 ← phi( render_show::toD0182/(byte) render_screen_show#36 ) (byte) render_show::toD0182_return#2 ← phi( render_show::toD0182/(byte) render_show::toD0182_return#0 ) (byte) render_show::toD0182_return#1 ← (byte) render_show::toD0182_return#2 to:render_show::@6 render_show::@6: scope:[render_show] from render_show::toD0182_@return - (byte) render_screen_show#20 ← phi( render_show::toD0182_@return/(byte) render_screen_show#26 ) + (byte) render_screen_show#20 ← phi( render_show::toD0182_@return/(byte) render_screen_show#27 ) (byte) render_show::toD0182_return#3 ← phi( render_show::toD0182_@return/(byte) render_show::toD0182_return#1 ) (byte~) render_show::$1 ← (byte) render_show::toD0182_return#3 (byte) render_show::d018val#2 ← (byte~) render_show::$1 @@ -692,9 +693,9 @@ render_show::@return: scope:[render_show] from render_show::@2 (byte) render_screen_showing#2 ← (byte) render_screen_showing#6 return to:@return -render_screen_swap: scope:[render_screen_swap] from main::@31 - (byte) render_screen_show#12 ← phi( main::@31/(byte) render_screen_show#21 ) - (byte) render_screen_render#10 ← phi( main::@31/(byte) render_screen_render#19 ) +render_screen_swap: scope:[render_screen_swap] from main::@39 + (byte) render_screen_show#12 ← phi( main::@39/(byte) render_screen_show#21 ) + (byte) render_screen_render#10 ← phi( main::@39/(byte) render_screen_render#19 ) (byte) render_screen_render#3 ← (byte) render_screen_render#10 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 (byte) render_screen_show#3 ← (byte) render_screen_show#12 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 to:render_screen_swap::@return @@ -705,32 +706,32 @@ render_screen_swap::@return: scope:[render_screen_swap] from render_screen_swap (byte) render_screen_show#4 ← (byte) render_screen_show#13 return to:@return -render_score: scope:[render_score] from main::@30 - (byte) level_bcd#86 ← phi( main::@30/(byte) level_bcd#69 ) - (word) lines_bcd#60 ← phi( main::@30/(word) lines_bcd#59 ) - (dword) score_bcd#28 ← phi( main::@30/(dword) score_bcd#39 ) - (byte) render_screen_render#12 ← phi( main::@30/(byte) render_screen_render#20 ) +render_score: scope:[render_score] from main::@38 + (byte) level_bcd#94 ← phi( main::@38/(byte) level_bcd#85 ) + (word) lines_bcd#68 ← phi( main::@38/(word) lines_bcd#75 ) + (dword) score_bcd#35 ← phi( main::@38/(dword) score_bcd#46 ) + (byte) render_screen_render#12 ← phi( main::@38/(byte) render_screen_render#20 ) (bool~) render_score::$0 ← (byte) render_screen_render#12 == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) render_score::$0) goto render_score::@1 to:render_score::@3 render_score::@1: scope:[render_score] from render_score - (byte) level_bcd#77 ← phi( render_score/(byte) level_bcd#86 ) - (word) lines_bcd#49 ← phi( render_score/(word) lines_bcd#60 ) - (dword) score_bcd#16 ← phi( render_score/(dword) score_bcd#28 ) + (byte) level_bcd#86 ← phi( render_score/(byte) level_bcd#94 ) + (word) lines_bcd#57 ← phi( render_score/(word) lines_bcd#68 ) + (dword) score_bcd#20 ← phi( render_score/(dword) score_bcd#35 ) (byte*) render_score::screen#0 ← (byte*) PLAYFIELD_SCREEN_1#0 to:render_score::@2 render_score::@3: scope:[render_score] from render_score - (byte) level_bcd#78 ← phi( render_score/(byte) level_bcd#86 ) - (word) lines_bcd#50 ← phi( render_score/(word) lines_bcd#60 ) - (dword) score_bcd#17 ← phi( render_score/(dword) score_bcd#28 ) + (byte) level_bcd#87 ← phi( render_score/(byte) level_bcd#94 ) + (word) lines_bcd#58 ← phi( render_score/(word) lines_bcd#68 ) + (dword) score_bcd#21 ← phi( render_score/(dword) score_bcd#35 ) (byte*) render_score::screen#1 ← (byte*) PLAYFIELD_SCREEN_2#0 to:render_score::@2 render_score::@2: scope:[render_score] from render_score::@1 render_score::@3 - (byte) level_bcd#70 ← phi( render_score::@1/(byte) level_bcd#77 render_score::@3/(byte) level_bcd#78 ) - (word) lines_bcd#39 ← phi( render_score::@1/(word) lines_bcd#49 render_score::@3/(word) lines_bcd#50 ) + (byte) level_bcd#78 ← phi( render_score::@1/(byte) level_bcd#86 render_score::@3/(byte) level_bcd#87 ) + (word) lines_bcd#46 ← phi( render_score::@1/(word) lines_bcd#57 render_score::@3/(word) lines_bcd#58 ) (byte*) render_score::screen#2 ← phi( render_score::@1/(byte*) render_score::screen#0 render_score::@3/(byte*) render_score::screen#1 ) - (dword) score_bcd#8 ← phi( render_score::@1/(dword) score_bcd#16 render_score::@3/(dword) score_bcd#17 ) - (dword*~) render_score::$1 ← & (dword) score_bcd#8 + (dword) score_bcd#10 ← phi( render_score::@1/(dword) score_bcd#20 render_score::@3/(dword) score_bcd#21 ) + (dword*~) render_score::$1 ← & (dword) score_bcd#10 (byte*~) render_score::$2 ← ((byte*)) (dword*~) render_score::$1 (byte*) render_score::score_bytes#0 ← (byte*~) render_score::$2 (byte/word/signed word/dword/signed dword~) render_score::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 5 @@ -743,8 +744,8 @@ render_score::@2: scope:[render_score] from render_score::@1 render_score::@3 call render_bcd to:render_score::@5 render_score::@5: scope:[render_score] from render_score::@2 - (byte) level_bcd#60 ← phi( render_score::@2/(byte) level_bcd#70 ) - (word) lines_bcd#28 ← phi( render_score::@2/(word) lines_bcd#39 ) + (byte) level_bcd#68 ← phi( render_score::@2/(byte) level_bcd#78 ) + (word) lines_bcd#35 ← phi( render_score::@2/(word) lines_bcd#46 ) (byte*) render_score::score_bytes#1 ← phi( render_score::@2/(byte*) render_score::score_bytes#0 ) (byte*) render_score::screen#3 ← phi( render_score::@2/(byte*) render_score::screen#2 ) (word) render_score::score_offset#1 ← phi( render_score::@2/(word) render_score::score_offset#0 ) @@ -756,8 +757,8 @@ render_score::@5: scope:[render_score] from render_score::@2 call render_bcd to:render_score::@6 render_score::@6: scope:[render_score] from render_score::@5 - (byte) level_bcd#49 ← phi( render_score::@5/(byte) level_bcd#60 ) - (word) lines_bcd#17 ← phi( render_score::@5/(word) lines_bcd#28 ) + (byte) level_bcd#56 ← phi( render_score::@5/(byte) level_bcd#68 ) + (word) lines_bcd#21 ← phi( render_score::@5/(word) lines_bcd#35 ) (byte*) render_score::score_bytes#2 ← phi( render_score::@5/(byte*) render_score::score_bytes#1 ) (byte*) render_score::screen#4 ← phi( render_score::@5/(byte*) render_score::screen#3 ) (word) render_score::score_offset#2 ← phi( render_score::@5/(word) render_score::score_offset#1 ) @@ -769,13 +770,13 @@ render_score::@6: scope:[render_score] from render_score::@5 call render_bcd to:render_score::@7 render_score::@7: scope:[render_score] from render_score::@6 - (byte) level_bcd#35 ← phi( render_score::@6/(byte) level_bcd#49 ) + (byte) level_bcd#42 ← phi( render_score::@6/(byte) level_bcd#56 ) (byte*) render_score::screen#5 ← phi( render_score::@6/(byte*) render_score::screen#4 ) - (word) lines_bcd#8 ← phi( render_score::@6/(word) lines_bcd#17 ) + (word) lines_bcd#10 ← phi( render_score::@6/(word) lines_bcd#21 ) (byte/signed byte/word/signed word/dword/signed dword~) render_score::$10 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 1 (byte/signed word/word/dword/signed dword/signed byte~) render_score::$11 ← (byte/signed byte/word/signed word/dword/signed dword~) render_score::$10 + (byte/signed byte/word/signed word/dword/signed dword) 22 (word) render_score::lines_offset#0 ← (byte/signed word/word/dword/signed dword/signed byte~) render_score::$11 - (byte~) render_score::$12 ← > (word) lines_bcd#8 + (byte~) render_score::$12 ← > (word) lines_bcd#10 (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#5 (word) render_bcd::offset#3 ← (word) render_score::lines_offset#0 (byte) render_bcd::bcd#3 ← (byte~) render_score::$12 @@ -783,12 +784,12 @@ render_score::@7: scope:[render_score] from render_score::@6 call render_bcd to:render_score::@8 render_score::@8: scope:[render_score] from render_score::@7 - (byte) level_bcd#22 ← phi( render_score::@7/(byte) level_bcd#35 ) + (byte) level_bcd#26 ← phi( render_score::@7/(byte) level_bcd#42 ) (byte*) render_score::screen#6 ← phi( render_score::@7/(byte*) render_score::screen#5 ) - (word) lines_bcd#9 ← phi( render_score::@7/(word) lines_bcd#8 ) + (word) lines_bcd#11 ← phi( render_score::@7/(word) lines_bcd#10 ) (word) render_score::lines_offset#1 ← phi( render_score::@7/(word) render_score::lines_offset#0 ) (word/signed dword/dword~) render_score::$14 ← (word) render_score::lines_offset#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte~) render_score::$15 ← < (word) lines_bcd#9 + (byte~) render_score::$15 ← < (word) lines_bcd#11 (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#6 (word) render_bcd::offset#4 ← (word/signed dword/dword~) render_score::$14 (byte) render_bcd::bcd#4 ← (byte~) render_score::$15 @@ -796,14 +797,14 @@ render_score::@8: scope:[render_score] from render_score::@7 call render_bcd to:render_score::@9 render_score::@9: scope:[render_score] from render_score::@8 - (byte) level_bcd#11 ← phi( render_score::@8/(byte) level_bcd#22 ) + (byte) level_bcd#13 ← phi( render_score::@8/(byte) level_bcd#26 ) (byte*) render_score::screen#7 ← phi( render_score::@8/(byte*) render_score::screen#6 ) (word/signed word/dword/signed dword~) render_score::$17 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 19 (word/signed dword/dword/signed word~) render_score::$18 ← (word/signed word/dword/signed dword~) render_score::$17 + (byte/signed byte/word/signed word/dword/signed dword) 31 (word) render_score::level_offset#0 ← (word/signed dword/dword/signed word~) render_score::$18 (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#7 (word) render_bcd::offset#5 ← (word) render_score::level_offset#0 - (byte) render_bcd::bcd#5 ← (byte) level_bcd#11 + (byte) render_bcd::bcd#5 ← (byte) level_bcd#13 (byte) render_bcd::only_low#5 ← (byte/signed byte/word/signed word/dword/signed dword) 0 call render_bcd to:render_score::@10 @@ -817,7 +818,7 @@ render_bcd: scope:[render_bcd] from render_score::@2 render_score::@5 render_sc (byte) render_bcd::only_low#6 ← phi( render_score::@2/(byte) render_bcd::only_low#0 render_score::@5/(byte) render_bcd::only_low#1 render_score::@6/(byte) render_bcd::only_low#2 render_score::@7/(byte) render_bcd::only_low#3 render_score::@8/(byte) render_bcd::only_low#4 render_score::@9/(byte) render_bcd::only_low#5 ) (word) render_bcd::offset#6 ← phi( render_score::@2/(word) render_bcd::offset#0 render_score::@5/(word) render_bcd::offset#1 render_score::@6/(word) render_bcd::offset#2 render_score::@7/(word) render_bcd::offset#3 render_score::@8/(word) render_bcd::offset#4 render_score::@9/(word) render_bcd::offset#5 ) (byte*) render_bcd::screen#6 ← phi( render_score::@2/(byte*) render_bcd::screen#0 render_score::@5/(byte*) render_bcd::screen#1 render_score::@6/(byte*) render_bcd::screen#2 render_score::@7/(byte*) render_bcd::screen#3 render_score::@8/(byte*) render_bcd::screen#4 render_score::@9/(byte*) render_bcd::screen#5 ) - (byte) render_bcd::ZERO_CHAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 51 + (byte) render_bcd::ZERO_CHAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 (byte*~) render_bcd::$0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 (byte*) render_bcd::screen_pos#0 ← (byte*~) render_bcd::$0 (bool~) render_bcd::$1 ← (byte) render_bcd::only_low#6 == (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -928,8 +929,8 @@ render_screen_original::@7: scope:[render_screen_original] from render_screen_o render_screen_original::@return: scope:[render_screen_original] from render_screen_original::@7 return to:@return -render_playfield: scope:[render_playfield] from main::@13 main::@20 - (byte) render_screen_render#21 ← phi( main::@13/(byte) render_screen_render#27 main::@20/(byte) render_screen_render#28 ) +render_playfield: scope:[render_playfield] from main::@23 main::@30 + (byte) render_screen_render#21 ← phi( main::@23/(byte) render_screen_render#27 main::@30/(byte) render_screen_render#28 ) (byte/signed word/word/dword/signed dword~) render_playfield::$0 ← (byte) PLAYFIELD_COLS#0 * (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) render_playfield::i#0 ← (byte/signed word/word/dword/signed dword~) render_playfield::$0 (byte/signed word/word/dword/signed dword~) render_playfield::$1 ← (byte) PLAYFIELD_LINES#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -969,23 +970,23 @@ render_playfield::@3: scope:[render_playfield] from render_playfield::@2 render_playfield::@return: scope:[render_playfield] from render_playfield::@3 return to:@return -render_moving: scope:[render_moving] from main::@21 main::@29 - (byte) current_piece_char#64 ← phi( main::@21/(byte) current_piece_char#48 main::@29/(byte) current_piece_char#71 ) - (byte*) current_piece_gfx#53 ← phi( main::@21/(byte*) current_piece_gfx#65 main::@29/(byte*) current_piece_gfx#68 ) - (byte) current_xpos#47 ← phi( main::@21/(byte) current_xpos#66 main::@29/(byte) current_xpos#67 ) - (byte) render_screen_render#30 ← phi( main::@21/(byte) render_screen_render#37 main::@29/(byte) render_screen_render#35 ) - (byte) current_ypos#9 ← phi( main::@21/(byte) current_ypos#23 main::@29/(byte) current_ypos#24 ) +render_moving: scope:[render_moving] from main::@31 main::@37 + (byte) current_piece_char#75 ← phi( main::@31/(byte) current_piece_char#59 main::@37/(byte) current_piece_char#84 ) + (byte*) current_piece_gfx#62 ← phi( main::@31/(byte*) current_piece_gfx#74 main::@37/(byte*) current_piece_gfx#78 ) + (byte) current_xpos#57 ← phi( main::@31/(byte) current_xpos#76 main::@37/(byte) current_xpos#77 ) + (byte) render_screen_render#30 ← phi( main::@31/(byte) render_screen_render#37 main::@37/(byte) render_screen_render#35 ) + (byte) current_ypos#11 ← phi( main::@31/(byte) current_ypos#27 main::@37/(byte) current_ypos#28 ) (byte) render_moving::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte~) render_moving::$0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte~) render_moving::$0 ← (byte) current_ypos#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) render_moving::ypos2#0 ← (byte~) render_moving::$0 (byte) render_moving::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_moving::@1 render_moving::@1: scope:[render_moving] from render_moving render_moving::@3 - (byte) current_piece_char#52 ← phi( render_moving/(byte) current_piece_char#64 render_moving::@3/(byte) current_piece_char#65 ) + (byte) current_piece_char#63 ← phi( render_moving/(byte) current_piece_char#75 render_moving::@3/(byte) current_piece_char#76 ) (byte) render_moving::l#5 ← phi( render_moving/(byte) render_moving::l#0 render_moving::@3/(byte) render_moving::l#1 ) - (byte*) current_piece_gfx#36 ← phi( render_moving/(byte*) current_piece_gfx#53 render_moving::@3/(byte*) current_piece_gfx#54 ) + (byte*) current_piece_gfx#44 ← phi( render_moving/(byte*) current_piece_gfx#62 render_moving::@3/(byte*) current_piece_gfx#63 ) (byte) render_moving::i#5 ← phi( render_moving/(byte) render_moving::i#0 render_moving::@3/(byte) render_moving::i#8 ) - (byte) current_xpos#29 ← phi( render_moving/(byte) current_xpos#47 render_moving::@3/(byte) current_xpos#48 ) + (byte) current_xpos#33 ← phi( render_moving/(byte) current_xpos#57 render_moving::@3/(byte) current_xpos#58 ) (byte) render_screen_render#23 ← phi( render_moving/(byte) render_screen_render#30 render_moving::@3/(byte) render_screen_render#31 ) (byte) render_moving::ypos2#2 ← phi( render_moving/(byte) render_moving::ypos2#0 render_moving::@3/(byte) render_moving::ypos2#1 ) (bool~) render_moving::$1 ← (byte) render_moving::ypos2#2 > (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -995,22 +996,22 @@ render_moving::@1: scope:[render_moving] from render_moving render_moving::@3 if((bool~) render_moving::$4) goto render_moving::@2 to:render_moving::@7 render_moving::@2: scope:[render_moving] from render_moving::@1 - (byte) current_piece_char#38 ← phi( render_moving::@1/(byte) current_piece_char#52 ) + (byte) current_piece_char#48 ← phi( render_moving::@1/(byte) current_piece_char#63 ) (byte) render_moving::l#9 ← phi( render_moving::@1/(byte) render_moving::l#5 ) (byte) render_moving::i#6 ← phi( render_moving::@1/(byte) render_moving::i#5 ) - (byte*) current_piece_gfx#22 ← phi( render_moving::@1/(byte*) current_piece_gfx#36 ) - (byte) current_xpos#12 ← phi( render_moving::@1/(byte) current_xpos#29 ) + (byte*) current_piece_gfx#26 ← phi( render_moving::@1/(byte*) current_piece_gfx#44 ) + (byte) current_xpos#14 ← phi( render_moving::@1/(byte) current_xpos#33 ) (byte) render_moving::ypos2#3 ← phi( render_moving::@1/(byte) render_moving::ypos2#2 ) (byte) render_screen_render#14 ← phi( render_moving::@1/(byte) render_screen_render#23 ) (byte~) render_moving::$5 ← (byte) render_screen_render#14 + (byte) render_moving::ypos2#3 (byte*) render_moving::screen_line#0 ← *((byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) - (byte) render_moving::xpos#0 ← (byte) current_xpos#12 + (byte) render_moving::xpos#0 ← (byte) current_xpos#14 (byte) render_moving::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_moving::@4 render_moving::@7: scope:[render_moving] from render_moving::@1 - (byte) current_piece_char#72 ← phi( render_moving::@1/(byte) current_piece_char#52 ) - (byte*) current_piece_gfx#69 ← phi( render_moving::@1/(byte*) current_piece_gfx#36 ) - (byte) current_xpos#69 ← phi( render_moving::@1/(byte) current_xpos#29 ) + (byte) current_piece_char#85 ← phi( render_moving::@1/(byte) current_piece_char#63 ) + (byte*) current_piece_gfx#79 ← phi( render_moving::@1/(byte*) current_piece_gfx#44 ) + (byte) current_xpos#79 ← phi( render_moving::@1/(byte) current_xpos#33 ) (byte) render_screen_render#39 ← phi( render_moving::@1/(byte) render_screen_render#23 ) (byte) render_moving::l#4 ← phi( render_moving::@1/(byte) render_moving::l#5 ) (byte) render_moving::ypos2#6 ← phi( render_moving::@1/(byte) render_moving::ypos2#2 ) @@ -1018,10 +1019,10 @@ render_moving::@7: scope:[render_moving] from render_moving::@1 (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 to:render_moving::@3 render_moving::@3: scope:[render_moving] from render_moving::@5 render_moving::@7 - (byte) current_piece_char#65 ← phi( render_moving::@5/(byte) current_piece_char#39 render_moving::@7/(byte) current_piece_char#72 ) - (byte*) current_piece_gfx#54 ← phi( render_moving::@5/(byte*) current_piece_gfx#23 render_moving::@7/(byte*) current_piece_gfx#69 ) + (byte) current_piece_char#76 ← phi( render_moving::@5/(byte) current_piece_char#49 render_moving::@7/(byte) current_piece_char#85 ) + (byte*) current_piece_gfx#63 ← phi( render_moving::@5/(byte*) current_piece_gfx#27 render_moving::@7/(byte*) current_piece_gfx#79 ) (byte) render_moving::i#8 ← phi( render_moving::@5/(byte) render_moving::i#7 render_moving::@7/(byte) render_moving::i#1 ) - (byte) current_xpos#48 ← phi( render_moving::@5/(byte) current_xpos#68 render_moving::@7/(byte) current_xpos#69 ) + (byte) current_xpos#58 ← phi( render_moving::@5/(byte) current_xpos#78 render_moving::@7/(byte) current_xpos#79 ) (byte) render_screen_render#31 ← phi( render_moving::@5/(byte) render_screen_render#38 render_moving::@7/(byte) render_screen_render#39 ) (byte) render_moving::l#2 ← phi( render_moving::@5/(byte) render_moving::l#3 render_moving::@7/(byte) render_moving::l#4 ) (byte) render_moving::ypos2#4 ← phi( render_moving::@5/(byte) render_moving::ypos2#5 render_moving::@7/(byte) render_moving::ypos2#6 ) @@ -1031,17 +1032,17 @@ render_moving::@3: scope:[render_moving] from render_moving::@5 render_moving:: if((bool~) render_moving::$11) goto render_moving::@1 to:render_moving::@return render_moving::@4: scope:[render_moving] from render_moving::@2 render_moving::@5 - (byte) current_xpos#83 ← phi( render_moving::@2/(byte) current_xpos#12 render_moving::@5/(byte) current_xpos#68 ) + (byte) current_xpos#93 ← phi( render_moving::@2/(byte) current_xpos#14 render_moving::@5/(byte) current_xpos#78 ) (byte) render_screen_render#44 ← phi( render_moving::@2/(byte) render_screen_render#14 render_moving::@5/(byte) render_screen_render#38 ) (byte*) render_moving::screen_line#3 ← phi( render_moving::@2/(byte*) render_moving::screen_line#0 render_moving::@5/(byte*) render_moving::screen_line#4 ) - (byte) current_piece_char#26 ← phi( render_moving::@2/(byte) current_piece_char#38 render_moving::@5/(byte) current_piece_char#39 ) + (byte) current_piece_char#35 ← phi( render_moving::@2/(byte) current_piece_char#48 render_moving::@5/(byte) current_piece_char#49 ) (byte) render_moving::l#7 ← phi( render_moving::@2/(byte) render_moving::l#9 render_moving::@5/(byte) render_moving::l#3 ) (byte) render_moving::ypos2#8 ← phi( render_moving::@2/(byte) render_moving::ypos2#3 render_moving::@5/(byte) render_moving::ypos2#5 ) (byte) render_moving::c#4 ← phi( render_moving::@2/(byte) render_moving::c#0 render_moving::@5/(byte) render_moving::c#1 ) (byte) render_moving::xpos#5 ← phi( render_moving::@2/(byte) render_moving::xpos#0 render_moving::@5/(byte) render_moving::xpos#1 ) (byte) render_moving::i#4 ← phi( render_moving::@2/(byte) render_moving::i#6 render_moving::@5/(byte) render_moving::i#7 ) - (byte*) current_piece_gfx#11 ← phi( render_moving::@2/(byte*) current_piece_gfx#22 render_moving::@5/(byte*) current_piece_gfx#23 ) - (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#11 + (byte) render_moving::i#4) + (byte*) current_piece_gfx#13 ← phi( render_moving::@2/(byte*) current_piece_gfx#26 render_moving::@5/(byte*) current_piece_gfx#27 ) + (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#13 + (byte) render_moving::i#4) (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 (bool~) render_moving::$6 ← (byte) render_moving::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) render_moving::$7 ← ! (bool~) render_moving::$6 @@ -1049,11 +1050,11 @@ render_moving::@4: scope:[render_moving] from render_moving::@2 render_moving:: to:render_moving::@9 render_moving::@5: scope:[render_moving] from render_moving::@10 render_moving::@4 render_moving::@6 (byte*) render_moving::screen_line#4 ← phi( render_moving::@10/(byte*) render_moving::screen_line#1 render_moving::@4/(byte*) render_moving::screen_line#3 render_moving::@6/(byte*) render_moving::screen_line#5 ) - (byte) current_piece_char#39 ← phi( render_moving::@10/(byte) current_piece_char#8 render_moving::@4/(byte) current_piece_char#26 render_moving::@6/(byte) current_piece_char#53 ) - (byte) current_xpos#68 ← phi( render_moving::@10/(byte) current_xpos#82 render_moving::@4/(byte) current_xpos#83 render_moving::@6/(byte) current_xpos#84 ) + (byte) current_piece_char#49 ← phi( render_moving::@10/(byte) current_piece_char#10 render_moving::@4/(byte) current_piece_char#35 render_moving::@6/(byte) current_piece_char#64 ) + (byte) current_xpos#78 ← phi( render_moving::@10/(byte) current_xpos#92 render_moving::@4/(byte) current_xpos#93 render_moving::@6/(byte) current_xpos#94 ) (byte) render_screen_render#38 ← phi( render_moving::@10/(byte) render_screen_render#43 render_moving::@4/(byte) render_screen_render#44 render_moving::@6/(byte) render_screen_render#45 ) (byte) render_moving::i#7 ← phi( render_moving::@10/(byte) render_moving::i#9 render_moving::@4/(byte) render_moving::i#2 render_moving::@6/(byte) render_moving::i#10 ) - (byte*) current_piece_gfx#23 ← phi( render_moving::@10/(byte*) current_piece_gfx#37 render_moving::@4/(byte*) current_piece_gfx#11 render_moving::@6/(byte*) current_piece_gfx#38 ) + (byte*) current_piece_gfx#27 ← phi( render_moving::@10/(byte*) current_piece_gfx#45 render_moving::@4/(byte*) current_piece_gfx#13 render_moving::@6/(byte*) current_piece_gfx#46 ) (byte) render_moving::l#3 ← phi( render_moving::@10/(byte) render_moving::l#6 render_moving::@4/(byte) render_moving::l#7 render_moving::@6/(byte) render_moving::l#8 ) (byte) render_moving::ypos2#5 ← phi( render_moving::@10/(byte) render_moving::ypos2#7 render_moving::@4/(byte) render_moving::ypos2#8 render_moving::@6/(byte) render_moving::ypos2#9 ) (byte) render_moving::c#2 ← phi( render_moving::@10/(byte) render_moving::c#3 render_moving::@4/(byte) render_moving::c#4 render_moving::@6/(byte) render_moving::c#5 ) @@ -1064,15 +1065,15 @@ render_moving::@5: scope:[render_moving] from render_moving::@10 render_moving: if((bool~) render_moving::$10) goto render_moving::@4 to:render_moving::@3 render_moving::@9: scope:[render_moving] from render_moving::@4 - (byte) current_xpos#92 ← phi( render_moving::@4/(byte) current_xpos#83 ) - (byte) render_screen_render#49 ← phi( render_moving::@4/(byte) render_screen_render#44 ) + (byte) current_xpos#103 ← phi( render_moving::@4/(byte) current_xpos#93 ) + (byte) render_screen_render#50 ← phi( render_moving::@4/(byte) render_screen_render#44 ) (byte) render_moving::i#11 ← phi( render_moving::@4/(byte) render_moving::i#2 ) - (byte*) current_piece_gfx#55 ← phi( render_moving::@4/(byte*) current_piece_gfx#11 ) + (byte*) current_piece_gfx#64 ← phi( render_moving::@4/(byte*) current_piece_gfx#13 ) (byte) render_moving::l#10 ← phi( render_moving::@4/(byte) render_moving::l#7 ) (byte) render_moving::ypos2#10 ← phi( render_moving::@4/(byte) render_moving::ypos2#8 ) (byte) render_moving::c#6 ← phi( render_moving::@4/(byte) render_moving::c#4 ) (byte*) render_moving::screen_line#2 ← phi( render_moving::@4/(byte*) render_moving::screen_line#3 ) - (byte) current_piece_char#17 ← phi( render_moving::@4/(byte) current_piece_char#26 ) + (byte) current_piece_char#21 ← phi( render_moving::@4/(byte) current_piece_char#35 ) (byte) render_moving::xpos#3 ← phi( render_moving::@4/(byte) render_moving::xpos#5 ) (bool~) render_moving::$8 ← (byte) render_moving::xpos#3 < (byte) PLAYFIELD_COLS#0 (bool~) render_moving::$9 ← ! (bool~) render_moving::$8 @@ -1080,52 +1081,56 @@ render_moving::@9: scope:[render_moving] from render_moving::@4 to:render_moving::@10 render_moving::@6: scope:[render_moving] from render_moving::@9 (byte*) render_moving::screen_line#5 ← phi( render_moving::@9/(byte*) render_moving::screen_line#2 ) - (byte) current_piece_char#53 ← phi( render_moving::@9/(byte) current_piece_char#17 ) - (byte) current_xpos#84 ← phi( render_moving::@9/(byte) current_xpos#92 ) - (byte) render_screen_render#45 ← phi( render_moving::@9/(byte) render_screen_render#49 ) + (byte) current_piece_char#64 ← phi( render_moving::@9/(byte) current_piece_char#21 ) + (byte) current_xpos#94 ← phi( render_moving::@9/(byte) current_xpos#103 ) + (byte) render_screen_render#45 ← phi( render_moving::@9/(byte) render_screen_render#50 ) (byte) render_moving::i#10 ← phi( render_moving::@9/(byte) render_moving::i#11 ) - (byte*) current_piece_gfx#38 ← phi( render_moving::@9/(byte*) current_piece_gfx#55 ) + (byte*) current_piece_gfx#46 ← phi( render_moving::@9/(byte*) current_piece_gfx#64 ) (byte) render_moving::l#8 ← phi( render_moving::@9/(byte) render_moving::l#10 ) (byte) render_moving::ypos2#9 ← phi( render_moving::@9/(byte) render_moving::ypos2#10 ) (byte) render_moving::c#5 ← phi( render_moving::@9/(byte) render_moving::c#6 ) (byte) render_moving::xpos#6 ← phi( render_moving::@9/(byte) render_moving::xpos#3 ) to:render_moving::@5 render_moving::@10: scope:[render_moving] from render_moving::@9 - (byte) current_xpos#82 ← phi( render_moving::@9/(byte) current_xpos#92 ) - (byte) render_screen_render#43 ← phi( render_moving::@9/(byte) render_screen_render#49 ) + (byte) current_xpos#92 ← phi( render_moving::@9/(byte) current_xpos#103 ) + (byte) render_screen_render#43 ← phi( render_moving::@9/(byte) render_screen_render#50 ) (byte) render_moving::i#9 ← phi( render_moving::@9/(byte) render_moving::i#11 ) - (byte*) current_piece_gfx#37 ← phi( render_moving::@9/(byte*) current_piece_gfx#55 ) + (byte*) current_piece_gfx#45 ← phi( render_moving::@9/(byte*) current_piece_gfx#64 ) (byte) render_moving::l#6 ← phi( render_moving::@9/(byte) render_moving::l#10 ) (byte) render_moving::ypos2#7 ← phi( render_moving::@9/(byte) render_moving::ypos2#10 ) (byte) render_moving::c#3 ← phi( render_moving::@9/(byte) render_moving::c#6 ) (byte) render_moving::xpos#4 ← phi( render_moving::@9/(byte) render_moving::xpos#3 ) (byte*) render_moving::screen_line#1 ← phi( render_moving::@9/(byte*) render_moving::screen_line#2 ) - (byte) current_piece_char#8 ← phi( render_moving::@9/(byte) current_piece_char#17 ) - *((byte*) render_moving::screen_line#1 + (byte) render_moving::xpos#4) ← (byte) current_piece_char#8 + (byte) current_piece_char#10 ← phi( render_moving::@9/(byte) current_piece_char#21 ) + *((byte*) render_moving::screen_line#1 + (byte) render_moving::xpos#4) ← (byte) current_piece_char#10 to:render_moving::@5 render_moving::@return: scope:[render_moving] from render_moving::@3 return to:@return @22: scope:[] from @14 - (byte) level_bcd#89 ← phi( @14/(byte) level_bcd#0 ) - (byte) level#85 ← phi( @14/(byte) level#0 ) - (dword) score_bcd#72 ← phi( @14/(dword) score_bcd#0 ) - (word) lines_bcd#76 ← phi( @14/(word) lines_bcd#0 ) - (byte) keyboard_modifiers#55 ← phi( @14/(byte) keyboard_modifiers#57 ) - (byte) keyboard_events_size#73 ← phi( @14/(byte) keyboard_events_size#76 ) - (byte) render_screen_showing#42 ← phi( @14/(byte) render_screen_showing#0 ) - (byte) current_piece_char#81 ← phi( @14/(byte) current_piece_char#82 ) - (byte) current_ypos#77 ← phi( @14/(byte) current_ypos#78 ) - (byte) current_xpos#103 ← phi( @14/(byte) current_xpos#104 ) - (byte*) current_piece_gfx#93 ← phi( @14/(byte*) current_piece_gfx#94 ) - (byte) render_screen_render#57 ← phi( @14/(byte) render_screen_render#0 ) - (byte) render_screen_show#56 ← phi( @14/(byte) render_screen_show#0 ) + (byte) level_bcd#100 ← phi( @14/(byte) level_bcd#0 ) + (byte) level#96 ← phi( @14/(byte) level#0 ) + (dword) score_bcd#83 ← phi( @14/(dword) score_bcd#0 ) + (word) lines_bcd#87 ← phi( @14/(word) lines_bcd#0 ) + (byte) keyboard_modifiers#57 ← phi( @14/(byte) keyboard_modifiers#59 ) + (byte) keyboard_events_size#75 ← phi( @14/(byte) keyboard_events_size#78 ) + (byte) render_screen_showing#44 ← phi( @14/(byte) render_screen_showing#0 ) + (byte) game_over#84 ← phi( @14/(byte) game_over#0 ) + (byte) current_ypos#91 ← phi( @14/(byte) current_ypos#92 ) + (byte) current_xpos#117 ← phi( @14/(byte) current_xpos#118 ) + (byte*) current_piece_gfx#107 ← phi( @14/(byte*) current_piece_gfx#108 ) + (byte) current_piece_char#95 ← phi( @14/(byte) current_piece_char#96 ) + (byte) render_screen_render#60 ← phi( @14/(byte) render_screen_render#0 ) + (byte) render_screen_show#59 ← phi( @14/(byte) render_screen_show#0 ) kickasm(location (byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 @@ -1133,7 +1138,7 @@ render_moving::@return: scope:[render_moving] from render_moving::@3 } }} to:@23 -sprites_init: scope:[sprites_init] from main::@16 +sprites_init: scope:[sprites_init] from main::@26 *((byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 *((byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 *((byte*) SPRITES_EXPAND_Y#0) ← *((byte*) SPRITES_MC#0) @@ -1160,40 +1165,45 @@ sprites_init::@return: scope:[sprites_init] from sprites_init::@1 return to:@return @23: scope:[] from @22 - (byte) level_bcd#87 ← phi( @22/(byte) level_bcd#89 ) - (byte) level#83 ← phi( @22/(byte) level#85 ) - (dword) score_bcd#70 ← phi( @22/(dword) score_bcd#72 ) - (word) lines_bcd#74 ← phi( @22/(word) lines_bcd#76 ) - (byte) keyboard_modifiers#53 ← phi( @22/(byte) keyboard_modifiers#55 ) - (byte) keyboard_events_size#69 ← phi( @22/(byte) keyboard_events_size#73 ) - (byte) render_screen_showing#39 ← phi( @22/(byte) render_screen_showing#42 ) - (byte) current_piece_char#80 ← phi( @22/(byte) current_piece_char#81 ) - (byte) current_ypos#76 ← phi( @22/(byte) current_ypos#77 ) - (byte) current_xpos#102 ← phi( @22/(byte) current_xpos#103 ) - (byte*) current_piece_gfx#92 ← phi( @22/(byte*) current_piece_gfx#93 ) - (byte) render_screen_render#55 ← phi( @22/(byte) render_screen_render#57 ) - (byte) render_screen_show#53 ← phi( @22/(byte) render_screen_show#56 ) - (byte) IRQ_RASTER_FIRST#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) level_bcd#95 ← phi( @22/(byte) level_bcd#100 ) + (byte) level#91 ← phi( @22/(byte) level#96 ) + (dword) score_bcd#79 ← phi( @22/(dword) score_bcd#83 ) + (word) lines_bcd#82 ← phi( @22/(word) lines_bcd#87 ) + (byte) keyboard_modifiers#54 ← phi( @22/(byte) keyboard_modifiers#57 ) + (byte) keyboard_events_size#70 ← phi( @22/(byte) keyboard_events_size#75 ) + (byte) render_screen_showing#41 ← phi( @22/(byte) render_screen_showing#44 ) + (byte) game_over#82 ← phi( @22/(byte) game_over#84 ) + (byte) current_ypos#88 ← phi( @22/(byte) current_ypos#91 ) + (byte) current_xpos#114 ← phi( @22/(byte) current_xpos#117 ) + (byte*) current_piece_gfx#104 ← phi( @22/(byte*) current_piece_gfx#107 ) + (byte) current_piece_char#91 ← phi( @22/(byte) current_piece_char#95 ) + (byte) render_screen_render#58 ← phi( @22/(byte) render_screen_render#60 ) + (byte) render_screen_show#56 ← phi( @22/(byte) render_screen_show#59 ) + (byte) SPRITES_FIRST_YPOS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte/signed word/word/dword/signed dword~) $4 ← (byte) SPRITES_FIRST_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 19 + (byte) IRQ_RASTER_FIRST#0 ← (byte/signed word/word/dword/signed dword~) $4 (byte) irq_raster_next#0 ← (byte) IRQ_RASTER_FIRST#0 - (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte/signed word/word/dword/signed dword~) $5 ← (byte) SPRITES_FIRST_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) irq_sprite_ypos#0 ← (byte/signed word/word/dword/signed dword~) $5 (byte*) toSpritePtr1_sprite#0 ← (byte*) PLAYFIELD_SPRITES#0 to:toSpritePtr1 toSpritePtr1: scope:[] from @23 - (byte) irq_raster_next#23 ← phi( @23/(byte) irq_raster_next#0 ) - (byte) level_bcd#79 ← phi( @23/(byte) level_bcd#87 ) - (byte) level#76 ← phi( @23/(byte) level#83 ) - (dword) score_bcd#64 ← phi( @23/(dword) score_bcd#70 ) - (word) lines_bcd#67 ← phi( @23/(word) lines_bcd#74 ) - (byte) keyboard_modifiers#49 ← phi( @23/(byte) keyboard_modifiers#53 ) - (byte) keyboard_events_size#65 ← phi( @23/(byte) keyboard_events_size#69 ) - (byte) render_screen_showing#35 ← phi( @23/(byte) render_screen_showing#39 ) - (byte) current_piece_char#73 ← phi( @23/(byte) current_piece_char#80 ) - (byte) current_ypos#72 ← phi( @23/(byte) current_ypos#76 ) - (byte) current_xpos#98 ← phi( @23/(byte) current_xpos#102 ) - (byte*) current_piece_gfx#86 ← phi( @23/(byte*) current_piece_gfx#92 ) - (byte) render_screen_render#53 ← phi( @23/(byte) render_screen_render#55 ) - (byte) render_screen_show#50 ← phi( @23/(byte) render_screen_show#53 ) - (byte) irq_sprite_ypos#23 ← phi( @23/(byte) irq_sprite_ypos#0 ) + (byte) level_bcd#88 ← phi( @23/(byte) level_bcd#95 ) + (byte) level#85 ← phi( @23/(byte) level#91 ) + (dword) score_bcd#74 ← phi( @23/(dword) score_bcd#79 ) + (word) lines_bcd#76 ← phi( @23/(word) lines_bcd#82 ) + (byte) keyboard_modifiers#51 ← phi( @23/(byte) keyboard_modifiers#54 ) + (byte) keyboard_events_size#66 ← phi( @23/(byte) keyboard_events_size#70 ) + (byte) render_screen_showing#37 ← phi( @23/(byte) render_screen_showing#41 ) + (byte) game_over#76 ← phi( @23/(byte) game_over#82 ) + (byte) current_ypos#85 ← phi( @23/(byte) current_ypos#88 ) + (byte) current_xpos#111 ← phi( @23/(byte) current_xpos#114 ) + (byte*) current_piece_gfx#99 ← phi( @23/(byte*) current_piece_gfx#104 ) + (byte) current_piece_char#86 ← phi( @23/(byte) current_piece_char#91 ) + (byte) render_screen_render#56 ← phi( @23/(byte) render_screen_render#58 ) + (byte) render_screen_show#53 ← phi( @23/(byte) render_screen_show#56 ) + (byte) irq_raster_next#24 ← phi( @23/(byte) irq_raster_next#0 ) + (byte) irq_sprite_ypos#24 ← phi( @23/(byte) irq_sprite_ypos#0 ) (byte*) toSpritePtr1_sprite#1 ← phi( @23/(byte*) toSpritePtr1_sprite#0 ) (word) toSpritePtr1_$0#0 ← ((word)) (byte*) toSpritePtr1_sprite#1 (word) toSpritePtr1_$1#0 ← (word) toSpritePtr1_$0#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6 @@ -1201,46 +1211,49 @@ toSpritePtr1: scope:[] from @23 (byte) toSpritePtr1_return#0 ← (byte) toSpritePtr1_$2#0 to:toSpritePtr1_@return toSpritePtr1_@return: scope:[] from toSpritePtr1 - (byte) irq_raster_next#22 ← phi( toSpritePtr1/(byte) irq_raster_next#23 ) - (byte) level_bcd#71 ← phi( toSpritePtr1/(byte) level_bcd#79 ) - (byte) level#68 ← phi( toSpritePtr1/(byte) level#76 ) - (dword) score_bcd#58 ← phi( toSpritePtr1/(dword) score_bcd#64 ) - (word) lines_bcd#61 ← phi( toSpritePtr1/(word) lines_bcd#67 ) - (byte) keyboard_modifiers#45 ← phi( toSpritePtr1/(byte) keyboard_modifiers#49 ) - (byte) keyboard_events_size#57 ← phi( toSpritePtr1/(byte) keyboard_events_size#65 ) - (byte) render_screen_showing#31 ← phi( toSpritePtr1/(byte) render_screen_showing#35 ) - (byte) current_piece_char#66 ← phi( toSpritePtr1/(byte) current_piece_char#73 ) - (byte) current_ypos#67 ← phi( toSpritePtr1/(byte) current_ypos#72 ) - (byte) current_xpos#93 ← phi( toSpritePtr1/(byte) current_xpos#98 ) - (byte*) current_piece_gfx#80 ← phi( toSpritePtr1/(byte*) current_piece_gfx#86 ) - (byte) render_screen_render#50 ← phi( toSpritePtr1/(byte) render_screen_render#53 ) - (byte) render_screen_show#47 ← phi( toSpritePtr1/(byte) render_screen_show#50 ) - (byte) irq_sprite_ypos#21 ← phi( toSpritePtr1/(byte) irq_sprite_ypos#23 ) + (byte) level_bcd#79 ← phi( toSpritePtr1/(byte) level_bcd#88 ) + (byte) level#76 ← phi( toSpritePtr1/(byte) level#85 ) + (dword) score_bcd#67 ← phi( toSpritePtr1/(dword) score_bcd#74 ) + (word) lines_bcd#69 ← phi( toSpritePtr1/(word) lines_bcd#76 ) + (byte) keyboard_modifiers#45 ← phi( toSpritePtr1/(byte) keyboard_modifiers#51 ) + (byte) keyboard_events_size#57 ← phi( toSpritePtr1/(byte) keyboard_events_size#66 ) + (byte) render_screen_showing#31 ← phi( toSpritePtr1/(byte) render_screen_showing#37 ) + (byte) game_over#66 ← phi( toSpritePtr1/(byte) game_over#76 ) + (byte) current_ypos#78 ← phi( toSpritePtr1/(byte) current_ypos#85 ) + (byte) current_xpos#104 ← phi( toSpritePtr1/(byte) current_xpos#111 ) + (byte*) current_piece_gfx#91 ← phi( toSpritePtr1/(byte*) current_piece_gfx#99 ) + (byte) current_piece_char#77 ← phi( toSpritePtr1/(byte) current_piece_char#86 ) + (byte) render_screen_render#51 ← phi( toSpritePtr1/(byte) render_screen_render#56 ) + (byte) render_screen_show#48 ← phi( toSpritePtr1/(byte) render_screen_show#53 ) + (byte) irq_raster_next#23 ← phi( toSpritePtr1/(byte) irq_raster_next#24 ) + (byte) irq_sprite_ypos#22 ← phi( toSpritePtr1/(byte) irq_sprite_ypos#24 ) (byte) toSpritePtr1_return#2 ← phi( toSpritePtr1/(byte) toSpritePtr1_return#0 ) (byte) toSpritePtr1_return#1 ← (byte) toSpritePtr1_return#2 - to:@37 -@37: scope:[] from toSpritePtr1_@return - (byte) irq_raster_next#21 ← phi( toSpritePtr1_@return/(byte) irq_raster_next#22 ) - (byte) level_bcd#61 ← phi( toSpritePtr1_@return/(byte) level_bcd#71 ) - (byte) level#56 ← phi( toSpritePtr1_@return/(byte) level#68 ) - (dword) score_bcd#49 ← phi( toSpritePtr1_@return/(dword) score_bcd#58 ) - (word) lines_bcd#51 ← phi( toSpritePtr1_@return/(word) lines_bcd#61 ) - (byte) keyboard_modifiers#39 ← phi( toSpritePtr1_@return/(byte) keyboard_modifiers#45 ) - (byte) keyboard_events_size#48 ← phi( toSpritePtr1_@return/(byte) keyboard_events_size#57 ) - (byte) render_screen_showing#27 ← phi( toSpritePtr1_@return/(byte) render_screen_showing#31 ) - (byte) current_piece_char#54 ← phi( toSpritePtr1_@return/(byte) current_piece_char#66 ) - (byte) current_ypos#61 ← phi( toSpritePtr1_@return/(byte) current_ypos#67 ) - (byte) current_xpos#85 ← phi( toSpritePtr1_@return/(byte) current_xpos#93 ) - (byte*) current_piece_gfx#70 ← phi( toSpritePtr1_@return/(byte*) current_piece_gfx#80 ) - (byte) render_screen_render#46 ← phi( toSpritePtr1_@return/(byte) render_screen_render#50 ) - (byte) render_screen_show#43 ← phi( toSpritePtr1_@return/(byte) render_screen_show#47 ) - (byte) irq_sprite_ypos#20 ← phi( toSpritePtr1_@return/(byte) irq_sprite_ypos#21 ) + to:@38 +@38: scope:[] from toSpritePtr1_@return + (byte) level_bcd#69 ← phi( toSpritePtr1_@return/(byte) level_bcd#79 ) + (byte) level#64 ← phi( toSpritePtr1_@return/(byte) level#76 ) + (dword) score_bcd#57 ← phi( toSpritePtr1_@return/(dword) score_bcd#67 ) + (word) lines_bcd#59 ← phi( toSpritePtr1_@return/(word) lines_bcd#69 ) + (byte) keyboard_modifiers#38 ← phi( toSpritePtr1_@return/(byte) keyboard_modifiers#45 ) + (byte) keyboard_events_size#47 ← phi( toSpritePtr1_@return/(byte) keyboard_events_size#57 ) + (byte) render_screen_showing#26 ← phi( toSpritePtr1_@return/(byte) render_screen_showing#31 ) + (byte) game_over#55 ← phi( toSpritePtr1_@return/(byte) game_over#66 ) + (byte) current_ypos#71 ← phi( toSpritePtr1_@return/(byte) current_ypos#78 ) + (byte) current_xpos#95 ← phi( toSpritePtr1_@return/(byte) current_xpos#104 ) + (byte*) current_piece_gfx#80 ← phi( toSpritePtr1_@return/(byte*) current_piece_gfx#91 ) + (byte) current_piece_char#65 ← phi( toSpritePtr1_@return/(byte) current_piece_char#77 ) + (byte) render_screen_render#46 ← phi( toSpritePtr1_@return/(byte) render_screen_render#51 ) + (byte) render_screen_show#43 ← phi( toSpritePtr1_@return/(byte) render_screen_show#48 ) + (byte) irq_raster_next#22 ← phi( toSpritePtr1_@return/(byte) irq_raster_next#23 ) + (byte) irq_sprite_ypos#21 ← phi( toSpritePtr1_@return/(byte) irq_sprite_ypos#22 ) (byte) toSpritePtr1_return#3 ← phi( toSpritePtr1_@return/(byte) toSpritePtr1_return#1 ) - (byte~) $4 ← (byte) toSpritePtr1_return#3 - (byte) irq_sprite_ptr#0 ← (byte~) $4 + (byte~) $6 ← (byte) toSpritePtr1_return#3 + (byte/signed word/word/dword/signed dword~) $7 ← (byte~) $6 + (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) irq_sprite_ptr#0 ← (byte/signed word/word/dword/signed dword~) $7 (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@25 -sprites_irq_init: scope:[sprites_irq_init] from main::@17 +sprites_irq_init: scope:[sprites_irq_init] from main::@27 asm { sei } *((byte*) IRQ_STATUS#0) ← (byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } @@ -1258,43 +1271,46 @@ sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init return to:@return sprites_irq: scope:[sprites_irq] from - (byte) irq_raster_next#17 ← phi( @36/(byte) irq_raster_next#18 ) - (byte) irq_cnt#15 ← phi( @36/(byte) irq_cnt#17 ) - (byte) render_screen_showing#15 ← phi( @36/(byte) render_screen_showing#14 ) - (byte) irq_sprite_ptr#10 ← phi( @36/(byte) irq_sprite_ptr#15 ) - (byte) irq_sprite_ypos#4 ← phi( @36/(byte) irq_sprite_ypos#8 ) + (byte) irq_cnt#15 ← phi( @37/(byte) irq_cnt#17 ) + (byte) render_screen_showing#15 ← phi( @37/(byte) render_screen_showing#14 ) + (byte) irq_sprite_ptr#12 ← phi( @37/(byte) irq_sprite_ptr#14 ) + (byte) irq_raster_next#5 ← phi( @37/(byte) irq_raster_next#10 ) + (byte) irq_sprite_ypos#5 ← phi( @37/(byte) irq_sprite_ypos#9 ) asm { cld } - (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#4 + (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#5 *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) sprites_irq::ypos#0 *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#5 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 to:sprites_irq::@1 sprites_irq::@1: scope:[sprites_irq] from sprites_irq sprites_irq::@1 - (byte) irq_raster_next#16 ← phi( sprites_irq/(byte) irq_raster_next#17 sprites_irq::@1/(byte) irq_raster_next#16 ) - (byte) irq_cnt#12 ← phi( sprites_irq/(byte) irq_cnt#15 sprites_irq::@1/(byte) irq_cnt#12 ) + (byte) irq_sprite_ypos#23 ← phi( sprites_irq/(byte) irq_sprite_ypos#5 sprites_irq::@1/(byte) irq_sprite_ypos#23 ) + (byte) irq_raster_next#21 ← phi( sprites_irq/(byte) irq_raster_next#5 sprites_irq::@1/(byte) irq_raster_next#21 ) + (byte) irq_cnt#13 ← phi( sprites_irq/(byte) irq_cnt#15 sprites_irq::@1/(byte) irq_cnt#13 ) (byte) render_screen_showing#11 ← phi( sprites_irq/(byte) render_screen_showing#15 sprites_irq::@1/(byte) render_screen_showing#11 ) - (byte) irq_sprite_ptr#7 ← phi( sprites_irq/(byte) irq_sprite_ptr#10 sprites_irq::@1/(byte) irq_sprite_ptr#7 ) - (byte) irq_sprite_ypos#5 ← phi( sprites_irq/(byte) irq_sprite_ypos#4 sprites_irq::@1/(byte) irq_sprite_ypos#5 ) - (bool~) sprites_irq::$0 ← *((byte*) RASTER#0) < (byte) irq_sprite_ypos#5 - if((bool~) sprites_irq::$0) goto sprites_irq::@1 - to:sprites_irq::@7 -sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@1 - (byte) irq_sprite_ypos#16 ← phi( sprites_irq::@1/(byte) irq_sprite_ypos#5 ) - (byte) irq_raster_next#14 ← phi( sprites_irq::@1/(byte) irq_raster_next#16 ) - (byte) irq_cnt#9 ← phi( sprites_irq::@1/(byte) irq_cnt#12 ) - (byte) render_screen_showing#7 ← phi( sprites_irq::@1/(byte) render_screen_showing#11 ) - (byte) irq_sprite_ptr#4 ← phi( sprites_irq::@1/(byte) irq_sprite_ptr#7 ) - (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#4 - (bool~) sprites_irq::$1 ← (byte) render_screen_showing#7 == (byte/signed byte/word/signed word/dword/signed dword) 0 - if((bool~) sprites_irq::$1) goto sprites_irq::@2 + (byte) irq_sprite_ptr#9 ← phi( sprites_irq/(byte) irq_sprite_ptr#12 sprites_irq::@1/(byte) irq_sprite_ptr#9 ) + (byte) sprites_irq::raster_sprite_gfx_modify#1 ← phi( sprites_irq/(byte) sprites_irq::raster_sprite_gfx_modify#0 sprites_irq::@1/(byte) sprites_irq::raster_sprite_gfx_modify#1 ) + (bool~) sprites_irq::$1 ← *((byte*) RASTER#0) < (byte) sprites_irq::raster_sprite_gfx_modify#1 + if((bool~) sprites_irq::$1) goto sprites_irq::@1 to:sprites_irq::@8 -sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@7 - (byte) irq_sprite_ptr#11 ← phi( sprites_irq::@7/(byte) irq_sprite_ptr#4 ) - (byte) irq_sprite_ypos#11 ← phi( sprites_irq::@7/(byte) irq_sprite_ypos#16 ) - (byte) irq_raster_next#10 ← phi( sprites_irq::@7/(byte) irq_raster_next#14 ) - (byte) irq_cnt#6 ← phi( sprites_irq::@7/(byte) irq_cnt#9 ) - (byte) sprites_irq::ptr#5 ← phi( sprites_irq::@7/(byte) sprites_irq::ptr#0 ) +sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@1 + (byte) irq_sprite_ypos#19 ← phi( sprites_irq::@1/(byte) irq_sprite_ypos#23 ) + (byte) irq_raster_next#18 ← phi( sprites_irq::@1/(byte) irq_raster_next#21 ) + (byte) irq_cnt#10 ← phi( sprites_irq::@1/(byte) irq_cnt#13 ) + (byte) render_screen_showing#7 ← phi( sprites_irq::@1/(byte) render_screen_showing#11 ) + (byte) irq_sprite_ptr#5 ← phi( sprites_irq::@1/(byte) irq_sprite_ptr#9 ) + (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#5 + (bool~) sprites_irq::$2 ← (byte) render_screen_showing#7 == (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) sprites_irq::$2) goto sprites_irq::@2 + to:sprites_irq::@9 +sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@8 + (byte) irq_sprite_ptr#15 ← phi( sprites_irq::@8/(byte) irq_sprite_ptr#5 ) + (byte) irq_sprite_ypos#15 ← phi( sprites_irq::@8/(byte) irq_sprite_ypos#19 ) + (byte) irq_raster_next#14 ← phi( sprites_irq::@8/(byte) irq_raster_next#18 ) + (byte) irq_cnt#7 ← phi( sprites_irq::@8/(byte) irq_cnt#10 ) + (byte) sprites_irq::ptr#5 ← phi( sprites_irq::@8/(byte) sprites_irq::ptr#0 ) *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) sprites_irq::ptr#5 (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#5 *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 @@ -1302,12 +1318,12 @@ sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@7 (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 to:sprites_irq::@3 -sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@7 - (byte) irq_sprite_ptr#12 ← phi( sprites_irq::@7/(byte) irq_sprite_ptr#4 ) - (byte) irq_sprite_ypos#12 ← phi( sprites_irq::@7/(byte) irq_sprite_ypos#16 ) - (byte) irq_raster_next#11 ← phi( sprites_irq::@7/(byte) irq_raster_next#14 ) - (byte) irq_cnt#7 ← phi( sprites_irq::@7/(byte) irq_cnt#9 ) - (byte) sprites_irq::ptr#6 ← phi( sprites_irq::@7/(byte) sprites_irq::ptr#0 ) +sprites_irq::@9: scope:[sprites_irq] from sprites_irq::@8 + (byte) irq_sprite_ptr#16 ← phi( sprites_irq::@8/(byte) irq_sprite_ptr#5 ) + (byte) irq_sprite_ypos#16 ← phi( sprites_irq::@8/(byte) irq_sprite_ypos#19 ) + (byte) irq_raster_next#15 ← phi( sprites_irq::@8/(byte) irq_raster_next#18 ) + (byte) irq_cnt#8 ← phi( sprites_irq::@8/(byte) irq_cnt#10 ) + (byte) sprites_irq::ptr#6 ← phi( sprites_irq::@8/(byte) sprites_irq::ptr#0 ) *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) sprites_irq::ptr#6 (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#6 *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 @@ -1315,25 +1331,26 @@ sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@7 (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 to:sprites_irq::@3 -sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@8 - (byte) irq_sprite_ptr#8 ← phi( sprites_irq::@2/(byte) irq_sprite_ptr#11 sprites_irq::@8/(byte) irq_sprite_ptr#12 ) - (byte) irq_sprite_ypos#9 ← phi( sprites_irq::@2/(byte) irq_sprite_ypos#11 sprites_irq::@8/(byte) irq_sprite_ypos#12 ) - (byte) irq_raster_next#7 ← phi( sprites_irq::@2/(byte) irq_raster_next#10 sprites_irq::@8/(byte) irq_raster_next#11 ) - (byte) irq_cnt#4 ← phi( sprites_irq::@2/(byte) irq_cnt#6 sprites_irq::@8/(byte) irq_cnt#7 ) +sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@9 + (byte) irq_sprite_ptr#13 ← phi( sprites_irq::@2/(byte) irq_sprite_ptr#15 sprites_irq::@9/(byte) irq_sprite_ptr#16 ) + (byte) irq_sprite_ypos#12 ← phi( sprites_irq::@2/(byte) irq_sprite_ypos#15 sprites_irq::@9/(byte) irq_sprite_ypos#16 ) + (byte) irq_raster_next#11 ← phi( sprites_irq::@2/(byte) irq_raster_next#14 sprites_irq::@9/(byte) irq_raster_next#15 ) + (byte) irq_cnt#4 ← phi( sprites_irq::@2/(byte) irq_cnt#7 sprites_irq::@9/(byte) irq_cnt#8 ) (byte) irq_cnt#1 ← ++ (byte) irq_cnt#4 - (bool~) sprites_irq::$2 ← (byte) irq_cnt#1 == (byte/signed byte/word/signed word/dword/signed dword) 10 - if((bool~) sprites_irq::$2) goto sprites_irq::@4 - to:sprites_irq::@10 + (bool~) sprites_irq::$3 ← (byte) irq_cnt#1 == (byte/signed byte/word/signed word/dword/signed dword) 9 + if((bool~) sprites_irq::$3) goto sprites_irq::@4 + to:sprites_irq::@11 sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@3 - (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) irq_raster_next#1 ← (byte) IRQ_RASTER_FIRST#0 - (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte) irq_cnt#18 ← phi( sprites_irq::@3/(byte) irq_cnt#1 ) + (byte) irq_raster_next#6 ← phi( sprites_irq::@3/(byte) irq_raster_next#11 ) + (byte) irq_raster_next#1 ← (byte) irq_raster_next#6 + (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) irq_sprite_ypos#1 ← (byte) SPRITES_FIRST_YPOS#0 (byte*) sprites_irq::toSpritePtr2_sprite#0 ← (byte*) PLAYFIELD_SPRITES#0 to:sprites_irq::toSpritePtr2 sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@4 - (byte) irq_sprite_ypos#22 ← phi( sprites_irq::@4/(byte) irq_sprite_ypos#1 ) - (byte) irq_cnt#18 ← phi( sprites_irq::@4/(byte) irq_cnt#2 ) - (byte) irq_raster_next#15 ← phi( sprites_irq::@4/(byte) irq_raster_next#1 ) + (byte) irq_sprite_ypos#20 ← phi( sprites_irq::@4/(byte) irq_sprite_ypos#1 ) + (byte) irq_cnt#16 ← phi( sprites_irq::@4/(byte) irq_cnt#18 ) + (byte) irq_raster_next#19 ← phi( sprites_irq::@4/(byte) irq_raster_next#1 ) (byte*) sprites_irq::toSpritePtr2_sprite#1 ← phi( sprites_irq::@4/(byte*) sprites_irq::toSpritePtr2_sprite#0 ) (word) sprites_irq::toSpritePtr2_$0#0 ← ((word)) (byte*) sprites_irq::toSpritePtr2_sprite#1 (word) sprites_irq::toSpritePtr2_$1#0 ← (word) sprites_irq::toSpritePtr2_$0#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6 @@ -1341,145 +1358,142 @@ sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@4 (byte) sprites_irq::toSpritePtr2_return#0 ← (byte) sprites_irq::toSpritePtr2_$2#0 to:sprites_irq::toSpritePtr2_@return sprites_irq::toSpritePtr2_@return: scope:[sprites_irq] from sprites_irq::toSpritePtr2 - (byte) irq_sprite_ypos#19 ← phi( sprites_irq::toSpritePtr2/(byte) irq_sprite_ypos#22 ) - (byte) irq_cnt#16 ← phi( sprites_irq::toSpritePtr2/(byte) irq_cnt#18 ) - (byte) irq_raster_next#12 ← phi( sprites_irq::toSpritePtr2/(byte) irq_raster_next#15 ) + (byte) irq_sprite_ypos#17 ← phi( sprites_irq::toSpritePtr2/(byte) irq_sprite_ypos#20 ) + (byte) irq_cnt#14 ← phi( sprites_irq::toSpritePtr2/(byte) irq_cnt#16 ) + (byte) irq_raster_next#16 ← phi( sprites_irq::toSpritePtr2/(byte) irq_raster_next#19 ) (byte) sprites_irq::toSpritePtr2_return#2 ← phi( sprites_irq::toSpritePtr2/(byte) sprites_irq::toSpritePtr2_return#0 ) (byte) sprites_irq::toSpritePtr2_return#1 ← (byte) sprites_irq::toSpritePtr2_return#2 - to:sprites_irq::@13 -sprites_irq::@13: scope:[sprites_irq] from sprites_irq::toSpritePtr2_@return - (byte) irq_sprite_ypos#17 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_sprite_ypos#19 ) - (byte) irq_cnt#14 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_cnt#16 ) - (byte) irq_raster_next#8 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_raster_next#12 ) + to:sprites_irq::@15 +sprites_irq::@15: scope:[sprites_irq] from sprites_irq::toSpritePtr2_@return + (byte) irq_sprite_ypos#13 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_sprite_ypos#17 ) + (byte) irq_cnt#12 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_cnt#14 ) + (byte) irq_raster_next#13 ← phi( sprites_irq::toSpritePtr2_@return/(byte) irq_raster_next#16 ) (byte) sprites_irq::toSpritePtr2_return#3 ← phi( sprites_irq::toSpritePtr2_@return/(byte) sprites_irq::toSpritePtr2_return#1 ) - (byte~) sprites_irq::$3 ← (byte) sprites_irq::toSpritePtr2_return#3 - (byte) irq_sprite_ptr#1 ← (byte~) sprites_irq::$3 - to:sprites_irq::@5 -sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@3 - (byte) irq_cnt#13 ← phi( sprites_irq::@3/(byte) irq_cnt#1 ) - (byte) irq_sprite_ptr#5 ← phi( sprites_irq::@3/(byte) irq_sprite_ptr#8 ) - (byte) irq_sprite_ypos#6 ← phi( sprites_irq::@3/(byte) irq_sprite_ypos#9 ) - (byte) irq_raster_next#4 ← phi( sprites_irq::@3/(byte) irq_raster_next#7 ) - (byte) irq_raster_next#2 ← (byte) irq_raster_next#4 + (byte/signed byte/word/signed word/dword/signed dword) 21 - (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#6 + (byte/signed byte/word/signed word/dword/signed dword) 21 - (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#5 + (byte/signed byte/word/signed word/dword/signed dword) 3 - to:sprites_irq::@5 -sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@10 sprites_irq::@13 - (byte) irq_sprite_ptr#14 ← phi( sprites_irq::@10/(byte) irq_sprite_ptr#2 sprites_irq::@13/(byte) irq_sprite_ptr#1 ) - (byte) irq_sprite_ypos#14 ← phi( sprites_irq::@10/(byte) irq_sprite_ypos#2 sprites_irq::@13/(byte) irq_sprite_ypos#17 ) - (byte) irq_cnt#11 ← phi( sprites_irq::@10/(byte) irq_cnt#13 sprites_irq::@13/(byte) irq_cnt#14 ) - (byte) irq_raster_next#5 ← phi( sprites_irq::@10/(byte) irq_raster_next#2 sprites_irq::@13/(byte) irq_raster_next#8 ) - (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#5 - (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 - (bool~) sprites_irq::$5 ← (byte~) sprites_irq::$4 == (byte/signed byte/word/signed word/dword/signed dword) 3 - (bool~) sprites_irq::$6 ← ! (bool~) sprites_irq::$5 - if((bool~) sprites_irq::$6) goto sprites_irq::@6 + (byte~) sprites_irq::$5 ← (byte) sprites_irq::toSpritePtr2_return#3 + (byte) irq_sprite_ptr#1 ← (byte~) sprites_irq::$5 + to:sprites_irq::@7 +sprites_irq::@11: scope:[sprites_irq] from sprites_irq::@3 + (byte) irq_raster_next#12 ← phi( sprites_irq::@3/(byte) irq_raster_next#11 ) + (byte) irq_sprite_ptr#10 ← phi( sprites_irq::@3/(byte) irq_sprite_ptr#13 ) + (byte) irq_sprite_ypos#10 ← phi( sprites_irq::@3/(byte) irq_sprite_ypos#12 ) + (byte) irq_cnt#5 ← phi( sprites_irq::@3/(byte) irq_cnt#1 ) + (bool~) sprites_irq::$4 ← (byte) irq_cnt#5 == (byte/signed byte/word/signed word/dword/signed dword) 10 + if((bool~) sprites_irq::$4) goto sprites_irq::@5 to:sprites_irq::@12 -sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@5 - (byte) irq_sprite_ptr#9 ← phi( sprites_irq::@12/(byte) irq_sprite_ptr#13 sprites_irq::@5/(byte) irq_sprite_ptr#14 ) - (byte) irq_sprite_ypos#10 ← phi( sprites_irq::@12/(byte) irq_sprite_ypos#13 sprites_irq::@5/(byte) irq_sprite_ypos#14 ) - (byte) irq_raster_next#9 ← phi( sprites_irq::@12/(byte) irq_raster_next#13 sprites_irq::@5/(byte) irq_raster_next#5 ) - (byte) irq_cnt#8 ← phi( sprites_irq::@12/(byte) irq_cnt#10 sprites_irq::@5/(byte) irq_cnt#11 ) - (byte) sprites_irq::raster_next#2 ← phi( sprites_irq::@12/(byte) sprites_irq::raster_next#1 sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) - *((byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 +sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@11 + (byte) irq_sprite_ptr#6 ← phi( sprites_irq::@11/(byte) irq_sprite_ptr#10 ) + (byte) irq_sprite_ypos#6 ← phi( sprites_irq::@11/(byte) irq_sprite_ypos#10 ) + (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) irq_raster_next#2 ← (byte) IRQ_RASTER_FIRST#0 + (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#6 + (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#6 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:sprites_irq::@7 +sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@11 + (byte) irq_cnt#11 ← phi( sprites_irq::@11/(byte) irq_cnt#5 ) + (byte) irq_sprite_ptr#7 ← phi( sprites_irq::@11/(byte) irq_sprite_ptr#10 ) + (byte) irq_sprite_ypos#7 ← phi( sprites_irq::@11/(byte) irq_sprite_ypos#10 ) + (byte) irq_raster_next#7 ← phi( sprites_irq::@11/(byte) irq_raster_next#12 ) + (byte) irq_raster_next#3 ← (byte) irq_raster_next#7 + (byte/signed byte/word/signed word/dword/signed dword) 20 + (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#7 + (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#7 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:sprites_irq::@7 +sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 + (byte) irq_sprite_ptr#11 ← phi( sprites_irq::@12/(byte) irq_sprite_ptr#3 sprites_irq::@15/(byte) irq_sprite_ptr#1 sprites_irq::@5/(byte) irq_sprite_ptr#2 ) + (byte) irq_sprite_ypos#11 ← phi( sprites_irq::@12/(byte) irq_sprite_ypos#3 sprites_irq::@15/(byte) irq_sprite_ypos#13 sprites_irq::@5/(byte) irq_sprite_ypos#2 ) + (byte) irq_cnt#9 ← phi( sprites_irq::@12/(byte) irq_cnt#11 sprites_irq::@15/(byte) irq_cnt#12 sprites_irq::@5/(byte) irq_cnt#2 ) + (byte) irq_raster_next#8 ← phi( sprites_irq::@12/(byte) irq_raster_next#3 sprites_irq::@15/(byte) irq_raster_next#13 sprites_irq::@5/(byte) irq_raster_next#2 ) + *((byte*) RASTER#0) ← (byte) irq_raster_next#8 *((byte*) IRQ_STATUS#0) ← (byte) IRQ_RASTER#0 to:sprites_irq::@return -sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@5 - (byte) irq_sprite_ptr#13 ← phi( sprites_irq::@5/(byte) irq_sprite_ptr#14 ) - (byte) irq_sprite_ypos#13 ← phi( sprites_irq::@5/(byte) irq_sprite_ypos#14 ) - (byte) irq_raster_next#13 ← phi( sprites_irq::@5/(byte) irq_raster_next#5 ) - (byte) irq_cnt#10 ← phi( sprites_irq::@5/(byte) irq_cnt#11 ) - (byte) sprites_irq::raster_next#3 ← phi( sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) - (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#3 - (byte/signed byte/word/signed word/dword/signed dword) 1 - to:sprites_irq::@6 -sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6 - (byte) irq_sprite_ptr#6 ← phi( sprites_irq::@6/(byte) irq_sprite_ptr#9 ) - (byte) irq_sprite_ypos#7 ← phi( sprites_irq::@6/(byte) irq_sprite_ypos#10 ) - (byte) irq_raster_next#6 ← phi( sprites_irq::@6/(byte) irq_raster_next#9 ) - (byte) irq_cnt#5 ← phi( sprites_irq::@6/(byte) irq_cnt#8 ) - (byte) irq_cnt#3 ← (byte) irq_cnt#5 - (byte) irq_raster_next#3 ← (byte) irq_raster_next#6 - (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#7 - (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#6 +sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@7 + (byte) irq_sprite_ptr#8 ← phi( sprites_irq::@7/(byte) irq_sprite_ptr#11 ) + (byte) irq_sprite_ypos#8 ← phi( sprites_irq::@7/(byte) irq_sprite_ypos#11 ) + (byte) irq_raster_next#9 ← phi( sprites_irq::@7/(byte) irq_raster_next#8 ) + (byte) irq_cnt#6 ← phi( sprites_irq::@7/(byte) irq_cnt#9 ) + (byte) irq_cnt#3 ← (byte) irq_cnt#6 + (byte) irq_raster_next#4 ← (byte) irq_raster_next#9 + (byte) irq_sprite_ypos#4 ← (byte) irq_sprite_ypos#8 + (byte) irq_sprite_ptr#4 ← (byte) irq_sprite_ptr#8 return to:@return -@25: scope:[] from @37 - (byte) irq_raster_next#20 ← phi( @37/(byte) irq_raster_next#21 ) - (byte) irq_cnt#20 ← phi( @37/(byte) irq_cnt#0 ) - (byte) irq_sprite_ptr#17 ← phi( @37/(byte) irq_sprite_ptr#0 ) - (byte) level_bcd#54 ← phi( @37/(byte) level_bcd#61 ) - (byte) level#50 ← phi( @37/(byte) level#56 ) - (dword) score_bcd#44 ← phi( @37/(dword) score_bcd#49 ) - (word) lines_bcd#44 ← phi( @37/(word) lines_bcd#51 ) - (byte) keyboard_modifiers#34 ← phi( @37/(byte) keyboard_modifiers#39 ) - (byte) keyboard_events_size#40 ← phi( @37/(byte) keyboard_events_size#48 ) - (byte) render_screen_showing#21 ← phi( @37/(byte) render_screen_showing#27 ) - (byte) current_piece_char#44 ← phi( @37/(byte) current_piece_char#54 ) - (byte) current_ypos#56 ← phi( @37/(byte) current_ypos#61 ) - (byte) current_xpos#75 ← phi( @37/(byte) current_xpos#85 ) - (byte*) current_piece_gfx#62 ← phi( @37/(byte*) current_piece_gfx#70 ) - (byte) render_screen_render#40 ← phi( @37/(byte) render_screen_render#46 ) - (byte) render_screen_show#35 ← phi( @37/(byte) render_screen_show#43 ) - (byte) irq_sprite_ypos#18 ← phi( @37/(byte) irq_sprite_ypos#20 ) - (byte/signed byte/word/signed word/dword/signed dword~) $5 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte/signed word/word/dword/signed dword/signed byte~) $6 ← (byte/signed byte/word/signed word/dword/signed dword~) $5 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte[$6]) PIECE_T#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } - (byte/signed byte/word/signed word/dword/signed dword~) $7 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte/signed word/word/dword/signed dword/signed byte~) $8 ← (byte/signed byte/word/signed word/dword/signed dword~) $7 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte[$8]) PIECE_S#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } - (byte/signed byte/word/signed word/dword/signed dword~) $9 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte/signed word/word/dword/signed dword/signed byte~) $10 ← (byte/signed byte/word/signed word/dword/signed dword~) $9 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte[$10]) PIECE_Z#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } - (byte/signed byte/word/signed word/dword/signed dword~) $11 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte/signed word/word/dword/signed dword/signed byte~) $12 ← (byte/signed byte/word/signed word/dword/signed dword~) $11 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte[$12]) PIECE_L#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } - (byte/signed byte/word/signed word/dword/signed dword~) $13 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte/signed word/word/dword/signed dword/signed byte~) $14 ← (byte/signed byte/word/signed word/dword/signed dword~) $13 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte[$14]) PIECE_J#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } - (byte/signed byte/word/signed word/dword/signed dword~) $15 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte/signed word/word/dword/signed dword/signed byte~) $16 ← (byte/signed byte/word/signed word/dword/signed dword~) $15 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte[$16]) PIECE_O#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } - (byte/signed byte/word/signed word/dword/signed dword~) $17 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte/signed word/word/dword/signed dword/signed byte~) $18 ← (byte/signed byte/word/signed word/dword/signed dword~) $17 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte[$18]) PIECE_I#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } - (word~) $19 ← ((word)) (byte[$6]) PIECE_T#0 - (word~) $20 ← ((word)) (byte[$8]) PIECE_S#0 - (word~) $21 ← ((word)) (byte[$10]) PIECE_Z#0 - (word~) $22 ← ((word)) (byte[$14]) PIECE_J#0 - (word~) $23 ← ((word)) (byte[$16]) PIECE_O#0 - (word~) $24 ← ((word)) (byte[$18]) PIECE_I#0 - (word~) $25 ← ((word)) (byte[$12]) PIECE_L#0 - (word[]) PIECES#0 ← { (word~) $19, (word~) $20, (word~) $21, (word~) $22, (word~) $23, (word~) $24, (word~) $25 } +@25: scope:[] from @38 + (byte) irq_cnt#20 ← phi( @38/(byte) irq_cnt#0 ) + (byte) irq_sprite_ptr#18 ← phi( @38/(byte) irq_sprite_ptr#0 ) + (byte) level_bcd#62 ← phi( @38/(byte) level_bcd#69 ) + (byte) level#58 ← phi( @38/(byte) level#64 ) + (dword) score_bcd#52 ← phi( @38/(dword) score_bcd#57 ) + (word) lines_bcd#52 ← phi( @38/(word) lines_bcd#59 ) + (byte) keyboard_modifiers#33 ← phi( @38/(byte) keyboard_modifiers#38 ) + (byte) keyboard_events_size#39 ← phi( @38/(byte) keyboard_events_size#47 ) + (byte) render_screen_showing#20 ← phi( @38/(byte) render_screen_showing#26 ) + (byte) game_over#48 ← phi( @38/(byte) game_over#55 ) + (byte) current_ypos#66 ← phi( @38/(byte) current_ypos#71 ) + (byte) current_xpos#85 ← phi( @38/(byte) current_xpos#95 ) + (byte*) current_piece_gfx#71 ← phi( @38/(byte*) current_piece_gfx#80 ) + (byte) current_piece_char#55 ← phi( @38/(byte) current_piece_char#65 ) + (byte) render_screen_render#40 ← phi( @38/(byte) render_screen_render#46 ) + (byte) render_screen_show#37 ← phi( @38/(byte) render_screen_show#43 ) + (byte) irq_raster_next#20 ← phi( @38/(byte) irq_raster_next#22 ) + (byte) irq_sprite_ypos#18 ← phi( @38/(byte) irq_sprite_ypos#21 ) + (byte/signed byte/word/signed word/dword/signed dword~) $8 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $9 ← (byte/signed byte/word/signed word/dword/signed dword~) $8 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$9]) PIECE_T#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } + (byte/signed byte/word/signed word/dword/signed dword~) $10 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $11 ← (byte/signed byte/word/signed word/dword/signed dword~) $10 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$11]) PIECE_S#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } + (byte/signed byte/word/signed word/dword/signed dword~) $12 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $13 ← (byte/signed byte/word/signed word/dword/signed dword~) $12 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$13]) PIECE_Z#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } + (byte/signed byte/word/signed word/dword/signed dword~) $14 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $15 ← (byte/signed byte/word/signed word/dword/signed dword~) $14 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$15]) PIECE_L#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } + (byte/signed byte/word/signed word/dword/signed dword~) $16 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $17 ← (byte/signed byte/word/signed word/dword/signed dword~) $16 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$17]) PIECE_J#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } + (byte/signed byte/word/signed word/dword/signed dword~) $18 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $19 ← (byte/signed byte/word/signed word/dword/signed dword~) $18 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$19]) PIECE_O#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } + (byte/signed byte/word/signed word/dword/signed dword~) $20 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $21 ← (byte/signed byte/word/signed word/dword/signed dword~) $20 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$21]) PIECE_I#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } + (word~) $22 ← ((word)) (byte[$9]) PIECE_T#0 + (word~) $23 ← ((word)) (byte[$11]) PIECE_S#0 + (word~) $24 ← ((word)) (byte[$13]) PIECE_Z#0 + (word~) $25 ← ((word)) (byte[$17]) PIECE_J#0 + (word~) $26 ← ((word)) (byte[$19]) PIECE_O#0 + (word~) $27 ← ((word)) (byte[$21]) PIECE_I#0 + (word~) $28 ← ((word)) (byte[$15]) PIECE_L#0 + (word[]) PIECES#0 ← { (word~) $22, (word~) $23, (word~) $24, (word~) $25, (word~) $26, (word~) $27, (word~) $28 } (byte[]) PIECES_CHARS#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 100, (byte/signed byte/word/signed word/dword/signed dword) 101, (byte/word/signed word/dword/signed dword) 165, (byte/signed byte/word/signed word/dword/signed dword) 101, (byte/signed byte/word/signed word/dword/signed dword) 100, (byte/signed byte/word/signed word/dword/signed dword) 100, (byte/word/signed word/dword/signed dword) 165 } (byte[]) PIECES_START_X#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4 } (byte[]) PIECES_START_Y#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1 } (byte*[PLAYFIELD_LINES#0]) playfield_lines#0 ← { fill( PLAYFIELD_LINES#0, 0) } - (byte/signed word/word/dword/signed dword~) $26 ← (byte) PLAYFIELD_LINES#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte[$26]) playfield_lines_idx#0 ← { fill( $26, 0) } + (byte/signed word/word/dword/signed dword~) $29 ← (byte) PLAYFIELD_LINES#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte[$29]) playfield_lines_idx#0 ← { fill( $29, 0) } (byte*) current_piece#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) current_orientation#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte[]) MOVEDOWN_SLOW_SPEEDS#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 48, (byte/signed byte/word/signed word/dword/signed dword) 43, (byte/signed byte/word/signed word/dword/signed dword) 38, (byte/signed byte/word/signed word/dword/signed dword) 33, (byte/signed byte/word/signed word/dword/signed dword) 28, (byte/signed byte/word/signed word/dword/signed dword) 23, (byte/signed byte/word/signed word/dword/signed dword) 18, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 1 } (byte) current_movedown_slow#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 (byte) current_movedown_fast#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) current_movedown_counter#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (dword[]) SCORE_BASE_BCD#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 64, (word/signed word/dword/signed dword) 256, (word/signed word/dword/signed dword) 768, (word/signed word/dword/signed dword) 4608 } (dword[5]) score_add_bcd#0 ← { fill( 5, 0) } - (byte[]) MOVEDOWN_SLOW_SPEEDS#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 48, (byte/signed byte/word/signed word/dword/signed dword) 43, (byte/signed byte/word/signed word/dword/signed dword) 38, (byte/signed byte/word/signed word/dword/signed dword) 33, (byte/signed byte/word/signed word/dword/signed dword) 28, (byte/signed byte/word/signed word/dword/signed dword) 23, (byte/signed byte/word/signed word/dword/signed dword) 18, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 1 } - to:@29 -play_init: scope:[play_init] from main::@18 - (byte) level#32 ← phi( main::@18/(byte) level#45 ) + to:@30 +play_init: scope:[play_init] from main::@28 + (byte) level#39 ← phi( main::@28/(byte) level#52 ) (byte) play_init::idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte*) play_init::pli#0 ← (byte[$3]) playfield#0 (byte/signed word/word/dword/signed dword~) play_init::$0 ← (byte) PLAYFIELD_LINES#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) play_init::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_init::@1 play_init::@1: scope:[play_init] from play_init play_init::@1 - (byte) level#21 ← phi( play_init/(byte) level#32 play_init::@1/(byte) level#21 ) + (byte) level#25 ← phi( play_init/(byte) level#39 play_init::@1/(byte) level#25 ) (byte) play_init::idx#2 ← phi( play_init/(byte) play_init::idx#0 play_init::@1/(byte) play_init::idx#1 ) (byte*) play_init::pli#2 ← phi( play_init/(byte*) play_init::pli#0 play_init::@1/(byte*) play_init::pli#1 ) (byte) play_init::j#2 ← phi( play_init/(byte) play_init::j#0 play_init::@1/(byte) play_init::j#1 ) (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 - *((byte[$26]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 + *((byte[$29]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (byte) PLAYFIELD_COLS#0 (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (byte) PLAYFIELD_COLS#0 (byte) play_init::j#1 ← (byte) play_init::j#2 + rangenext(0,play_init::$0) @@ -1487,14 +1501,14 @@ play_init::@1: scope:[play_init] from play_init play_init::@1 if((bool~) play_init::$2) goto play_init::@1 to:play_init::@3 play_init::@3: scope:[play_init] from play_init::@1 - (byte) level#10 ← phi( play_init::@1/(byte) level#21 ) + (byte) level#12 ← phi( play_init::@1/(byte) level#25 ) (byte~) play_init::$3 ← (byte) PLAYFIELD_COLS#0 * (byte) PLAYFIELD_LINES#0 - *((byte[$26]) playfield_lines_idx#0 + (byte) PLAYFIELD_LINES#0) ← (byte~) play_init::$3 - (byte) current_movedown_slow#1 ← *((byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#10) + *((byte[$29]) playfield_lines_idx#0 + (byte) PLAYFIELD_LINES#0) ← (byte~) play_init::$3 + (byte) current_movedown_slow#1 ← *((byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#12) (byte) play_init::b#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_init::@2 play_init::@2: scope:[play_init] from play_init::@2 play_init::@3 - (byte) current_movedown_slow#25 ← phi( play_init::@2/(byte) current_movedown_slow#25 play_init::@3/(byte) current_movedown_slow#1 ) + (byte) current_movedown_slow#29 ← phi( play_init::@2/(byte) current_movedown_slow#29 play_init::@3/(byte) current_movedown_slow#1 ) (byte) play_init::b#2 ← phi( play_init::@2/(byte) play_init::b#1 play_init::@3/(byte) play_init::b#0 ) (byte~) play_init::$4 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) play_init::b4#0 ← (byte~) play_init::$4 @@ -1504,62 +1518,235 @@ play_init::@2: scope:[play_init] from play_init::@2 play_init::@3 if((bool~) play_init::$5) goto play_init::@2 to:play_init::@return play_init::@return: scope:[play_init] from play_init::@2 - (byte) current_movedown_slow#14 ← phi( play_init::@2/(byte) current_movedown_slow#25 ) - (byte) current_movedown_slow#2 ← (byte) current_movedown_slow#14 + (byte) current_movedown_slow#16 ← phi( play_init::@2/(byte) current_movedown_slow#29 ) + (byte) current_movedown_slow#2 ← (byte) current_movedown_slow#16 return to:@return -play_move_down: scope:[play_move_down] from main::@25 - (byte) current_piece_char#74 ← phi( main::@25/(byte) current_piece_char#23 ) - (byte*) current_piece_gfx#87 ← phi( main::@25/(byte*) current_piece_gfx#32 ) - (byte*) current_piece#67 ← phi( main::@25/(byte*) current_piece#27 ) - (byte) level_bcd#80 ← phi( main::@25/(byte) level_bcd#32 ) - (byte) level#77 ← phi( main::@25/(byte) level#29 ) - (dword) score_bcd#65 ← phi( main::@25/(dword) score_bcd#25 ) - (word) lines_bcd#68 ← phi( main::@25/(word) lines_bcd#25 ) - (byte) current_orientation#68 ← phi( main::@25/(byte) current_orientation#37 ) - (byte) current_xpos#94 ← phi( main::@25/(byte) current_xpos#44 ) - (byte) current_ypos#68 ← phi( main::@25/(byte) current_ypos#36 ) - (byte) current_movedown_slow#55 ← phi( main::@25/(byte) current_movedown_slow#37 ) - (byte) play_move_down::key_event#1 ← phi( main::@25/(byte) play_move_down::key_event#0 ) - (byte) current_movedown_counter#7 ← phi( main::@25/(byte) current_movedown_counter#14 ) - (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#7 +play_movement: scope:[play_movement] from main::@7 + (byte) game_over#21 ← phi( main::@7/(byte) game_over#30 ) + (byte) current_xpos#34 ← phi( main::@7/(byte) current_xpos#54 ) + (byte*) current_piece_gfx#28 ← phi( main::@7/(byte*) current_piece_gfx#41 ) + (byte) current_orientation#30 ← phi( main::@7/(byte) current_orientation#46 ) + (byte) current_piece_char#22 ← phi( main::@7/(byte) current_piece_char#32 ) + (byte*) current_piece#22 ← phi( main::@7/(byte*) current_piece#36 ) + (byte) level_bcd#27 ← phi( main::@7/(byte) level_bcd#39 ) + (byte) current_movedown_slow#30 ← phi( main::@7/(byte) current_movedown_slow#44 ) + (byte) level#26 ← phi( main::@7/(byte) level#36 ) + (dword) score_bcd#22 ← phi( main::@7/(dword) score_bcd#32 ) + (word) lines_bcd#22 ← phi( main::@7/(word) lines_bcd#32 ) + (byte) current_ypos#29 ← phi( main::@7/(byte) current_ypos#45 ) + (byte) current_movedown_counter#18 ← phi( main::@7/(byte) current_movedown_counter#25 ) + (byte) play_movement::key_event#1 ← phi( main::@7/(byte) play_movement::key_event#0 ) + (byte) play_movement::render#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#1 + call play_move_down + (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 + to:play_movement::@5 +play_movement::@5: scope:[play_movement] from play_movement + (byte) play_movement::key_event#4 ← phi( play_movement/(byte) play_movement::key_event#1 ) + (byte) play_movement::render#4 ← phi( play_movement/(byte) play_movement::render#0 ) + (byte) game_over#11 ← phi( play_movement/(byte) game_over#4 ) + (byte) current_xpos#15 ← phi( play_movement/(byte) current_xpos#4 ) + (byte*) current_piece_gfx#14 ← phi( play_movement/(byte*) current_piece_gfx#4 ) + (byte) current_orientation#14 ← phi( play_movement/(byte) current_orientation#5 ) + (byte) current_piece_char#11 ← phi( play_movement/(byte) current_piece_char#3 ) + (byte*) current_piece#11 ← phi( play_movement/(byte*) current_piece#4 ) + (byte) level_bcd#14 ← phi( play_movement/(byte) level_bcd#4 ) + (byte) current_movedown_slow#17 ← phi( play_movement/(byte) current_movedown_slow#6 ) + (byte) level#13 ← phi( play_movement/(byte) level#4 ) + (dword) score_bcd#11 ← phi( play_movement/(dword) score_bcd#4 ) + (word) lines_bcd#12 ← phi( play_movement/(word) lines_bcd#4 ) + (byte) current_ypos#12 ← phi( play_movement/(byte) current_ypos#4 ) + (byte) current_movedown_counter#9 ← phi( play_movement/(byte) current_movedown_counter#5 ) + (byte) play_move_down::return#4 ← phi( play_movement/(byte) play_move_down::return#0 ) + (byte~) play_movement::$0 ← (byte) play_move_down::return#4 + (byte) current_movedown_counter#1 ← (byte) current_movedown_counter#9 + (byte) current_ypos#0 ← (byte) current_ypos#12 + (word) lines_bcd#1 ← (word) lines_bcd#12 + (dword) score_bcd#1 ← (dword) score_bcd#11 + (byte) level#1 ← (byte) level#13 + (byte) current_movedown_slow#3 ← (byte) current_movedown_slow#17 + (byte) level_bcd#1 ← (byte) level_bcd#14 + (byte*) current_piece#1 ← (byte*) current_piece#11 + (byte) current_piece_char#0 ← (byte) current_piece_char#11 + (byte) current_orientation#1 ← (byte) current_orientation#14 + (byte*) current_piece_gfx#0 ← (byte*) current_piece_gfx#14 + (byte) current_xpos#0 ← (byte) current_xpos#15 + (byte) game_over#1 ← (byte) game_over#11 + (byte) play_movement::render#1 ← (byte) play_movement::render#4 + (byte~) play_movement::$0 + (bool~) play_movement::$1 ← (byte) game_over#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_movement::$2 ← ! (bool~) play_movement::$1 + if((bool~) play_movement::$2) goto play_movement::@1 + to:play_movement::@2 +play_movement::@1: scope:[play_movement] from play_movement::@5 + (byte) game_over#43 ← phi( play_movement::@5/(byte) game_over#1 ) + (byte) current_piece_char#50 ← phi( play_movement::@5/(byte) current_piece_char#0 ) + (byte*) current_piece#53 ← phi( play_movement::@5/(byte*) current_piece#1 ) + (byte) level_bcd#57 ← phi( play_movement::@5/(byte) level_bcd#1 ) + (byte) current_movedown_slow#62 ← phi( play_movement::@5/(byte) current_movedown_slow#3 ) + (byte) level#53 ← phi( play_movement::@5/(byte) level#1 ) + (dword) score_bcd#47 ← phi( play_movement::@5/(dword) score_bcd#1 ) + (word) lines_bcd#47 ← phi( play_movement::@5/(word) lines_bcd#1 ) + (byte) current_movedown_counter#35 ← phi( play_movement::@5/(byte) current_movedown_counter#1 ) + (byte) current_ypos#52 ← phi( play_movement::@5/(byte) current_ypos#0 ) + (byte*) current_piece_gfx#47 ← phi( play_movement::@5/(byte*) current_piece_gfx#0 ) + (byte) current_orientation#49 ← phi( play_movement::@5/(byte) current_orientation#1 ) + (byte) play_movement::render#8 ← phi( play_movement::@5/(byte) play_movement::render#1 ) + (byte) current_xpos#35 ← phi( play_movement::@5/(byte) current_xpos#0 ) + (byte) play_movement::key_event#2 ← phi( play_movement::@5/(byte) play_movement::key_event#4 ) + (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#2 + call play_move_leftright + (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + to:play_movement::@6 +play_movement::@6: scope:[play_movement] from play_movement::@1 + (byte) game_over#33 ← phi( play_movement::@1/(byte) game_over#43 ) + (byte) current_piece_char#36 ← phi( play_movement::@1/(byte) current_piece_char#50 ) + (byte*) current_piece#39 ← phi( play_movement::@1/(byte*) current_piece#53 ) + (byte) level_bcd#43 ← phi( play_movement::@1/(byte) level_bcd#57 ) + (byte) current_movedown_slow#47 ← phi( play_movement::@1/(byte) current_movedown_slow#62 ) + (byte) level#40 ← phi( play_movement::@1/(byte) level#53 ) + (dword) score_bcd#36 ← phi( play_movement::@1/(dword) score_bcd#47 ) + (word) lines_bcd#36 ← phi( play_movement::@1/(word) lines_bcd#47 ) + (byte) current_ypos#48 ← phi( play_movement::@1/(byte) current_ypos#52 ) + (byte) current_movedown_counter#28 ← phi( play_movement::@1/(byte) current_movedown_counter#35 ) + (byte*) current_piece_gfx#29 ← phi( play_movement::@1/(byte*) current_piece_gfx#47 ) + (byte) current_orientation#31 ← phi( play_movement::@1/(byte) current_orientation#49 ) + (byte) play_movement::key_event#3 ← phi( play_movement::@1/(byte) play_movement::key_event#2 ) + (byte) play_movement::render#5 ← phi( play_movement::@1/(byte) play_movement::render#8 ) + (byte) current_xpos#16 ← phi( play_movement::@1/(byte) current_xpos#6 ) + (byte) play_move_leftright::return#5 ← phi( play_movement::@1/(byte) play_move_leftright::return#0 ) + (byte~) play_movement::$3 ← (byte) play_move_leftright::return#5 + (byte) current_xpos#1 ← (byte) current_xpos#16 + (byte) play_movement::render#2 ← (byte) play_movement::render#5 + (byte~) play_movement::$3 + (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#3 + call play_move_rotate + (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + to:play_movement::@7 +play_movement::@7: scope:[play_movement] from play_movement::@6 + (byte) game_over#23 ← phi( play_movement::@6/(byte) game_over#33 ) + (byte) current_xpos#37 ← phi( play_movement::@6/(byte) current_xpos#1 ) + (byte) current_piece_char#24 ← phi( play_movement::@6/(byte) current_piece_char#36 ) + (byte*) current_piece#24 ← phi( play_movement::@6/(byte*) current_piece#39 ) + (byte) level_bcd#29 ← phi( play_movement::@6/(byte) level_bcd#43 ) + (byte) current_movedown_slow#32 ← phi( play_movement::@6/(byte) current_movedown_slow#47 ) + (byte) level#28 ← phi( play_movement::@6/(byte) level#40 ) + (dword) score_bcd#24 ← phi( play_movement::@6/(dword) score_bcd#36 ) + (word) lines_bcd#24 ← phi( play_movement::@6/(word) lines_bcd#36 ) + (byte) current_ypos#31 ← phi( play_movement::@6/(byte) current_ypos#48 ) + (byte) current_movedown_counter#20 ← phi( play_movement::@6/(byte) current_movedown_counter#28 ) + (byte) play_movement::render#6 ← phi( play_movement::@6/(byte) play_movement::render#2 ) + (byte*) current_piece_gfx#15 ← phi( play_movement::@6/(byte*) current_piece_gfx#5 ) + (byte) current_orientation#15 ← phi( play_movement::@6/(byte) current_orientation#6 ) + (byte) play_move_rotate::return#5 ← phi( play_movement::@6/(byte) play_move_rotate::return#0 ) + (byte~) play_movement::$4 ← (byte) play_move_rotate::return#5 + (byte) current_orientation#2 ← (byte) current_orientation#15 + (byte*) current_piece_gfx#1 ← (byte*) current_piece_gfx#15 + (byte) play_movement::render#3 ← (byte) play_movement::render#6 + (byte~) play_movement::$4 + (byte) play_movement::return#0 ← (byte) play_movement::render#3 + to:play_movement::@return +play_movement::@2: scope:[play_movement] from play_movement::@5 + (byte) game_over#22 ← phi( play_movement::@5/(byte) game_over#1 ) + (byte) current_xpos#36 ← phi( play_movement::@5/(byte) current_xpos#0 ) + (byte*) current_piece_gfx#30 ← phi( play_movement::@5/(byte*) current_piece_gfx#0 ) + (byte) current_orientation#32 ← phi( play_movement::@5/(byte) current_orientation#1 ) + (byte) current_piece_char#23 ← phi( play_movement::@5/(byte) current_piece_char#0 ) + (byte*) current_piece#23 ← phi( play_movement::@5/(byte*) current_piece#1 ) + (byte) level_bcd#28 ← phi( play_movement::@5/(byte) level_bcd#1 ) + (byte) current_movedown_slow#31 ← phi( play_movement::@5/(byte) current_movedown_slow#3 ) + (byte) level#27 ← phi( play_movement::@5/(byte) level#1 ) + (dword) score_bcd#23 ← phi( play_movement::@5/(dword) score_bcd#1 ) + (word) lines_bcd#23 ← phi( play_movement::@5/(word) lines_bcd#1 ) + (byte) current_ypos#30 ← phi( play_movement::@5/(byte) current_ypos#0 ) + (byte) current_movedown_counter#19 ← phi( play_movement::@5/(byte) current_movedown_counter#1 ) + (byte) play_movement::render#7 ← phi( play_movement::@5/(byte) play_movement::render#1 ) + (byte) play_movement::return#1 ← (byte) play_movement::render#7 + to:play_movement::@return +play_movement::@return: scope:[play_movement] from play_movement::@2 play_movement::@7 + (byte) game_over#12 ← phi( play_movement::@2/(byte) game_over#22 play_movement::@7/(byte) game_over#23 ) + (byte) current_xpos#17 ← phi( play_movement::@2/(byte) current_xpos#36 play_movement::@7/(byte) current_xpos#37 ) + (byte*) current_piece_gfx#16 ← phi( play_movement::@2/(byte*) current_piece_gfx#30 play_movement::@7/(byte*) current_piece_gfx#1 ) + (byte) current_orientation#16 ← phi( play_movement::@2/(byte) current_orientation#32 play_movement::@7/(byte) current_orientation#2 ) + (byte) current_piece_char#12 ← phi( play_movement::@2/(byte) current_piece_char#23 play_movement::@7/(byte) current_piece_char#24 ) + (byte*) current_piece#12 ← phi( play_movement::@2/(byte*) current_piece#23 play_movement::@7/(byte*) current_piece#24 ) + (byte) level_bcd#15 ← phi( play_movement::@2/(byte) level_bcd#28 play_movement::@7/(byte) level_bcd#29 ) + (byte) current_movedown_slow#18 ← phi( play_movement::@2/(byte) current_movedown_slow#31 play_movement::@7/(byte) current_movedown_slow#32 ) + (byte) level#14 ← phi( play_movement::@2/(byte) level#27 play_movement::@7/(byte) level#28 ) + (dword) score_bcd#12 ← phi( play_movement::@2/(dword) score_bcd#23 play_movement::@7/(dword) score_bcd#24 ) + (word) lines_bcd#13 ← phi( play_movement::@2/(word) lines_bcd#23 play_movement::@7/(word) lines_bcd#24 ) + (byte) current_ypos#13 ← phi( play_movement::@2/(byte) current_ypos#30 play_movement::@7/(byte) current_ypos#31 ) + (byte) current_movedown_counter#10 ← phi( play_movement::@2/(byte) current_movedown_counter#19 play_movement::@7/(byte) current_movedown_counter#20 ) + (byte) play_movement::return#4 ← phi( play_movement::@2/(byte) play_movement::return#1 play_movement::@7/(byte) play_movement::return#0 ) + (byte) play_movement::return#2 ← (byte) play_movement::return#4 + (byte) current_movedown_counter#2 ← (byte) current_movedown_counter#10 + (byte) current_ypos#1 ← (byte) current_ypos#13 + (word) lines_bcd#2 ← (word) lines_bcd#13 + (dword) score_bcd#2 ← (dword) score_bcd#12 + (byte) level#2 ← (byte) level#14 + (byte) current_movedown_slow#4 ← (byte) current_movedown_slow#18 + (byte) level_bcd#2 ← (byte) level_bcd#15 + (byte*) current_piece#2 ← (byte*) current_piece#12 + (byte) current_piece_char#1 ← (byte) current_piece_char#12 + (byte) current_orientation#3 ← (byte) current_orientation#16 + (byte*) current_piece_gfx#2 ← (byte*) current_piece_gfx#16 + (byte) current_xpos#2 ← (byte) current_xpos#17 + (byte) game_over#2 ← (byte) game_over#12 + return + to:@return +play_move_down: scope:[play_move_down] from play_movement + (byte) game_over#77 ← phi( play_movement/(byte) game_over#21 ) + (byte*) current_piece_gfx#100 ← phi( play_movement/(byte*) current_piece_gfx#28 ) + (byte) current_piece_char#87 ← phi( play_movement/(byte) current_piece_char#22 ) + (byte*) current_piece#79 ← phi( play_movement/(byte*) current_piece#22 ) + (byte) level_bcd#89 ← phi( play_movement/(byte) level_bcd#27 ) + (byte) level#86 ← phi( play_movement/(byte) level#26 ) + (dword) score_bcd#75 ← phi( play_movement/(dword) score_bcd#22 ) + (word) lines_bcd#77 ← phi( play_movement/(word) lines_bcd#22 ) + (byte) current_orientation#79 ← phi( play_movement/(byte) current_orientation#30 ) + (byte) current_xpos#105 ← phi( play_movement/(byte) current_xpos#34 ) + (byte) current_ypos#79 ← phi( play_movement/(byte) current_ypos#29 ) + (byte) current_movedown_slow#63 ← phi( play_movement/(byte) current_movedown_slow#30 ) + (byte) play_move_down::key_event#1 ← phi( play_movement/(byte) play_move_down::key_event#0 ) + (byte) current_movedown_counter#11 ← phi( play_movement/(byte) current_movedown_counter#18 ) + (byte) current_movedown_counter#3 ← ++ (byte) current_movedown_counter#11 (byte) play_move_down::movedown#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) play_move_down::$0 ← (byte) play_move_down::key_event#1 == (byte) KEY_SPACE#0 (bool~) play_move_down::$1 ← ! (bool~) play_move_down::$0 if((bool~) play_move_down::$1) goto play_move_down::@1 to:play_move_down::@8 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@8 - (byte) current_piece_char#67 ← phi( play_move_down/(byte) current_piece_char#74 play_move_down::@8/(byte) current_piece_char#75 ) - (byte*) current_piece_gfx#81 ← phi( play_move_down/(byte*) current_piece_gfx#87 play_move_down::@8/(byte*) current_piece_gfx#88 ) - (byte*) current_piece#62 ← phi( play_move_down/(byte*) current_piece#67 play_move_down::@8/(byte*) current_piece#68 ) - (byte) level_bcd#72 ← phi( play_move_down/(byte) level_bcd#80 play_move_down::@8/(byte) level_bcd#81 ) - (byte) level#69 ← phi( play_move_down/(byte) level#77 play_move_down::@8/(byte) level#78 ) - (dword) score_bcd#59 ← phi( play_move_down/(dword) score_bcd#65 play_move_down::@8/(dword) score_bcd#66 ) - (word) lines_bcd#62 ← phi( play_move_down/(word) lines_bcd#68 play_move_down::@8/(word) lines_bcd#69 ) - (byte) current_orientation#62 ← phi( play_move_down/(byte) current_orientation#68 play_move_down::@8/(byte) current_orientation#69 ) - (byte) current_xpos#86 ← phi( play_move_down/(byte) current_xpos#94 play_move_down::@8/(byte) current_xpos#95 ) - (byte) current_ypos#62 ← phi( play_move_down/(byte) current_ypos#68 play_move_down::@8/(byte) current_ypos#69 ) + (byte) game_over#67 ← phi( play_move_down/(byte) game_over#77 play_move_down::@8/(byte) game_over#78 ) + (byte*) current_piece_gfx#92 ← phi( play_move_down/(byte*) current_piece_gfx#100 play_move_down::@8/(byte*) current_piece_gfx#101 ) + (byte) current_piece_char#78 ← phi( play_move_down/(byte) current_piece_char#87 play_move_down::@8/(byte) current_piece_char#88 ) + (byte*) current_piece#73 ← phi( play_move_down/(byte*) current_piece#79 play_move_down::@8/(byte*) current_piece#80 ) + (byte) level_bcd#80 ← phi( play_move_down/(byte) level_bcd#89 play_move_down::@8/(byte) level_bcd#90 ) + (byte) level#77 ← phi( play_move_down/(byte) level#86 play_move_down::@8/(byte) level#87 ) + (dword) score_bcd#68 ← phi( play_move_down/(dword) score_bcd#75 play_move_down::@8/(dword) score_bcd#76 ) + (word) lines_bcd#70 ← phi( play_move_down/(word) lines_bcd#77 play_move_down::@8/(word) lines_bcd#78 ) + (byte) current_orientation#72 ← phi( play_move_down/(byte) current_orientation#79 play_move_down::@8/(byte) current_orientation#80 ) + (byte) current_xpos#96 ← phi( play_move_down/(byte) current_xpos#105 play_move_down::@8/(byte) current_xpos#106 ) + (byte) current_ypos#72 ← phi( play_move_down/(byte) current_ypos#79 play_move_down::@8/(byte) current_ypos#80 ) (byte) play_move_down::movedown#12 ← phi( play_move_down/(byte) play_move_down::movedown#0 play_move_down::@8/(byte) play_move_down::movedown#1 ) - (byte) current_movedown_slow#40 ← phi( play_move_down/(byte) current_movedown_slow#55 play_move_down::@8/(byte) current_movedown_slow#56 ) - (byte) current_movedown_counter#21 ← phi( play_move_down/(byte) current_movedown_counter#1 play_move_down::@8/(byte) current_movedown_counter#28 ) + (byte) current_movedown_slow#48 ← phi( play_move_down/(byte) current_movedown_slow#63 play_move_down::@8/(byte) current_movedown_slow#64 ) + (byte) current_movedown_counter#29 ← phi( play_move_down/(byte) current_movedown_counter#3 play_move_down::@8/(byte) current_movedown_counter#36 ) (byte) keyboard_event_pressed::keycode#4 ← (byte) KEY_SPACE#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#6 ← (byte) keyboard_event_pressed::return#5 to:play_move_down::@17 play_move_down::@17: scope:[play_move_down] from play_move_down::@1 - (byte) current_piece_char#56 ← phi( play_move_down::@1/(byte) current_piece_char#67 ) - (byte*) current_piece_gfx#72 ← phi( play_move_down::@1/(byte*) current_piece_gfx#81 ) - (byte*) current_piece#55 ← phi( play_move_down::@1/(byte*) current_piece#62 ) - (byte) level_bcd#63 ← phi( play_move_down::@1/(byte) level_bcd#72 ) - (byte) level#58 ← phi( play_move_down::@1/(byte) level#69 ) - (dword) score_bcd#51 ← phi( play_move_down::@1/(dword) score_bcd#59 ) - (word) lines_bcd#53 ← phi( play_move_down::@1/(word) lines_bcd#62 ) - (byte) current_orientation#53 ← phi( play_move_down::@1/(byte) current_orientation#62 ) - (byte) current_xpos#71 ← phi( play_move_down::@1/(byte) current_xpos#86 ) - (byte) current_ypos#52 ← phi( play_move_down::@1/(byte) current_ypos#62 ) + (byte) game_over#57 ← phi( play_move_down::@1/(byte) game_over#67 ) + (byte*) current_piece_gfx#82 ← phi( play_move_down::@1/(byte*) current_piece_gfx#92 ) + (byte) current_piece_char#67 ← phi( play_move_down::@1/(byte) current_piece_char#78 ) + (byte*) current_piece#66 ← phi( play_move_down::@1/(byte*) current_piece#73 ) + (byte) level_bcd#71 ← phi( play_move_down::@1/(byte) level_bcd#80 ) + (byte) level#66 ← phi( play_move_down::@1/(byte) level#77 ) + (dword) score_bcd#59 ← phi( play_move_down::@1/(dword) score_bcd#68 ) + (word) lines_bcd#61 ← phi( play_move_down::@1/(word) lines_bcd#70 ) + (byte) current_orientation#62 ← phi( play_move_down::@1/(byte) current_orientation#72 ) + (byte) current_xpos#81 ← phi( play_move_down::@1/(byte) current_xpos#96 ) + (byte) current_ypos#63 ← phi( play_move_down::@1/(byte) current_ypos#72 ) (byte) play_move_down::movedown#10 ← phi( play_move_down::@1/(byte) play_move_down::movedown#12 ) - (byte) current_movedown_slow#27 ← phi( play_move_down::@1/(byte) current_movedown_slow#40 ) - (byte) current_movedown_counter#16 ← phi( play_move_down::@1/(byte) current_movedown_counter#21 ) + (byte) current_movedown_slow#34 ← phi( play_move_down::@1/(byte) current_movedown_slow#48 ) + (byte) current_movedown_counter#22 ← phi( play_move_down::@1/(byte) current_movedown_counter#29 ) (byte) keyboard_event_pressed::return#12 ← phi( play_move_down::@1/(byte) keyboard_event_pressed::return#6 ) (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 (bool~) play_move_down::$3 ← (byte~) play_move_down::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1567,228 +1754,242 @@ play_move_down::@17: scope:[play_move_down] from play_move_down::@1 if((bool~) play_move_down::$4) goto play_move_down::@2 to:play_move_down::@9 play_move_down::@8: scope:[play_move_down] from play_move_down - (byte) current_piece_char#75 ← phi( play_move_down/(byte) current_piece_char#74 ) - (byte*) current_piece_gfx#88 ← phi( play_move_down/(byte*) current_piece_gfx#87 ) - (byte*) current_piece#68 ← phi( play_move_down/(byte*) current_piece#67 ) - (byte) level_bcd#81 ← phi( play_move_down/(byte) level_bcd#80 ) - (byte) level#78 ← phi( play_move_down/(byte) level#77 ) - (dword) score_bcd#66 ← phi( play_move_down/(dword) score_bcd#65 ) - (word) lines_bcd#69 ← phi( play_move_down/(word) lines_bcd#68 ) - (byte) current_orientation#69 ← phi( play_move_down/(byte) current_orientation#68 ) - (byte) current_xpos#95 ← phi( play_move_down/(byte) current_xpos#94 ) - (byte) current_ypos#69 ← phi( play_move_down/(byte) current_ypos#68 ) - (byte) current_movedown_slow#56 ← phi( play_move_down/(byte) current_movedown_slow#55 ) - (byte) current_movedown_counter#28 ← phi( play_move_down/(byte) current_movedown_counter#1 ) + (byte) game_over#78 ← phi( play_move_down/(byte) game_over#77 ) + (byte*) current_piece_gfx#101 ← phi( play_move_down/(byte*) current_piece_gfx#100 ) + (byte) current_piece_char#88 ← phi( play_move_down/(byte) current_piece_char#87 ) + (byte*) current_piece#80 ← phi( play_move_down/(byte*) current_piece#79 ) + (byte) level_bcd#90 ← phi( play_move_down/(byte) level_bcd#89 ) + (byte) level#87 ← phi( play_move_down/(byte) level#86 ) + (dword) score_bcd#76 ← phi( play_move_down/(dword) score_bcd#75 ) + (word) lines_bcd#78 ← phi( play_move_down/(word) lines_bcd#77 ) + (byte) current_orientation#80 ← phi( play_move_down/(byte) current_orientation#79 ) + (byte) current_xpos#106 ← phi( play_move_down/(byte) current_xpos#105 ) + (byte) current_ypos#80 ← phi( play_move_down/(byte) current_ypos#79 ) + (byte) current_movedown_slow#64 ← phi( play_move_down/(byte) current_movedown_slow#63 ) + (byte) current_movedown_counter#36 ← phi( play_move_down/(byte) current_movedown_counter#3 ) (byte) play_move_down::movedown#4 ← phi( play_move_down/(byte) play_move_down::movedown#0 ) (byte) play_move_down::movedown#1 ← ++ (byte) play_move_down::movedown#4 to:play_move_down::@1 play_move_down::@2: scope:[play_move_down] from play_move_down::@10 play_move_down::@17 play_move_down::@3 - (byte) current_piece_char#41 ← phi( play_move_down::@10/(byte) current_piece_char#55 play_move_down::@17/(byte) current_piece_char#56 play_move_down::@3/(byte) current_piece_char#57 ) - (byte*) current_piece_gfx#57 ← phi( play_move_down::@10/(byte*) current_piece_gfx#71 play_move_down::@17/(byte*) current_piece_gfx#72 play_move_down::@3/(byte*) current_piece_gfx#73 ) - (byte*) current_piece#44 ← phi( play_move_down::@10/(byte*) current_piece#54 play_move_down::@17/(byte*) current_piece#55 play_move_down::@3/(byte*) current_piece#56 ) - (byte) level_bcd#51 ← phi( play_move_down::@10/(byte) level_bcd#62 play_move_down::@17/(byte) level_bcd#63 play_move_down::@3/(byte) level_bcd#64 ) - (byte) level#47 ← phi( play_move_down::@10/(byte) level#57 play_move_down::@17/(byte) level#58 play_move_down::@3/(byte) level#59 ) - (dword) score_bcd#41 ← phi( play_move_down::@10/(dword) score_bcd#50 play_move_down::@17/(dword) score_bcd#51 play_move_down::@3/(dword) score_bcd#52 ) - (word) lines_bcd#41 ← phi( play_move_down::@10/(word) lines_bcd#52 play_move_down::@17/(word) lines_bcd#53 play_move_down::@3/(word) lines_bcd#54 ) - (byte) current_orientation#42 ← phi( play_move_down::@10/(byte) current_orientation#52 play_move_down::@17/(byte) current_orientation#53 play_move_down::@3/(byte) current_orientation#54 ) - (byte) current_xpos#50 ← phi( play_move_down::@10/(byte) current_xpos#70 play_move_down::@17/(byte) current_xpos#71 play_move_down::@3/(byte) current_xpos#72 ) - (byte) current_ypos#40 ← phi( play_move_down::@10/(byte) current_ypos#51 play_move_down::@17/(byte) current_ypos#52 play_move_down::@3/(byte) current_ypos#53 ) + (byte) game_over#45 ← phi( play_move_down::@10/(byte) game_over#56 play_move_down::@17/(byte) game_over#57 play_move_down::@3/(byte) game_over#58 ) + (byte*) current_piece_gfx#66 ← phi( play_move_down::@10/(byte*) current_piece_gfx#81 play_move_down::@17/(byte*) current_piece_gfx#82 play_move_down::@3/(byte*) current_piece_gfx#83 ) + (byte) current_piece_char#52 ← phi( play_move_down::@10/(byte) current_piece_char#66 play_move_down::@17/(byte) current_piece_char#67 play_move_down::@3/(byte) current_piece_char#68 ) + (byte*) current_piece#55 ← phi( play_move_down::@10/(byte*) current_piece#65 play_move_down::@17/(byte*) current_piece#66 play_move_down::@3/(byte*) current_piece#67 ) + (byte) level_bcd#59 ← phi( play_move_down::@10/(byte) level_bcd#70 play_move_down::@17/(byte) level_bcd#71 play_move_down::@3/(byte) level_bcd#72 ) + (byte) level#55 ← phi( play_move_down::@10/(byte) level#65 play_move_down::@17/(byte) level#66 play_move_down::@3/(byte) level#67 ) + (dword) score_bcd#49 ← phi( play_move_down::@10/(dword) score_bcd#58 play_move_down::@17/(dword) score_bcd#59 play_move_down::@3/(dword) score_bcd#60 ) + (word) lines_bcd#49 ← phi( play_move_down::@10/(word) lines_bcd#60 play_move_down::@17/(word) lines_bcd#61 play_move_down::@3/(word) lines_bcd#62 ) + (byte) current_orientation#51 ← phi( play_move_down::@10/(byte) current_orientation#61 play_move_down::@17/(byte) current_orientation#62 play_move_down::@3/(byte) current_orientation#63 ) + (byte) current_xpos#60 ← phi( play_move_down::@10/(byte) current_xpos#80 play_move_down::@17/(byte) current_xpos#81 play_move_down::@3/(byte) current_xpos#82 ) + (byte) current_ypos#50 ← phi( play_move_down::@10/(byte) current_ypos#62 play_move_down::@17/(byte) current_ypos#63 play_move_down::@3/(byte) current_ypos#64 ) (byte) play_move_down::movedown#9 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@3/(byte) play_move_down::movedown#11 ) - (byte) current_movedown_slow#15 ← phi( play_move_down::@10/(byte) current_movedown_slow#26 play_move_down::@17/(byte) current_movedown_slow#27 play_move_down::@3/(byte) current_movedown_slow#28 ) - (byte) current_movedown_counter#8 ← phi( play_move_down::@10/(byte) current_movedown_counter#15 play_move_down::@17/(byte) current_movedown_counter#16 play_move_down::@3/(byte) current_movedown_counter#17 ) - (bool~) play_move_down::$7 ← (byte) current_movedown_counter#8 >= (byte) current_movedown_slow#15 + (byte) current_movedown_slow#19 ← phi( play_move_down::@10/(byte) current_movedown_slow#33 play_move_down::@17/(byte) current_movedown_slow#34 play_move_down::@3/(byte) current_movedown_slow#35 ) + (byte) current_movedown_counter#12 ← phi( play_move_down::@10/(byte) current_movedown_counter#21 play_move_down::@17/(byte) current_movedown_counter#22 play_move_down::@3/(byte) current_movedown_counter#23 ) + (bool~) play_move_down::$7 ← (byte) current_movedown_counter#12 >= (byte) current_movedown_slow#19 (bool~) play_move_down::$8 ← ! (bool~) play_move_down::$7 if((bool~) play_move_down::$8) goto play_move_down::@4 to:play_move_down::@11 play_move_down::@9: scope:[play_move_down] from play_move_down::@17 - (byte) current_piece_char#68 ← phi( play_move_down::@17/(byte) current_piece_char#56 ) - (byte*) current_piece_gfx#82 ← phi( play_move_down::@17/(byte*) current_piece_gfx#72 ) - (byte*) current_piece#63 ← phi( play_move_down::@17/(byte*) current_piece#55 ) - (byte) level_bcd#73 ← phi( play_move_down::@17/(byte) level_bcd#63 ) - (byte) level#70 ← phi( play_move_down::@17/(byte) level#58 ) - (dword) score_bcd#60 ← phi( play_move_down::@17/(dword) score_bcd#51 ) - (word) lines_bcd#63 ← phi( play_move_down::@17/(word) lines_bcd#53 ) - (byte) current_orientation#63 ← phi( play_move_down::@17/(byte) current_orientation#53 ) - (byte) current_xpos#87 ← phi( play_move_down::@17/(byte) current_xpos#71 ) - (byte) current_ypos#63 ← phi( play_move_down::@17/(byte) current_ypos#52 ) - (byte) current_movedown_slow#41 ← phi( play_move_down::@17/(byte) current_movedown_slow#27 ) + (byte) game_over#68 ← phi( play_move_down::@17/(byte) game_over#57 ) + (byte*) current_piece_gfx#93 ← phi( play_move_down::@17/(byte*) current_piece_gfx#82 ) + (byte) current_piece_char#79 ← phi( play_move_down::@17/(byte) current_piece_char#67 ) + (byte*) current_piece#74 ← phi( play_move_down::@17/(byte*) current_piece#66 ) + (byte) level_bcd#81 ← phi( play_move_down::@17/(byte) level_bcd#71 ) + (byte) level#78 ← phi( play_move_down::@17/(byte) level#66 ) + (dword) score_bcd#69 ← phi( play_move_down::@17/(dword) score_bcd#59 ) + (word) lines_bcd#71 ← phi( play_move_down::@17/(word) lines_bcd#61 ) + (byte) current_orientation#73 ← phi( play_move_down::@17/(byte) current_orientation#62 ) + (byte) current_xpos#97 ← phi( play_move_down::@17/(byte) current_xpos#81 ) + (byte) current_ypos#73 ← phi( play_move_down::@17/(byte) current_ypos#63 ) + (byte) current_movedown_slow#49 ← phi( play_move_down::@17/(byte) current_movedown_slow#34 ) (byte) play_move_down::movedown#8 ← phi( play_move_down::@17/(byte) play_move_down::movedown#10 ) - (byte) current_movedown_counter#9 ← phi( play_move_down::@17/(byte) current_movedown_counter#16 ) - (bool~) play_move_down::$5 ← (byte) current_movedown_counter#9 >= (byte) current_movedown_fast#0 + (byte) current_movedown_counter#13 ← phi( play_move_down::@17/(byte) current_movedown_counter#22 ) + (bool~) play_move_down::$5 ← (byte) current_movedown_counter#13 >= (byte) current_movedown_fast#0 (bool~) play_move_down::$6 ← ! (bool~) play_move_down::$5 if((bool~) play_move_down::$6) goto play_move_down::@3 to:play_move_down::@10 play_move_down::@3: scope:[play_move_down] from play_move_down::@9 - (byte) current_piece_char#57 ← phi( play_move_down::@9/(byte) current_piece_char#68 ) - (byte*) current_piece_gfx#73 ← phi( play_move_down::@9/(byte*) current_piece_gfx#82 ) - (byte*) current_piece#56 ← phi( play_move_down::@9/(byte*) current_piece#63 ) - (byte) level_bcd#64 ← phi( play_move_down::@9/(byte) level_bcd#73 ) - (byte) level#59 ← phi( play_move_down::@9/(byte) level#70 ) - (dword) score_bcd#52 ← phi( play_move_down::@9/(dword) score_bcd#60 ) - (word) lines_bcd#54 ← phi( play_move_down::@9/(word) lines_bcd#63 ) - (byte) current_orientation#54 ← phi( play_move_down::@9/(byte) current_orientation#63 ) - (byte) current_xpos#72 ← phi( play_move_down::@9/(byte) current_xpos#87 ) - (byte) current_ypos#53 ← phi( play_move_down::@9/(byte) current_ypos#63 ) + (byte) game_over#58 ← phi( play_move_down::@9/(byte) game_over#68 ) + (byte*) current_piece_gfx#83 ← phi( play_move_down::@9/(byte*) current_piece_gfx#93 ) + (byte) current_piece_char#68 ← phi( play_move_down::@9/(byte) current_piece_char#79 ) + (byte*) current_piece#67 ← phi( play_move_down::@9/(byte*) current_piece#74 ) + (byte) level_bcd#72 ← phi( play_move_down::@9/(byte) level_bcd#81 ) + (byte) level#67 ← phi( play_move_down::@9/(byte) level#78 ) + (dword) score_bcd#60 ← phi( play_move_down::@9/(dword) score_bcd#69 ) + (word) lines_bcd#62 ← phi( play_move_down::@9/(word) lines_bcd#71 ) + (byte) current_orientation#63 ← phi( play_move_down::@9/(byte) current_orientation#73 ) + (byte) current_xpos#82 ← phi( play_move_down::@9/(byte) current_xpos#97 ) + (byte) current_ypos#64 ← phi( play_move_down::@9/(byte) current_ypos#73 ) (byte) play_move_down::movedown#11 ← phi( play_move_down::@9/(byte) play_move_down::movedown#8 ) - (byte) current_movedown_slow#28 ← phi( play_move_down::@9/(byte) current_movedown_slow#41 ) - (byte) current_movedown_counter#17 ← phi( play_move_down::@9/(byte) current_movedown_counter#9 ) + (byte) current_movedown_slow#35 ← phi( play_move_down::@9/(byte) current_movedown_slow#49 ) + (byte) current_movedown_counter#23 ← phi( play_move_down::@9/(byte) current_movedown_counter#13 ) to:play_move_down::@2 play_move_down::@10: scope:[play_move_down] from play_move_down::@9 - (byte) current_piece_char#55 ← phi( play_move_down::@9/(byte) current_piece_char#68 ) - (byte*) current_piece_gfx#71 ← phi( play_move_down::@9/(byte*) current_piece_gfx#82 ) - (byte*) current_piece#54 ← phi( play_move_down::@9/(byte*) current_piece#63 ) - (byte) level_bcd#62 ← phi( play_move_down::@9/(byte) level_bcd#73 ) - (byte) level#57 ← phi( play_move_down::@9/(byte) level#70 ) - (dword) score_bcd#50 ← phi( play_move_down::@9/(dword) score_bcd#60 ) - (word) lines_bcd#52 ← phi( play_move_down::@9/(word) lines_bcd#63 ) - (byte) current_orientation#52 ← phi( play_move_down::@9/(byte) current_orientation#63 ) - (byte) current_xpos#70 ← phi( play_move_down::@9/(byte) current_xpos#87 ) - (byte) current_ypos#51 ← phi( play_move_down::@9/(byte) current_ypos#63 ) - (byte) current_movedown_slow#26 ← phi( play_move_down::@9/(byte) current_movedown_slow#41 ) - (byte) current_movedown_counter#15 ← phi( play_move_down::@9/(byte) current_movedown_counter#9 ) + (byte) game_over#56 ← phi( play_move_down::@9/(byte) game_over#68 ) + (byte*) current_piece_gfx#81 ← phi( play_move_down::@9/(byte*) current_piece_gfx#93 ) + (byte) current_piece_char#66 ← phi( play_move_down::@9/(byte) current_piece_char#79 ) + (byte*) current_piece#65 ← phi( play_move_down::@9/(byte*) current_piece#74 ) + (byte) level_bcd#70 ← phi( play_move_down::@9/(byte) level_bcd#81 ) + (byte) level#65 ← phi( play_move_down::@9/(byte) level#78 ) + (dword) score_bcd#58 ← phi( play_move_down::@9/(dword) score_bcd#69 ) + (word) lines_bcd#60 ← phi( play_move_down::@9/(word) lines_bcd#71 ) + (byte) current_orientation#61 ← phi( play_move_down::@9/(byte) current_orientation#73 ) + (byte) current_xpos#80 ← phi( play_move_down::@9/(byte) current_xpos#97 ) + (byte) current_ypos#62 ← phi( play_move_down::@9/(byte) current_ypos#73 ) + (byte) current_movedown_slow#33 ← phi( play_move_down::@9/(byte) current_movedown_slow#49 ) + (byte) current_movedown_counter#21 ← phi( play_move_down::@9/(byte) current_movedown_counter#13 ) (byte) play_move_down::movedown#5 ← phi( play_move_down::@9/(byte) play_move_down::movedown#8 ) (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#5 to:play_move_down::@2 play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_down::@2 - (byte) current_piece_char#27 ← phi( play_move_down::@11/(byte) current_piece_char#40 play_move_down::@2/(byte) current_piece_char#41 ) - (byte*) current_piece_gfx#39 ← phi( play_move_down::@11/(byte*) current_piece_gfx#56 play_move_down::@2/(byte*) current_piece_gfx#57 ) - (byte*) current_piece#30 ← phi( play_move_down::@11/(byte*) current_piece#43 play_move_down::@2/(byte*) current_piece#44 ) - (byte) level_bcd#36 ← phi( play_move_down::@11/(byte) level_bcd#50 play_move_down::@2/(byte) level_bcd#51 ) - (byte) current_movedown_slow#42 ← phi( play_move_down::@11/(byte) current_movedown_slow#57 play_move_down::@2/(byte) current_movedown_slow#15 ) - (byte) level#33 ← phi( play_move_down::@11/(byte) level#46 play_move_down::@2/(byte) level#47 ) - (dword) score_bcd#29 ← phi( play_move_down::@11/(dword) score_bcd#40 play_move_down::@2/(dword) score_bcd#41 ) - (word) lines_bcd#29 ← phi( play_move_down::@11/(word) lines_bcd#40 play_move_down::@2/(word) lines_bcd#41 ) - (byte) current_movedown_counter#22 ← phi( play_move_down::@11/(byte) current_movedown_counter#29 play_move_down::@2/(byte) current_movedown_counter#8 ) - (byte) current_orientation#26 ← phi( play_move_down::@11/(byte) current_orientation#41 play_move_down::@2/(byte) current_orientation#42 ) - (byte) current_xpos#30 ← phi( play_move_down::@11/(byte) current_xpos#49 play_move_down::@2/(byte) current_xpos#50 ) - (byte) current_ypos#25 ← phi( play_move_down::@11/(byte) current_ypos#39 play_move_down::@2/(byte) current_ypos#40 ) + (byte) game_over#34 ← phi( play_move_down::@11/(byte) game_over#44 play_move_down::@2/(byte) game_over#45 ) + (byte*) current_piece_gfx#48 ← phi( play_move_down::@11/(byte*) current_piece_gfx#65 play_move_down::@2/(byte*) current_piece_gfx#66 ) + (byte) current_piece_char#37 ← phi( play_move_down::@11/(byte) current_piece_char#51 play_move_down::@2/(byte) current_piece_char#52 ) + (byte*) current_piece#40 ← phi( play_move_down::@11/(byte*) current_piece#54 play_move_down::@2/(byte*) current_piece#55 ) + (byte) level_bcd#44 ← phi( play_move_down::@11/(byte) level_bcd#58 play_move_down::@2/(byte) level_bcd#59 ) + (byte) current_movedown_slow#50 ← phi( play_move_down::@11/(byte) current_movedown_slow#65 play_move_down::@2/(byte) current_movedown_slow#19 ) + (byte) level#41 ← phi( play_move_down::@11/(byte) level#54 play_move_down::@2/(byte) level#55 ) + (dword) score_bcd#37 ← phi( play_move_down::@11/(dword) score_bcd#48 play_move_down::@2/(dword) score_bcd#49 ) + (word) lines_bcd#37 ← phi( play_move_down::@11/(word) lines_bcd#48 play_move_down::@2/(word) lines_bcd#49 ) + (byte) current_movedown_counter#30 ← phi( play_move_down::@11/(byte) current_movedown_counter#37 play_move_down::@2/(byte) current_movedown_counter#12 ) + (byte) current_orientation#33 ← phi( play_move_down::@11/(byte) current_orientation#50 play_move_down::@2/(byte) current_orientation#51 ) + (byte) current_xpos#38 ← phi( play_move_down::@11/(byte) current_xpos#59 play_move_down::@2/(byte) current_xpos#60 ) + (byte) current_ypos#32 ← phi( play_move_down::@11/(byte) current_ypos#49 play_move_down::@2/(byte) current_ypos#50 ) (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#9 ) (bool~) play_move_down::$9 ← (byte) play_move_down::movedown#6 != (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) play_move_down::$10 ← ! (bool~) play_move_down::$9 if((bool~) play_move_down::$10) goto play_move_down::@5 to:play_move_down::@12 play_move_down::@11: scope:[play_move_down] from play_move_down::@2 - (byte) current_piece_char#40 ← phi( play_move_down::@2/(byte) current_piece_char#41 ) - (byte*) current_piece_gfx#56 ← phi( play_move_down::@2/(byte*) current_piece_gfx#57 ) - (byte*) current_piece#43 ← phi( play_move_down::@2/(byte*) current_piece#44 ) - (byte) level_bcd#50 ← phi( play_move_down::@2/(byte) level_bcd#51 ) - (byte) current_movedown_slow#57 ← phi( play_move_down::@2/(byte) current_movedown_slow#15 ) - (byte) level#46 ← phi( play_move_down::@2/(byte) level#47 ) - (dword) score_bcd#40 ← phi( play_move_down::@2/(dword) score_bcd#41 ) - (word) lines_bcd#40 ← phi( play_move_down::@2/(word) lines_bcd#41 ) - (byte) current_movedown_counter#29 ← phi( play_move_down::@2/(byte) current_movedown_counter#8 ) - (byte) current_orientation#41 ← phi( play_move_down::@2/(byte) current_orientation#42 ) - (byte) current_xpos#49 ← phi( play_move_down::@2/(byte) current_xpos#50 ) - (byte) current_ypos#39 ← phi( play_move_down::@2/(byte) current_ypos#40 ) + (byte) game_over#44 ← phi( play_move_down::@2/(byte) game_over#45 ) + (byte*) current_piece_gfx#65 ← phi( play_move_down::@2/(byte*) current_piece_gfx#66 ) + (byte) current_piece_char#51 ← phi( play_move_down::@2/(byte) current_piece_char#52 ) + (byte*) current_piece#54 ← phi( play_move_down::@2/(byte*) current_piece#55 ) + (byte) level_bcd#58 ← phi( play_move_down::@2/(byte) level_bcd#59 ) + (byte) current_movedown_slow#65 ← phi( play_move_down::@2/(byte) current_movedown_slow#19 ) + (byte) level#54 ← phi( play_move_down::@2/(byte) level#55 ) + (dword) score_bcd#48 ← phi( play_move_down::@2/(dword) score_bcd#49 ) + (word) lines_bcd#48 ← phi( play_move_down::@2/(word) lines_bcd#49 ) + (byte) current_movedown_counter#37 ← phi( play_move_down::@2/(byte) current_movedown_counter#12 ) + (byte) current_orientation#50 ← phi( play_move_down::@2/(byte) current_orientation#51 ) + (byte) current_xpos#59 ← phi( play_move_down::@2/(byte) current_xpos#60 ) + (byte) current_ypos#49 ← phi( play_move_down::@2/(byte) current_ypos#50 ) (byte) play_move_down::movedown#7 ← phi( play_move_down::@2/(byte) play_move_down::movedown#9 ) (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 to:play_move_down::@4 play_move_down::@5: scope:[play_move_down] from play_move_down::@4 - (byte) current_piece_char#19 ← phi( play_move_down::@4/(byte) current_piece_char#27 ) - (byte) current_xpos#32 ← phi( play_move_down::@4/(byte) current_xpos#30 ) - (byte*) current_piece_gfx#25 ← phi( play_move_down::@4/(byte*) current_piece_gfx#39 ) - (byte) current_orientation#28 ← phi( play_move_down::@4/(byte) current_orientation#26 ) - (byte*) current_piece#19 ← phi( play_move_down::@4/(byte*) current_piece#30 ) - (byte) level_bcd#24 ← phi( play_move_down::@4/(byte) level_bcd#36 ) - (byte) current_movedown_slow#30 ← phi( play_move_down::@4/(byte) current_movedown_slow#42 ) - (byte) level#23 ← phi( play_move_down::@4/(byte) level#33 ) - (dword) score_bcd#19 ← phi( play_move_down::@4/(dword) score_bcd#29 ) - (word) lines_bcd#19 ← phi( play_move_down::@4/(word) lines_bcd#29 ) - (byte) current_ypos#28 ← phi( play_move_down::@4/(byte) current_ypos#25 ) - (byte) current_movedown_counter#18 ← phi( play_move_down::@4/(byte) current_movedown_counter#22 ) - (byte) play_move_down::return#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) game_over#25 ← phi( play_move_down::@4/(byte) game_over#34 ) + (byte) current_xpos#40 ← phi( play_move_down::@4/(byte) current_xpos#38 ) + (byte*) current_piece_gfx#32 ← phi( play_move_down::@4/(byte*) current_piece_gfx#48 ) + (byte) current_orientation#35 ← phi( play_move_down::@4/(byte) current_orientation#33 ) + (byte) current_piece_char#26 ← phi( play_move_down::@4/(byte) current_piece_char#37 ) + (byte*) current_piece#26 ← phi( play_move_down::@4/(byte*) current_piece#40 ) + (byte) level_bcd#31 ← phi( play_move_down::@4/(byte) level_bcd#44 ) + (byte) current_movedown_slow#37 ← phi( play_move_down::@4/(byte) current_movedown_slow#50 ) + (byte) level#30 ← phi( play_move_down::@4/(byte) level#41 ) + (dword) score_bcd#26 ← phi( play_move_down::@4/(dword) score_bcd#37 ) + (word) lines_bcd#26 ← phi( play_move_down::@4/(word) lines_bcd#37 ) + (byte) current_ypos#35 ← phi( play_move_down::@4/(byte) current_ypos#32 ) + (byte) current_movedown_counter#24 ← phi( play_move_down::@4/(byte) current_movedown_counter#30 ) + (byte) play_move_down::return#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_move_down::@return play_move_down::@12: scope:[play_move_down] from play_move_down::@4 - (byte) current_piece_char#58 ← phi( play_move_down::@4/(byte) current_piece_char#27 ) - (byte*) current_piece_gfx#74 ← phi( play_move_down::@4/(byte*) current_piece_gfx#39 ) - (byte) level_bcd#65 ← phi( play_move_down::@4/(byte) level_bcd#36 ) - (byte) current_movedown_slow#66 ← phi( play_move_down::@4/(byte) current_movedown_slow#42 ) - (byte) level#60 ← phi( play_move_down::@4/(byte) level#33 ) - (dword) score_bcd#53 ← phi( play_move_down::@4/(dword) score_bcd#29 ) - (word) lines_bcd#55 ← phi( play_move_down::@4/(word) lines_bcd#29 ) - (byte*) current_piece#22 ← phi( play_move_down::@4/(byte*) current_piece#30 ) - (byte) current_orientation#12 ← phi( play_move_down::@4/(byte) current_orientation#26 ) - (byte) current_xpos#13 ← phi( play_move_down::@4/(byte) current_xpos#30 ) - (byte) current_ypos#10 ← phi( play_move_down::@4/(byte) current_ypos#25 ) - (byte/signed word/word/dword/signed dword~) play_move_down::$11 ← (byte) current_ypos#10 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) play_collision::xpos#0 ← (byte) current_xpos#13 + (byte) game_over#59 ← phi( play_move_down::@4/(byte) game_over#34 ) + (byte*) current_piece_gfx#84 ← phi( play_move_down::@4/(byte*) current_piece_gfx#48 ) + (byte) current_piece_char#69 ← phi( play_move_down::@4/(byte) current_piece_char#37 ) + (byte) level_bcd#73 ← phi( play_move_down::@4/(byte) level_bcd#44 ) + (byte) current_movedown_slow#74 ← phi( play_move_down::@4/(byte) current_movedown_slow#50 ) + (byte) level#68 ← phi( play_move_down::@4/(byte) level#41 ) + (dword) score_bcd#61 ← phi( play_move_down::@4/(dword) score_bcd#37 ) + (word) lines_bcd#63 ← phi( play_move_down::@4/(word) lines_bcd#37 ) + (byte*) current_piece#29 ← phi( play_move_down::@4/(byte*) current_piece#40 ) + (byte) current_orientation#17 ← phi( play_move_down::@4/(byte) current_orientation#33 ) + (byte) current_xpos#18 ← phi( play_move_down::@4/(byte) current_xpos#38 ) + (byte) current_ypos#14 ← phi( play_move_down::@4/(byte) current_ypos#32 ) + (byte/signed word/word/dword/signed dword~) play_move_down::$11 ← (byte) current_ypos#14 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) play_collision::xpos#0 ← (byte) current_xpos#18 (byte) play_collision::ypos#0 ← (byte/signed word/word/dword/signed dword~) play_move_down::$11 - (byte) play_collision::orientation#0 ← (byte) current_orientation#12 + (byte) play_collision::orientation#0 ← (byte) current_orientation#17 call play_collision (byte) play_collision::return#0 ← (byte) play_collision::return#5 to:play_move_down::@18 play_move_down::@18: scope:[play_move_down] from play_move_down::@12 - (byte) current_piece_char#42 ← phi( play_move_down::@12/(byte) current_piece_char#58 ) - (byte) current_xpos#73 ← phi( play_move_down::@12/(byte) current_xpos#13 ) - (byte*) current_piece_gfx#58 ← phi( play_move_down::@12/(byte*) current_piece_gfx#74 ) - (byte) current_orientation#55 ← phi( play_move_down::@12/(byte) current_orientation#12 ) - (byte*) current_piece#45 ← phi( play_move_down::@12/(byte*) current_piece#22 ) - (byte) level_bcd#52 ← phi( play_move_down::@12/(byte) level_bcd#65 ) - (byte) current_movedown_slow#58 ← phi( play_move_down::@12/(byte) current_movedown_slow#66 ) - (byte) level#48 ← phi( play_move_down::@12/(byte) level#60 ) - (dword) score_bcd#42 ← phi( play_move_down::@12/(dword) score_bcd#53 ) - (word) lines_bcd#42 ← phi( play_move_down::@12/(word) lines_bcd#55 ) - (byte) current_ypos#26 ← phi( play_move_down::@12/(byte) current_ypos#10 ) - (byte) play_collision::return#10 ← phi( play_move_down::@12/(byte) play_collision::return#0 ) - (byte~) play_move_down::$12 ← (byte) play_collision::return#10 + (byte) game_over#46 ← phi( play_move_down::@12/(byte) game_over#59 ) + (byte) current_xpos#83 ← phi( play_move_down::@12/(byte) current_xpos#18 ) + (byte*) current_piece_gfx#67 ← phi( play_move_down::@12/(byte*) current_piece_gfx#84 ) + (byte) current_orientation#64 ← phi( play_move_down::@12/(byte) current_orientation#17 ) + (byte) current_piece_char#53 ← phi( play_move_down::@12/(byte) current_piece_char#69 ) + (byte*) current_piece#56 ← phi( play_move_down::@12/(byte*) current_piece#29 ) + (byte) level_bcd#60 ← phi( play_move_down::@12/(byte) level_bcd#73 ) + (byte) current_movedown_slow#66 ← phi( play_move_down::@12/(byte) current_movedown_slow#74 ) + (byte) level#56 ← phi( play_move_down::@12/(byte) level#68 ) + (dword) score_bcd#50 ← phi( play_move_down::@12/(dword) score_bcd#61 ) + (word) lines_bcd#50 ← phi( play_move_down::@12/(word) lines_bcd#63 ) + (byte) current_ypos#33 ← phi( play_move_down::@12/(byte) current_ypos#14 ) + (byte) play_collision::return#11 ← phi( play_move_down::@12/(byte) play_collision::return#0 ) + (byte~) play_move_down::$12 ← (byte) play_collision::return#11 (bool~) play_move_down::$13 ← (byte~) play_move_down::$12 == (byte) COLLISION_NONE#0 if((bool~) play_move_down::$13) goto play_move_down::@6 to:play_move_down::@13 play_move_down::@6: scope:[play_move_down] from play_move_down::@18 - (byte) current_piece_char#29 ← phi( play_move_down::@18/(byte) current_piece_char#42 ) - (byte) current_xpos#52 ← phi( play_move_down::@18/(byte) current_xpos#73 ) - (byte*) current_piece_gfx#41 ← phi( play_move_down::@18/(byte*) current_piece_gfx#58 ) - (byte) current_orientation#44 ← phi( play_move_down::@18/(byte) current_orientation#55 ) - (byte*) current_piece#32 ← phi( play_move_down::@18/(byte*) current_piece#45 ) - (byte) level_bcd#39 ← phi( play_move_down::@18/(byte) level_bcd#52 ) - (byte) current_movedown_slow#45 ← phi( play_move_down::@18/(byte) current_movedown_slow#58 ) - (byte) level#36 ← phi( play_move_down::@18/(byte) level#48 ) - (dword) score_bcd#32 ← phi( play_move_down::@18/(dword) score_bcd#42 ) - (word) lines_bcd#32 ← phi( play_move_down::@18/(word) lines_bcd#42 ) - (byte) current_ypos#11 ← phi( play_move_down::@18/(byte) current_ypos#26 ) - (byte) current_ypos#0 ← ++ (byte) current_ypos#11 + (byte) game_over#36 ← phi( play_move_down::@18/(byte) game_over#46 ) + (byte) current_xpos#62 ← phi( play_move_down::@18/(byte) current_xpos#83 ) + (byte*) current_piece_gfx#50 ← phi( play_move_down::@18/(byte*) current_piece_gfx#67 ) + (byte) current_orientation#53 ← phi( play_move_down::@18/(byte) current_orientation#64 ) + (byte) current_piece_char#39 ← phi( play_move_down::@18/(byte) current_piece_char#53 ) + (byte*) current_piece#42 ← phi( play_move_down::@18/(byte*) current_piece#56 ) + (byte) level_bcd#47 ← phi( play_move_down::@18/(byte) level_bcd#60 ) + (byte) current_movedown_slow#53 ← phi( play_move_down::@18/(byte) current_movedown_slow#66 ) + (byte) level#44 ← phi( play_move_down::@18/(byte) level#56 ) + (dword) score_bcd#40 ← phi( play_move_down::@18/(dword) score_bcd#50 ) + (word) lines_bcd#40 ← phi( play_move_down::@18/(word) lines_bcd#50 ) + (byte) current_ypos#15 ← phi( play_move_down::@18/(byte) current_ypos#33 ) + (byte) current_ypos#2 ← ++ (byte) current_ypos#15 to:play_move_down::@7 play_move_down::@13: scope:[play_move_down] from play_move_down::@18 - (byte) current_piece_char#59 ← phi( play_move_down::@18/(byte) current_piece_char#42 ) - (byte) current_orientation#64 ← phi( play_move_down::@18/(byte) current_orientation#55 ) - (byte*) current_piece#57 ← phi( play_move_down::@18/(byte*) current_piece#45 ) - (byte*) current_piece_gfx#63 ← phi( play_move_down::@18/(byte*) current_piece_gfx#58 ) - (byte) level_bcd#53 ← phi( play_move_down::@18/(byte) level_bcd#52 ) - (byte) current_movedown_slow#59 ← phi( play_move_down::@18/(byte) current_movedown_slow#58 ) - (byte) level#49 ← phi( play_move_down::@18/(byte) level#48 ) - (dword) score_bcd#43 ← phi( play_move_down::@18/(dword) score_bcd#42 ) - (word) lines_bcd#43 ← phi( play_move_down::@18/(word) lines_bcd#42 ) - (byte) current_xpos#58 ← phi( play_move_down::@18/(byte) current_xpos#73 ) - (byte) current_ypos#34 ← phi( play_move_down::@18/(byte) current_ypos#26 ) + (byte) game_over#60 ← phi( play_move_down::@18/(byte) game_over#46 ) + (byte) current_orientation#74 ← phi( play_move_down::@18/(byte) current_orientation#64 ) + (byte) current_piece_char#70 ← phi( play_move_down::@18/(byte) current_piece_char#53 ) + (byte*) current_piece#68 ← phi( play_move_down::@18/(byte*) current_piece#56 ) + (byte*) current_piece_gfx#72 ← phi( play_move_down::@18/(byte*) current_piece_gfx#67 ) + (byte) level_bcd#61 ← phi( play_move_down::@18/(byte) level_bcd#60 ) + (byte) current_movedown_slow#67 ← phi( play_move_down::@18/(byte) current_movedown_slow#66 ) + (byte) level#57 ← phi( play_move_down::@18/(byte) level#56 ) + (dword) score_bcd#51 ← phi( play_move_down::@18/(dword) score_bcd#50 ) + (word) lines_bcd#51 ← phi( play_move_down::@18/(word) lines_bcd#50 ) + (byte) current_xpos#68 ← phi( play_move_down::@18/(byte) current_xpos#83 ) + (byte) current_ypos#41 ← phi( play_move_down::@18/(byte) current_ypos#33 ) call play_lock_current to:play_move_down::@19 play_move_down::@19: scope:[play_move_down] from play_move_down::@13 - (byte) current_piece_char#43 ← phi( play_move_down::@13/(byte) current_piece_char#59 ) - (byte) current_ypos#54 ← phi( play_move_down::@13/(byte) current_ypos#34 ) - (byte) current_xpos#74 ← phi( play_move_down::@13/(byte) current_xpos#58 ) - (byte*) current_piece_gfx#59 ← phi( play_move_down::@13/(byte*) current_piece_gfx#63 ) - (byte) current_orientation#56 ← phi( play_move_down::@13/(byte) current_orientation#64 ) - (byte*) current_piece#46 ← phi( play_move_down::@13/(byte*) current_piece#57 ) - (byte) level_bcd#37 ← phi( play_move_down::@13/(byte) level_bcd#53 ) - (byte) current_movedown_slow#43 ← phi( play_move_down::@13/(byte) current_movedown_slow#59 ) - (byte) level#34 ← phi( play_move_down::@13/(byte) level#49 ) - (dword) score_bcd#30 ← phi( play_move_down::@13/(dword) score_bcd#43 ) - (word) lines_bcd#30 ← phi( play_move_down::@13/(word) lines_bcd#43 ) + (byte) game_over#47 ← phi( play_move_down::@13/(byte) game_over#60 ) + (byte) current_ypos#65 ← phi( play_move_down::@13/(byte) current_ypos#41 ) + (byte) current_xpos#84 ← phi( play_move_down::@13/(byte) current_xpos#68 ) + (byte*) current_piece_gfx#68 ← phi( play_move_down::@13/(byte*) current_piece_gfx#72 ) + (byte) current_orientation#65 ← phi( play_move_down::@13/(byte) current_orientation#74 ) + (byte) current_piece_char#54 ← phi( play_move_down::@13/(byte) current_piece_char#70 ) + (byte*) current_piece#57 ← phi( play_move_down::@13/(byte*) current_piece#68 ) + (byte) level_bcd#45 ← phi( play_move_down::@13/(byte) level_bcd#61 ) + (byte) current_movedown_slow#51 ← phi( play_move_down::@13/(byte) current_movedown_slow#67 ) + (byte) level#42 ← phi( play_move_down::@13/(byte) level#57 ) + (dword) score_bcd#38 ← phi( play_move_down::@13/(dword) score_bcd#51 ) + (word) lines_bcd#38 ← phi( play_move_down::@13/(word) lines_bcd#51 ) call play_remove_lines (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::return#2 to:play_move_down::@20 play_move_down::@20: scope:[play_move_down] from play_move_down::@19 - (byte) current_piece_char#28 ← phi( play_move_down::@19/(byte) current_piece_char#43 ) - (byte) current_ypos#41 ← phi( play_move_down::@19/(byte) current_ypos#54 ) - (byte) current_xpos#51 ← phi( play_move_down::@19/(byte) current_xpos#74 ) - (byte*) current_piece_gfx#40 ← phi( play_move_down::@19/(byte*) current_piece_gfx#59 ) - (byte) current_orientation#43 ← phi( play_move_down::@19/(byte) current_orientation#56 ) - (byte*) current_piece#31 ← phi( play_move_down::@19/(byte*) current_piece#46 ) - (byte) level_bcd#23 ← phi( play_move_down::@19/(byte) level_bcd#37 ) - (byte) current_movedown_slow#29 ← phi( play_move_down::@19/(byte) current_movedown_slow#43 ) - (byte) level#22 ← phi( play_move_down::@19/(byte) level#34 ) - (dword) score_bcd#18 ← phi( play_move_down::@19/(dword) score_bcd#30 ) - (word) lines_bcd#18 ← phi( play_move_down::@19/(word) lines_bcd#30 ) + (byte) game_over#35 ← phi( play_move_down::@19/(byte) game_over#47 ) + (byte) current_ypos#51 ← phi( play_move_down::@19/(byte) current_ypos#65 ) + (byte) current_xpos#61 ← phi( play_move_down::@19/(byte) current_xpos#84 ) + (byte*) current_piece_gfx#49 ← phi( play_move_down::@19/(byte*) current_piece_gfx#68 ) + (byte) current_orientation#52 ← phi( play_move_down::@19/(byte) current_orientation#65 ) + (byte) current_piece_char#38 ← phi( play_move_down::@19/(byte) current_piece_char#54 ) + (byte*) current_piece#41 ← phi( play_move_down::@19/(byte*) current_piece#57 ) + (byte) level_bcd#30 ← phi( play_move_down::@19/(byte) level_bcd#45 ) + (byte) current_movedown_slow#36 ← phi( play_move_down::@19/(byte) current_movedown_slow#51 ) + (byte) level#29 ← phi( play_move_down::@19/(byte) level#42 ) + (dword) score_bcd#25 ← phi( play_move_down::@19/(dword) score_bcd#38 ) + (word) lines_bcd#25 ← phi( play_move_down::@19/(word) lines_bcd#38 ) (byte) play_remove_lines::return#3 ← phi( play_move_down::@19/(byte) play_remove_lines::return#0 ) (byte~) play_move_down::$15 ← (byte) play_remove_lines::return#3 (byte) play_move_down::removed#0 ← (byte~) play_move_down::$15 @@ -1796,305 +1997,312 @@ play_move_down::@20: scope:[play_move_down] from play_move_down::@19 call play_update_score to:play_move_down::@21 play_move_down::@21: scope:[play_move_down] from play_move_down::@20 - (byte) current_piece_char#18 ← phi( play_move_down::@20/(byte) current_piece_char#28 ) - (byte) current_ypos#27 ← phi( play_move_down::@20/(byte) current_ypos#41 ) - (byte) current_xpos#31 ← phi( play_move_down::@20/(byte) current_xpos#51 ) - (byte*) current_piece_gfx#24 ← phi( play_move_down::@20/(byte*) current_piece_gfx#40 ) - (byte) current_orientation#27 ← phi( play_move_down::@20/(byte) current_orientation#43 ) - (byte*) current_piece#18 ← phi( play_move_down::@20/(byte*) current_piece#31 ) - (byte) level_bcd#12 ← phi( play_move_down::@20/(byte) level_bcd#4 ) - (byte) current_movedown_slow#16 ← phi( play_move_down::@20/(byte) current_movedown_slow#6 ) - (byte) level#11 ← phi( play_move_down::@20/(byte) level#4 ) - (dword) score_bcd#9 ← phi( play_move_down::@20/(dword) score_bcd#4 ) - (word) lines_bcd#10 ← phi( play_move_down::@20/(word) lines_bcd#4 ) - (word) lines_bcd#1 ← (word) lines_bcd#10 - (dword) score_bcd#1 ← (dword) score_bcd#9 - (byte) level#1 ← (byte) level#11 - (byte) current_movedown_slow#3 ← (byte) current_movedown_slow#16 - (byte) level_bcd#1 ← (byte) level_bcd#12 + (byte) game_over#24 ← phi( play_move_down::@20/(byte) game_over#35 ) + (byte) current_ypos#34 ← phi( play_move_down::@20/(byte) current_ypos#51 ) + (byte) current_xpos#39 ← phi( play_move_down::@20/(byte) current_xpos#61 ) + (byte*) current_piece_gfx#31 ← phi( play_move_down::@20/(byte*) current_piece_gfx#49 ) + (byte) current_orientation#34 ← phi( play_move_down::@20/(byte) current_orientation#52 ) + (byte) current_piece_char#25 ← phi( play_move_down::@20/(byte) current_piece_char#38 ) + (byte*) current_piece#25 ← phi( play_move_down::@20/(byte*) current_piece#41 ) + (byte) level_bcd#16 ← phi( play_move_down::@20/(byte) level_bcd#6 ) + (byte) current_movedown_slow#20 ← phi( play_move_down::@20/(byte) current_movedown_slow#8 ) + (byte) level#15 ← phi( play_move_down::@20/(byte) level#6 ) + (dword) score_bcd#13 ← phi( play_move_down::@20/(dword) score_bcd#6 ) + (word) lines_bcd#14 ← phi( play_move_down::@20/(word) lines_bcd#6 ) + (word) lines_bcd#3 ← (word) lines_bcd#14 + (dword) score_bcd#3 ← (dword) score_bcd#13 + (byte) level#3 ← (byte) level#15 + (byte) current_movedown_slow#5 ← (byte) current_movedown_slow#20 + (byte) level_bcd#3 ← (byte) level_bcd#16 call play_spawn_current to:play_move_down::@22 play_move_down::@22: scope:[play_move_down] from play_move_down::@21 - (byte) level_bcd#38 ← phi( play_move_down::@21/(byte) level_bcd#1 ) - (byte) current_movedown_slow#44 ← phi( play_move_down::@21/(byte) current_movedown_slow#3 ) - (byte) level#35 ← phi( play_move_down::@21/(byte) level#1 ) - (dword) score_bcd#31 ← phi( play_move_down::@21/(dword) score_bcd#1 ) - (word) lines_bcd#31 ← phi( play_move_down::@21/(word) lines_bcd#1 ) - (byte) current_piece_char#9 ← phi( play_move_down::@21/(byte) current_piece_char#3 ) - (byte) current_ypos#12 ← phi( play_move_down::@21/(byte) current_ypos#4 ) - (byte) current_xpos#14 ← phi( play_move_down::@21/(byte) current_xpos#6 ) - (byte*) current_piece_gfx#12 ← phi( play_move_down::@21/(byte*) current_piece_gfx#5 ) - (byte) current_orientation#13 ← phi( play_move_down::@21/(byte) current_orientation#6 ) - (byte*) current_piece#9 ← phi( play_move_down::@21/(byte*) current_piece#4 ) - (byte*) current_piece#1 ← (byte*) current_piece#9 - (byte) current_orientation#1 ← (byte) current_orientation#13 - (byte*) current_piece_gfx#0 ← (byte*) current_piece_gfx#12 - (byte) current_xpos#0 ← (byte) current_xpos#14 - (byte) current_ypos#1 ← (byte) current_ypos#12 - (byte) current_piece_char#0 ← (byte) current_piece_char#9 + (byte) level_bcd#46 ← phi( play_move_down::@21/(byte) level_bcd#3 ) + (byte) current_movedown_slow#52 ← phi( play_move_down::@21/(byte) current_movedown_slow#5 ) + (byte) level#43 ← phi( play_move_down::@21/(byte) level#3 ) + (dword) score_bcd#39 ← phi( play_move_down::@21/(dword) score_bcd#3 ) + (word) lines_bcd#39 ← phi( play_move_down::@21/(word) lines_bcd#3 ) + (byte) game_over#13 ← phi( play_move_down::@21/(byte) game_over#6 ) + (byte) current_ypos#16 ← phi( play_move_down::@21/(byte) current_ypos#6 ) + (byte) current_xpos#19 ← phi( play_move_down::@21/(byte) current_xpos#9 ) + (byte*) current_piece_gfx#17 ← phi( play_move_down::@21/(byte*) current_piece_gfx#8 ) + (byte) current_orientation#18 ← phi( play_move_down::@21/(byte) current_orientation#9 ) + (byte) current_piece_char#13 ← phi( play_move_down::@21/(byte) current_piece_char#5 ) + (byte*) current_piece#13 ← phi( play_move_down::@21/(byte*) current_piece#6 ) + (byte*) current_piece#3 ← (byte*) current_piece#13 + (byte) current_piece_char#2 ← (byte) current_piece_char#13 + (byte) current_orientation#4 ← (byte) current_orientation#18 + (byte*) current_piece_gfx#3 ← (byte*) current_piece_gfx#17 + (byte) current_xpos#3 ← (byte) current_xpos#19 + (byte) current_ypos#3 ← (byte) current_ypos#16 + (byte) game_over#3 ← (byte) game_over#13 to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@22 play_move_down::@6 - (byte) current_piece_char#20 ← phi( play_move_down::@22/(byte) current_piece_char#0 play_move_down::@6/(byte) current_piece_char#29 ) - (byte) current_xpos#33 ← phi( play_move_down::@22/(byte) current_xpos#0 play_move_down::@6/(byte) current_xpos#52 ) - (byte*) current_piece_gfx#26 ← phi( play_move_down::@22/(byte*) current_piece_gfx#0 play_move_down::@6/(byte*) current_piece_gfx#41 ) - (byte) current_orientation#29 ← phi( play_move_down::@22/(byte) current_orientation#1 play_move_down::@6/(byte) current_orientation#44 ) - (byte*) current_piece#20 ← phi( play_move_down::@22/(byte*) current_piece#1 play_move_down::@6/(byte*) current_piece#32 ) - (byte) level_bcd#25 ← phi( play_move_down::@22/(byte) level_bcd#38 play_move_down::@6/(byte) level_bcd#39 ) - (byte) current_movedown_slow#31 ← phi( play_move_down::@22/(byte) current_movedown_slow#44 play_move_down::@6/(byte) current_movedown_slow#45 ) - (byte) level#24 ← phi( play_move_down::@22/(byte) level#35 play_move_down::@6/(byte) level#36 ) - (dword) score_bcd#20 ← phi( play_move_down::@22/(dword) score_bcd#31 play_move_down::@6/(dword) score_bcd#32 ) - (word) lines_bcd#20 ← phi( play_move_down::@22/(word) lines_bcd#31 play_move_down::@6/(word) lines_bcd#32 ) - (byte) current_ypos#29 ← phi( play_move_down::@22/(byte) current_ypos#1 play_move_down::@6/(byte) current_ypos#0 ) - (byte) current_movedown_counter#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) play_move_down::return#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) game_over#26 ← phi( play_move_down::@22/(byte) game_over#3 play_move_down::@6/(byte) game_over#36 ) + (byte) current_xpos#41 ← phi( play_move_down::@22/(byte) current_xpos#3 play_move_down::@6/(byte) current_xpos#62 ) + (byte*) current_piece_gfx#33 ← phi( play_move_down::@22/(byte*) current_piece_gfx#3 play_move_down::@6/(byte*) current_piece_gfx#50 ) + (byte) current_orientation#36 ← phi( play_move_down::@22/(byte) current_orientation#4 play_move_down::@6/(byte) current_orientation#53 ) + (byte) current_piece_char#27 ← phi( play_move_down::@22/(byte) current_piece_char#2 play_move_down::@6/(byte) current_piece_char#39 ) + (byte*) current_piece#27 ← phi( play_move_down::@22/(byte*) current_piece#3 play_move_down::@6/(byte*) current_piece#42 ) + (byte) level_bcd#32 ← phi( play_move_down::@22/(byte) level_bcd#46 play_move_down::@6/(byte) level_bcd#47 ) + (byte) current_movedown_slow#38 ← phi( play_move_down::@22/(byte) current_movedown_slow#52 play_move_down::@6/(byte) current_movedown_slow#53 ) + (byte) level#31 ← phi( play_move_down::@22/(byte) level#43 play_move_down::@6/(byte) level#44 ) + (dword) score_bcd#27 ← phi( play_move_down::@22/(dword) score_bcd#39 play_move_down::@6/(dword) score_bcd#40 ) + (word) lines_bcd#27 ← phi( play_move_down::@22/(word) lines_bcd#39 play_move_down::@6/(word) lines_bcd#40 ) + (byte) current_ypos#36 ← phi( play_move_down::@22/(byte) current_ypos#3 play_move_down::@6/(byte) current_ypos#2 ) + (byte) current_movedown_counter#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) play_move_down::return#2 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@5 play_move_down::@7 - (byte) current_piece_char#10 ← phi( play_move_down::@5/(byte) current_piece_char#19 play_move_down::@7/(byte) current_piece_char#20 ) - (byte) current_xpos#15 ← phi( play_move_down::@5/(byte) current_xpos#32 play_move_down::@7/(byte) current_xpos#33 ) - (byte*) current_piece_gfx#13 ← phi( play_move_down::@5/(byte*) current_piece_gfx#25 play_move_down::@7/(byte*) current_piece_gfx#26 ) - (byte) current_orientation#14 ← phi( play_move_down::@5/(byte) current_orientation#28 play_move_down::@7/(byte) current_orientation#29 ) - (byte*) current_piece#10 ← phi( play_move_down::@5/(byte*) current_piece#19 play_move_down::@7/(byte*) current_piece#20 ) - (byte) level_bcd#13 ← phi( play_move_down::@5/(byte) level_bcd#24 play_move_down::@7/(byte) level_bcd#25 ) - (byte) current_movedown_slow#17 ← phi( play_move_down::@5/(byte) current_movedown_slow#30 play_move_down::@7/(byte) current_movedown_slow#31 ) - (byte) level#12 ← phi( play_move_down::@5/(byte) level#23 play_move_down::@7/(byte) level#24 ) - (dword) score_bcd#10 ← phi( play_move_down::@5/(dword) score_bcd#19 play_move_down::@7/(dword) score_bcd#20 ) - (word) lines_bcd#11 ← phi( play_move_down::@5/(word) lines_bcd#19 play_move_down::@7/(word) lines_bcd#20 ) - (byte) current_ypos#13 ← phi( play_move_down::@5/(byte) current_ypos#28 play_move_down::@7/(byte) current_ypos#29 ) - (byte) current_movedown_counter#10 ← phi( play_move_down::@5/(byte) current_movedown_counter#18 play_move_down::@7/(byte) current_movedown_counter#2 ) - (byte) play_move_down::return#4 ← phi( play_move_down::@5/(byte) play_move_down::return#0 play_move_down::@7/(byte) play_move_down::return#1 ) - (byte) play_move_down::return#2 ← (byte) play_move_down::return#4 - (byte) current_movedown_counter#3 ← (byte) current_movedown_counter#10 - (byte) current_ypos#2 ← (byte) current_ypos#13 - (word) lines_bcd#2 ← (word) lines_bcd#11 - (dword) score_bcd#2 ← (dword) score_bcd#10 - (byte) level#2 ← (byte) level#12 - (byte) current_movedown_slow#4 ← (byte) current_movedown_slow#17 - (byte) level_bcd#2 ← (byte) level_bcd#13 - (byte*) current_piece#2 ← (byte*) current_piece#10 - (byte) current_orientation#2 ← (byte) current_orientation#14 - (byte*) current_piece_gfx#1 ← (byte*) current_piece_gfx#13 - (byte) current_xpos#1 ← (byte) current_xpos#15 - (byte) current_piece_char#1 ← (byte) current_piece_char#10 + (byte) game_over#14 ← phi( play_move_down::@5/(byte) game_over#25 play_move_down::@7/(byte) game_over#26 ) + (byte) current_xpos#20 ← phi( play_move_down::@5/(byte) current_xpos#40 play_move_down::@7/(byte) current_xpos#41 ) + (byte*) current_piece_gfx#18 ← phi( play_move_down::@5/(byte*) current_piece_gfx#32 play_move_down::@7/(byte*) current_piece_gfx#33 ) + (byte) current_orientation#19 ← phi( play_move_down::@5/(byte) current_orientation#35 play_move_down::@7/(byte) current_orientation#36 ) + (byte) current_piece_char#14 ← phi( play_move_down::@5/(byte) current_piece_char#26 play_move_down::@7/(byte) current_piece_char#27 ) + (byte*) current_piece#14 ← phi( play_move_down::@5/(byte*) current_piece#26 play_move_down::@7/(byte*) current_piece#27 ) + (byte) level_bcd#17 ← phi( play_move_down::@5/(byte) level_bcd#31 play_move_down::@7/(byte) level_bcd#32 ) + (byte) current_movedown_slow#21 ← phi( play_move_down::@5/(byte) current_movedown_slow#37 play_move_down::@7/(byte) current_movedown_slow#38 ) + (byte) level#16 ← phi( play_move_down::@5/(byte) level#30 play_move_down::@7/(byte) level#31 ) + (dword) score_bcd#14 ← phi( play_move_down::@5/(dword) score_bcd#26 play_move_down::@7/(dword) score_bcd#27 ) + (word) lines_bcd#15 ← phi( play_move_down::@5/(word) lines_bcd#26 play_move_down::@7/(word) lines_bcd#27 ) + (byte) current_ypos#17 ← phi( play_move_down::@5/(byte) current_ypos#35 play_move_down::@7/(byte) current_ypos#36 ) + (byte) current_movedown_counter#14 ← phi( play_move_down::@5/(byte) current_movedown_counter#24 play_move_down::@7/(byte) current_movedown_counter#4 ) + (byte) play_move_down::return#5 ← phi( play_move_down::@5/(byte) play_move_down::return#1 play_move_down::@7/(byte) play_move_down::return#2 ) + (byte) play_move_down::return#3 ← (byte) play_move_down::return#5 + (byte) current_movedown_counter#5 ← (byte) current_movedown_counter#14 + (byte) current_ypos#4 ← (byte) current_ypos#17 + (word) lines_bcd#4 ← (word) lines_bcd#15 + (dword) score_bcd#4 ← (dword) score_bcd#14 + (byte) level#4 ← (byte) level#16 + (byte) current_movedown_slow#6 ← (byte) current_movedown_slow#21 + (byte) level_bcd#4 ← (byte) level_bcd#17 + (byte*) current_piece#4 ← (byte*) current_piece#14 + (byte) current_piece_char#3 ← (byte) current_piece_char#14 + (byte) current_orientation#5 ← (byte) current_orientation#19 + (byte*) current_piece_gfx#4 ← (byte*) current_piece_gfx#18 + (byte) current_xpos#4 ← (byte) current_xpos#20 + (byte) game_over#4 ← (byte) game_over#14 return to:@return -play_move_leftright: scope:[play_move_leftright] from main::@26 - (byte*) current_piece#33 ← phi( main::@26/(byte*) current_piece#6 ) - (byte) current_orientation#30 ← phi( main::@26/(byte) current_orientation#8 ) - (byte) current_ypos#30 ← phi( main::@26/(byte) current_ypos#6 ) - (byte) current_xpos#34 ← phi( main::@26/(byte) current_xpos#8 ) - (byte) play_move_leftright::key_event#1 ← phi( main::@26/(byte) play_move_leftright::key_event#0 ) +play_move_leftright: scope:[play_move_leftright] from play_movement::@1 + (byte*) current_piece#43 ← phi( play_movement::@1/(byte*) current_piece#53 ) + (byte) current_orientation#37 ← phi( play_movement::@1/(byte) current_orientation#49 ) + (byte) current_ypos#37 ← phi( play_movement::@1/(byte) current_ypos#52 ) + (byte) current_xpos#42 ← phi( play_movement::@1/(byte) current_xpos#35 ) + (byte) play_move_leftright::key_event#1 ← phi( play_movement::@1/(byte) play_move_leftright::key_event#0 ) (bool~) play_move_leftright::$0 ← (byte) play_move_leftright::key_event#1 == (byte) KEY_COMMA#0 if((bool~) play_move_leftright::$0) goto play_move_leftright::@1 to:play_move_leftright::@6 play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - (byte*) current_piece#23 ← phi( play_move_leftright/(byte*) current_piece#33 ) - (byte) current_orientation#15 ← phi( play_move_leftright/(byte) current_orientation#30 ) - (byte) current_ypos#14 ← phi( play_move_leftright/(byte) current_ypos#30 ) - (byte) current_xpos#16 ← phi( play_move_leftright/(byte) current_xpos#34 ) - (byte/signed word/word/dword/signed dword~) play_move_leftright::$7 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte*) current_piece#30 ← phi( play_move_leftright/(byte*) current_piece#43 ) + (byte) current_orientation#20 ← phi( play_move_leftright/(byte) current_orientation#37 ) + (byte) current_ypos#18 ← phi( play_move_leftright/(byte) current_ypos#37 ) + (byte) current_xpos#21 ← phi( play_move_leftright/(byte) current_xpos#42 ) + (byte/signed word/word/dword/signed dword~) play_move_leftright::$7 ← (byte) current_xpos#21 - (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) play_collision::xpos#1 ← (byte/signed word/word/dword/signed dword~) play_move_leftright::$7 - (byte) play_collision::ypos#1 ← (byte) current_ypos#14 - (byte) play_collision::orientation#1 ← (byte) current_orientation#15 + (byte) play_collision::ypos#1 ← (byte) current_ypos#18 + (byte) play_collision::orientation#1 ← (byte) current_orientation#20 call play_collision (byte) play_collision::return#1 ← (byte) play_collision::return#5 to:play_move_leftright::@14 play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright::@1 - (byte) current_xpos#38 ← phi( play_move_leftright::@1/(byte) current_xpos#16 ) - (byte) play_collision::return#11 ← phi( play_move_leftright::@1/(byte) play_collision::return#1 ) - (byte~) play_move_leftright::$8 ← (byte) play_collision::return#11 + (byte) current_xpos#46 ← phi( play_move_leftright::@1/(byte) current_xpos#21 ) + (byte) play_collision::return#12 ← phi( play_move_leftright::@1/(byte) play_collision::return#1 ) + (byte~) play_move_leftright::$8 ← (byte) play_collision::return#12 (bool~) play_move_leftright::$9 ← (byte~) play_move_leftright::$8 == (byte) COLLISION_NONE#0 (bool~) play_move_leftright::$10 ← ! (bool~) play_move_leftright::$9 if((bool~) play_move_leftright::$10) goto play_move_leftright::@5 to:play_move_leftright::@11 play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright - (byte*) current_piece#34 ← phi( play_move_leftright/(byte*) current_piece#33 ) - (byte) current_orientation#31 ← phi( play_move_leftright/(byte) current_orientation#30 ) - (byte) current_ypos#31 ← phi( play_move_leftright/(byte) current_ypos#30 ) - (byte) current_xpos#35 ← phi( play_move_leftright/(byte) current_xpos#34 ) + (byte*) current_piece#44 ← phi( play_move_leftright/(byte*) current_piece#43 ) + (byte) current_orientation#38 ← phi( play_move_leftright/(byte) current_orientation#37 ) + (byte) current_ypos#38 ← phi( play_move_leftright/(byte) current_ypos#37 ) + (byte) current_xpos#43 ← phi( play_move_leftright/(byte) current_xpos#42 ) (byte) play_move_leftright::key_event#2 ← phi( play_move_leftright/(byte) play_move_leftright::key_event#1 ) (bool~) play_move_leftright::$1 ← (byte) play_move_leftright::key_event#2 == (byte) KEY_DOT#0 (bool~) play_move_leftright::$2 ← ! (bool~) play_move_leftright::$1 if((bool~) play_move_leftright::$2) goto play_move_leftright::@2 to:play_move_leftright::@7 play_move_leftright::@2: scope:[play_move_leftright] from play_move_leftright::@6 - (byte) current_xpos#53 ← phi( play_move_leftright::@6/(byte) current_xpos#35 ) + (byte) current_xpos#63 ← phi( play_move_leftright::@6/(byte) current_xpos#43 ) to:play_move_leftright::@4 play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@6 - (byte*) current_piece#24 ← phi( play_move_leftright::@6/(byte*) current_piece#34 ) - (byte) current_orientation#16 ← phi( play_move_leftright::@6/(byte) current_orientation#31 ) - (byte) current_ypos#15 ← phi( play_move_leftright::@6/(byte) current_ypos#31 ) - (byte) current_xpos#17 ← phi( play_move_leftright::@6/(byte) current_xpos#35 ) - (byte/signed word/word/dword/signed dword~) play_move_leftright::$3 ← (byte) current_xpos#17 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte*) current_piece#31 ← phi( play_move_leftright::@6/(byte*) current_piece#44 ) + (byte) current_orientation#21 ← phi( play_move_leftright::@6/(byte) current_orientation#38 ) + (byte) current_ypos#19 ← phi( play_move_leftright::@6/(byte) current_ypos#38 ) + (byte) current_xpos#22 ← phi( play_move_leftright::@6/(byte) current_xpos#43 ) + (byte/signed word/word/dword/signed dword~) play_move_leftright::$3 ← (byte) current_xpos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) play_collision::xpos#2 ← (byte/signed word/word/dword/signed dword~) play_move_leftright::$3 - (byte) play_collision::ypos#2 ← (byte) current_ypos#15 - (byte) play_collision::orientation#2 ← (byte) current_orientation#16 + (byte) play_collision::ypos#2 ← (byte) current_ypos#19 + (byte) play_collision::orientation#2 ← (byte) current_orientation#21 call play_collision (byte) play_collision::return#2 ← (byte) play_collision::return#5 to:play_move_leftright::@15 play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright::@7 - (byte) current_xpos#36 ← phi( play_move_leftright::@7/(byte) current_xpos#17 ) - (byte) play_collision::return#12 ← phi( play_move_leftright::@7/(byte) play_collision::return#2 ) - (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 + (byte) current_xpos#44 ← phi( play_move_leftright::@7/(byte) current_xpos#22 ) + (byte) play_collision::return#13 ← phi( play_move_leftright::@7/(byte) play_collision::return#2 ) + (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 (bool~) play_move_leftright::$5 ← (byte~) play_move_leftright::$4 == (byte) COLLISION_NONE#0 (bool~) play_move_leftright::$6 ← ! (bool~) play_move_leftright::$5 if((bool~) play_move_leftright::$6) goto play_move_leftright::@3 to:play_move_leftright::@8 play_move_leftright::@3: scope:[play_move_leftright] from play_move_leftright::@15 - (byte) current_xpos#54 ← phi( play_move_leftright::@15/(byte) current_xpos#36 ) + (byte) current_xpos#64 ← phi( play_move_leftright::@15/(byte) current_xpos#44 ) to:play_move_leftright::@4 play_move_leftright::@8: scope:[play_move_leftright] from play_move_leftright::@15 - (byte) current_xpos#18 ← phi( play_move_leftright::@15/(byte) current_xpos#36 ) - (byte) current_xpos#2 ← ++ (byte) current_xpos#18 - (byte) play_move_leftright::return#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) current_xpos#23 ← phi( play_move_leftright::@15/(byte) current_xpos#44 ) + (byte) current_xpos#5 ← ++ (byte) current_xpos#23 + (byte) play_move_leftright::return#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_move_leftright::@return play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@11 play_move_leftright::@4 play_move_leftright::@8 - (byte) current_xpos#19 ← phi( play_move_leftright::@11/(byte) current_xpos#4 play_move_leftright::@4/(byte) current_xpos#37 play_move_leftright::@8/(byte) current_xpos#2 ) - (byte) play_move_leftright::return#5 ← phi( play_move_leftright::@11/(byte) play_move_leftright::return#3 play_move_leftright::@4/(byte) play_move_leftright::return#2 play_move_leftright::@8/(byte) play_move_leftright::return#0 ) - (byte) play_move_leftright::return#1 ← (byte) play_move_leftright::return#5 - (byte) current_xpos#3 ← (byte) current_xpos#19 + (byte) current_xpos#24 ← phi( play_move_leftright::@11/(byte) current_xpos#7 play_move_leftright::@4/(byte) current_xpos#45 play_move_leftright::@8/(byte) current_xpos#5 ) + (byte) play_move_leftright::return#6 ← phi( play_move_leftright::@11/(byte) play_move_leftright::return#4 play_move_leftright::@4/(byte) play_move_leftright::return#3 play_move_leftright::@8/(byte) play_move_leftright::return#1 ) + (byte) play_move_leftright::return#2 ← (byte) play_move_leftright::return#6 + (byte) current_xpos#6 ← (byte) current_xpos#24 return to:@return play_move_leftright::@4: scope:[play_move_leftright] from play_move_leftright::@2 play_move_leftright::@3 play_move_leftright::@5 - (byte) current_xpos#37 ← phi( play_move_leftright::@2/(byte) current_xpos#53 play_move_leftright::@3/(byte) current_xpos#54 play_move_leftright::@5/(byte) current_xpos#55 ) - (byte) play_move_leftright::return#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) current_xpos#45 ← phi( play_move_leftright::@2/(byte) current_xpos#63 play_move_leftright::@3/(byte) current_xpos#64 play_move_leftright::@5/(byte) current_xpos#65 ) + (byte) play_move_leftright::return#3 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_move_leftright::@return play_move_leftright::@5: scope:[play_move_leftright] from play_move_leftright::@14 - (byte) current_xpos#55 ← phi( play_move_leftright::@14/(byte) current_xpos#38 ) + (byte) current_xpos#65 ← phi( play_move_leftright::@14/(byte) current_xpos#46 ) to:play_move_leftright::@4 play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright::@14 - (byte) current_xpos#20 ← phi( play_move_leftright::@14/(byte) current_xpos#38 ) - (byte) current_xpos#4 ← -- (byte) current_xpos#20 - (byte) play_move_leftright::return#3 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) current_xpos#25 ← phi( play_move_leftright::@14/(byte) current_xpos#46 ) + (byte) current_xpos#7 ← -- (byte) current_xpos#25 + (byte) play_move_leftright::return#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_move_leftright::@return -play_move_rotate: scope:[play_move_rotate] from main::@27 - (byte*) current_piece_gfx#60 ← phi( main::@27/(byte*) current_piece_gfx#33 ) - (byte*) current_piece#47 ← phi( main::@27/(byte*) current_piece#58 ) - (byte) current_ypos#42 ← phi( main::@27/(byte) current_ypos#55 ) - (byte) current_xpos#56 ← phi( main::@27/(byte) current_xpos#9 ) - (byte) current_orientation#32 ← phi( main::@27/(byte) current_orientation#38 ) - (byte) play_move_rotate::key_event#1 ← phi( main::@27/(byte) play_move_rotate::key_event#0 ) +play_move_rotate: scope:[play_move_rotate] from play_movement::@6 + (byte*) current_piece_gfx#69 ← phi( play_movement::@6/(byte*) current_piece_gfx#29 ) + (byte*) current_piece#58 ← phi( play_movement::@6/(byte*) current_piece#39 ) + (byte) current_ypos#53 ← phi( play_movement::@6/(byte) current_ypos#48 ) + (byte) current_xpos#66 ← phi( play_movement::@6/(byte) current_xpos#1 ) + (byte) current_orientation#39 ← phi( play_movement::@6/(byte) current_orientation#31 ) + (byte) play_move_rotate::key_event#1 ← phi( play_movement::@6/(byte) play_move_rotate::key_event#0 ) (byte) play_move_rotate::orientation#0 ← (byte/word/signed word/dword/signed dword) 128 (bool~) play_move_rotate::$0 ← (byte) play_move_rotate::key_event#1 == (byte) KEY_Z#0 if((bool~) play_move_rotate::$0) goto play_move_rotate::@1 to:play_move_rotate::@6 play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - (byte*) current_piece_gfx#75 ← phi( play_move_rotate/(byte*) current_piece_gfx#60 ) - (byte*) current_piece#35 ← phi( play_move_rotate/(byte*) current_piece#47 ) - (byte) current_ypos#32 ← phi( play_move_rotate/(byte) current_ypos#42 ) - (byte) current_xpos#39 ← phi( play_move_rotate/(byte) current_xpos#56 ) - (byte) current_orientation#17 ← phi( play_move_rotate/(byte) current_orientation#32 ) - (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#17 - (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte*) current_piece_gfx#85 ← phi( play_move_rotate/(byte*) current_piece_gfx#69 ) + (byte*) current_piece#45 ← phi( play_move_rotate/(byte*) current_piece#58 ) + (byte) current_ypos#39 ← phi( play_move_rotate/(byte) current_ypos#53 ) + (byte) current_xpos#47 ← phi( play_move_rotate/(byte) current_xpos#66 ) + (byte) current_orientation#22 ← phi( play_move_rotate/(byte) current_orientation#39 ) + (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#22 - (byte/signed byte/word/signed word/dword/signed dword) 16 (byte/word/dword~) play_move_rotate::$5 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 (byte) play_move_rotate::orientation#1 ← (byte/word/dword~) play_move_rotate::$5 to:play_move_rotate::@4 play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate - (byte*) current_piece#48 ← phi( play_move_rotate/(byte*) current_piece#47 ) - (byte*) current_piece_gfx#42 ← phi( play_move_rotate/(byte*) current_piece_gfx#60 ) - (byte) current_ypos#43 ← phi( play_move_rotate/(byte) current_ypos#42 ) - (byte) current_xpos#57 ← phi( play_move_rotate/(byte) current_xpos#56 ) - (byte) current_orientation#33 ← phi( play_move_rotate/(byte) current_orientation#32 ) + (byte*) current_piece#59 ← phi( play_move_rotate/(byte*) current_piece#58 ) + (byte*) current_piece_gfx#51 ← phi( play_move_rotate/(byte*) current_piece_gfx#69 ) + (byte) current_ypos#54 ← phi( play_move_rotate/(byte) current_ypos#53 ) + (byte) current_xpos#67 ← phi( play_move_rotate/(byte) current_xpos#66 ) + (byte) current_orientation#40 ← phi( play_move_rotate/(byte) current_orientation#39 ) (byte) play_move_rotate::key_event#2 ← phi( play_move_rotate/(byte) play_move_rotate::key_event#1 ) (bool~) play_move_rotate::$1 ← (byte) play_move_rotate::key_event#2 == (byte) KEY_X#0 if((bool~) play_move_rotate::$1) goto play_move_rotate::@2 to:play_move_rotate::@7 play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 - (byte*) current_piece_gfx#76 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#42 ) - (byte*) current_piece#36 ← phi( play_move_rotate::@6/(byte*) current_piece#48 ) - (byte) current_ypos#33 ← phi( play_move_rotate::@6/(byte) current_ypos#43 ) - (byte) current_xpos#40 ← phi( play_move_rotate::@6/(byte) current_xpos#57 ) - (byte) current_orientation#18 ← phi( play_move_rotate::@6/(byte) current_orientation#33 ) - (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte*) current_piece_gfx#86 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#51 ) + (byte*) current_piece#46 ← phi( play_move_rotate::@6/(byte*) current_piece#59 ) + (byte) current_ypos#40 ← phi( play_move_rotate::@6/(byte) current_ypos#54 ) + (byte) current_xpos#48 ← phi( play_move_rotate::@6/(byte) current_xpos#67 ) + (byte) current_orientation#23 ← phi( play_move_rotate::@6/(byte) current_orientation#40 ) + (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#23 + (byte/signed byte/word/signed word/dword/signed dword) 16 (byte/word/dword~) play_move_rotate::$3 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 (byte) play_move_rotate::orientation#2 ← (byte/word/dword~) play_move_rotate::$3 to:play_move_rotate::@4 play_move_rotate::@7: scope:[play_move_rotate] from play_move_rotate::@6 - (byte*) current_piece_gfx#28 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#42 ) - (byte) current_orientation#35 ← phi( play_move_rotate::@6/(byte) current_orientation#33 ) - (byte) play_move_rotate::return#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*) current_piece_gfx#35 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#51 ) + (byte) current_orientation#42 ← phi( play_move_rotate::@6/(byte) current_orientation#40 ) + (byte) play_move_rotate::return#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_move_rotate::@return play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 play_move_rotate::@5 play_move_rotate::@7 - (byte*) current_piece_gfx#14 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#3 play_move_rotate::@5/(byte*) current_piece_gfx#27 play_move_rotate::@7/(byte*) current_piece_gfx#28 ) - (byte) current_orientation#19 ← phi( play_move_rotate::@11/(byte) current_orientation#4 play_move_rotate::@5/(byte) current_orientation#34 play_move_rotate::@7/(byte) current_orientation#35 ) - (byte) play_move_rotate::return#5 ← phi( play_move_rotate::@11/(byte) play_move_rotate::return#3 play_move_rotate::@5/(byte) play_move_rotate::return#2 play_move_rotate::@7/(byte) play_move_rotate::return#0 ) - (byte) play_move_rotate::return#1 ← (byte) play_move_rotate::return#5 - (byte) current_orientation#3 ← (byte) current_orientation#19 - (byte*) current_piece_gfx#2 ← (byte*) current_piece_gfx#14 + (byte*) current_piece_gfx#19 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#6 play_move_rotate::@5/(byte*) current_piece_gfx#34 play_move_rotate::@7/(byte*) current_piece_gfx#35 ) + (byte) current_orientation#24 ← phi( play_move_rotate::@11/(byte) current_orientation#7 play_move_rotate::@5/(byte) current_orientation#41 play_move_rotate::@7/(byte) current_orientation#42 ) + (byte) play_move_rotate::return#6 ← phi( play_move_rotate::@11/(byte) play_move_rotate::return#4 play_move_rotate::@5/(byte) play_move_rotate::return#3 play_move_rotate::@7/(byte) play_move_rotate::return#1 ) + (byte) play_move_rotate::return#2 ← (byte) play_move_rotate::return#6 + (byte) current_orientation#6 ← (byte) current_orientation#24 + (byte*) current_piece_gfx#5 ← (byte*) current_piece_gfx#19 return to:@return play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 - (byte*) current_piece_gfx#61 ← phi( play_move_rotate::@1/(byte*) current_piece_gfx#75 play_move_rotate::@2/(byte*) current_piece_gfx#76 ) - (byte) current_orientation#57 ← phi( play_move_rotate::@1/(byte) current_orientation#17 play_move_rotate::@2/(byte) current_orientation#18 ) - (byte*) current_piece#25 ← phi( play_move_rotate::@1/(byte*) current_piece#35 play_move_rotate::@2/(byte*) current_piece#36 ) + (byte*) current_piece_gfx#70 ← phi( play_move_rotate::@1/(byte*) current_piece_gfx#85 play_move_rotate::@2/(byte*) current_piece_gfx#86 ) + (byte) current_orientation#66 ← phi( play_move_rotate::@1/(byte) current_orientation#22 play_move_rotate::@2/(byte) current_orientation#23 ) + (byte*) current_piece#32 ← phi( play_move_rotate::@1/(byte*) current_piece#45 play_move_rotate::@2/(byte*) current_piece#46 ) (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) - (byte) current_ypos#16 ← phi( play_move_rotate::@1/(byte) current_ypos#32 play_move_rotate::@2/(byte) current_ypos#33 ) - (byte) current_xpos#21 ← phi( play_move_rotate::@1/(byte) current_xpos#39 play_move_rotate::@2/(byte) current_xpos#40 ) - (byte) play_collision::xpos#3 ← (byte) current_xpos#21 - (byte) play_collision::ypos#3 ← (byte) current_ypos#16 + (byte) current_ypos#20 ← phi( play_move_rotate::@1/(byte) current_ypos#39 play_move_rotate::@2/(byte) current_ypos#40 ) + (byte) current_xpos#26 ← phi( play_move_rotate::@1/(byte) current_xpos#47 play_move_rotate::@2/(byte) current_xpos#48 ) + (byte) play_collision::xpos#3 ← (byte) current_xpos#26 + (byte) play_collision::ypos#3 ← (byte) current_ypos#20 (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 call play_collision (byte) play_collision::return#3 ← (byte) play_collision::return#5 to:play_move_rotate::@14 play_move_rotate::@14: scope:[play_move_rotate] from play_move_rotate::@4 - (byte*) current_piece_gfx#43 ← phi( play_move_rotate::@4/(byte*) current_piece_gfx#61 ) - (byte) current_orientation#45 ← phi( play_move_rotate::@4/(byte) current_orientation#57 ) - (byte*) current_piece#21 ← phi( play_move_rotate::@4/(byte*) current_piece#25 ) + (byte*) current_piece_gfx#52 ← phi( play_move_rotate::@4/(byte*) current_piece_gfx#70 ) + (byte) current_orientation#54 ← phi( play_move_rotate::@4/(byte) current_orientation#66 ) + (byte*) current_piece#28 ← phi( play_move_rotate::@4/(byte*) current_piece#32 ) (byte) play_move_rotate::orientation#5 ← phi( play_move_rotate::@4/(byte) play_move_rotate::orientation#3 ) - (byte) play_collision::return#13 ← phi( play_move_rotate::@4/(byte) play_collision::return#3 ) - (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 + (byte) play_collision::return#14 ← phi( play_move_rotate::@4/(byte) play_collision::return#3 ) + (byte~) play_move_rotate::$6 ← (byte) play_collision::return#14 (bool~) play_move_rotate::$7 ← (byte~) play_move_rotate::$6 == (byte) COLLISION_NONE#0 (bool~) play_move_rotate::$8 ← ! (bool~) play_move_rotate::$7 if((bool~) play_move_rotate::$8) goto play_move_rotate::@5 to:play_move_rotate::@11 play_move_rotate::@5: scope:[play_move_rotate] from play_move_rotate::@14 - (byte*) current_piece_gfx#27 ← phi( play_move_rotate::@14/(byte*) current_piece_gfx#43 ) - (byte) current_orientation#34 ← phi( play_move_rotate::@14/(byte) current_orientation#45 ) - (byte) play_move_rotate::return#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*) current_piece_gfx#34 ← phi( play_move_rotate::@14/(byte*) current_piece_gfx#52 ) + (byte) current_orientation#41 ← phi( play_move_rotate::@14/(byte) current_orientation#54 ) + (byte) play_move_rotate::return#3 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_move_rotate::@return play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 - (byte*) current_piece#11 ← phi( play_move_rotate::@14/(byte*) current_piece#21 ) + (byte*) current_piece#15 ← phi( play_move_rotate::@14/(byte*) current_piece#28 ) (byte) play_move_rotate::orientation#4 ← phi( play_move_rotate::@14/(byte) play_move_rotate::orientation#5 ) - (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#4 - (byte*~) play_move_rotate::$9 ← (byte*) current_piece#11 + (byte) current_orientation#4 - (byte*) current_piece_gfx#3 ← (byte*~) play_move_rotate::$9 - (byte) play_move_rotate::return#3 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#4 + (byte*~) play_move_rotate::$9 ← (byte*) current_piece#15 + (byte) current_orientation#7 + (byte*) current_piece_gfx#6 ← (byte*~) play_move_rotate::$9 + (byte) play_move_rotate::return#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_move_rotate::@return -@29: scope:[] from @25 - (byte) irq_raster_next#19 ← phi( @25/(byte) irq_raster_next#20 ) +@30: scope:[] from @25 (byte) irq_cnt#19 ← phi( @25/(byte) irq_cnt#20 ) - (byte) irq_sprite_ptr#16 ← phi( @25/(byte) irq_sprite_ptr#17 ) - (byte) level_bcd#48 ← phi( @25/(byte) level_bcd#54 ) - (byte) level#44 ← phi( @25/(byte) level#50 ) - (dword) score_bcd#38 ← phi( @25/(dword) score_bcd#44 ) - (word) lines_bcd#38 ← phi( @25/(word) lines_bcd#44 ) - (byte) current_movedown_counter#27 ← phi( @25/(byte) current_movedown_counter#0 ) - (byte) keyboard_modifiers#33 ← phi( @25/(byte) keyboard_modifiers#34 ) - (byte) keyboard_events_size#36 ← phi( @25/(byte) keyboard_events_size#40 ) - (byte) render_screen_showing#20 ← phi( @25/(byte) render_screen_showing#21 ) - (byte) current_piece_char#37 ← phi( @25/(byte) current_piece_char#44 ) - (byte) current_ypos#50 ← phi( @25/(byte) current_ypos#56 ) - (byte) current_xpos#65 ← phi( @25/(byte) current_xpos#75 ) - (byte*) current_piece_gfx#52 ← phi( @25/(byte*) current_piece_gfx#62 ) - (byte) current_orientation#51 ← phi( @25/(byte) current_orientation#0 ) - (byte*) current_piece#42 ← phi( @25/(byte*) current_piece#0 ) - (byte) current_movedown_slow#54 ← phi( @25/(byte) current_movedown_slow#0 ) + (byte) irq_sprite_ptr#17 ← phi( @25/(byte) irq_sprite_ptr#18 ) + (byte) level_bcd#55 ← phi( @25/(byte) level_bcd#62 ) + (byte) level#51 ← phi( @25/(byte) level#58 ) + (dword) score_bcd#45 ← phi( @25/(dword) score_bcd#52 ) + (word) lines_bcd#45 ← phi( @25/(word) lines_bcd#52 ) + (byte) current_movedown_counter#34 ← phi( @25/(byte) current_movedown_counter#0 ) + (byte) keyboard_modifiers#32 ← phi( @25/(byte) keyboard_modifiers#33 ) + (byte) keyboard_events_size#35 ← phi( @25/(byte) keyboard_events_size#39 ) + (byte) render_screen_showing#19 ← phi( @25/(byte) render_screen_showing#20 ) + (byte) game_over#42 ← phi( @25/(byte) game_over#48 ) + (byte) current_ypos#61 ← phi( @25/(byte) current_ypos#66 ) + (byte) current_xpos#75 ← phi( @25/(byte) current_xpos#85 ) + (byte*) current_piece_gfx#61 ← phi( @25/(byte*) current_piece_gfx#71 ) + (byte) current_orientation#60 ← phi( @25/(byte) current_orientation#0 ) + (byte) current_piece_char#47 ← phi( @25/(byte) current_piece_char#55 ) + (byte*) current_piece#52 ← phi( @25/(byte*) current_piece#0 ) + (byte) current_movedown_slow#61 ← phi( @25/(byte) current_movedown_slow#0 ) (byte) render_screen_render#36 ← phi( @25/(byte) render_screen_render#40 ) - (byte) render_screen_show#32 ← phi( @25/(byte) render_screen_show#35 ) - (byte) irq_sprite_ypos#15 ← phi( @25/(byte) irq_sprite_ypos#18 ) + (byte) render_screen_show#34 ← phi( @25/(byte) render_screen_show#37 ) + (byte) irq_raster_next#17 ← phi( @25/(byte) irq_raster_next#20 ) + (byte) irq_sprite_ypos#14 ← phi( @25/(byte) irq_sprite_ypos#18 ) (byte) COLLISION_NONE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) COLLISION_PLAYFIELD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) COLLISION_BOTTOM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) COLLISION_LEFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) COLLISION_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 - to:@36 -play_collision: scope:[play_collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 - (byte) play_collision::xpos#5 ← phi( play_move_down::@12/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@7/(byte) play_collision::xpos#2 play_move_rotate::@4/(byte) play_collision::xpos#3 ) - (byte) play_collision::ypos#4 ← phi( play_move_down::@12/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@7/(byte) play_collision::ypos#2 play_move_rotate::@4/(byte) play_collision::ypos#3 ) - (byte) play_collision::orientation#4 ← phi( play_move_down::@12/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@7/(byte) play_collision::orientation#2 play_move_rotate::@4/(byte) play_collision::orientation#3 ) - (byte*) current_piece#12 ← phi( play_move_down::@12/(byte*) current_piece#22 play_move_leftright::@1/(byte*) current_piece#23 play_move_leftright::@7/(byte*) current_piece#24 play_move_rotate::@4/(byte*) current_piece#25 ) - (byte*~) play_collision::$0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 + to:@37 +play_collision: scope:[play_collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 play_spawn_current::@3 + (byte) play_collision::xpos#6 ← phi( play_move_down::@12/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@7/(byte) play_collision::xpos#2 play_move_rotate::@4/(byte) play_collision::xpos#3 play_spawn_current::@3/(byte) play_collision::xpos#4 ) + (byte) play_collision::ypos#5 ← phi( play_move_down::@12/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@7/(byte) play_collision::ypos#2 play_move_rotate::@4/(byte) play_collision::ypos#3 play_spawn_current::@3/(byte) play_collision::ypos#4 ) + (byte) play_collision::orientation#5 ← phi( play_move_down::@12/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@7/(byte) play_collision::orientation#2 play_move_rotate::@4/(byte) play_collision::orientation#3 play_spawn_current::@3/(byte) play_collision::orientation#4 ) + (byte*) current_piece#16 ← phi( play_move_down::@12/(byte*) current_piece#29 play_move_leftright::@1/(byte*) current_piece#30 play_move_leftright::@7/(byte*) current_piece#31 play_move_rotate::@4/(byte*) current_piece#32 play_spawn_current::@3/(byte*) current_piece#5 ) + (byte*~) play_collision::$0 ← (byte*) current_piece#16 + (byte) play_collision::orientation#5 (byte*) play_collision::piece_gfx#0 ← (byte*~) play_collision::$0 (byte) play_collision::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte~) play_collision::$1 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte~) play_collision::$1 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) play_collision::ypos2#0 ← (byte~) play_collision::$1 (byte) play_collision::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_collision::@1 @@ -2102,15 +2310,15 @@ play_collision::@1: scope:[play_collision] from play_collision play_collision:: (byte) play_collision::l#6 ← phi( play_collision/(byte) play_collision::l#0 play_collision::@17/(byte) play_collision::l#1 ) (byte) play_collision::i#3 ← phi( play_collision/(byte) play_collision::i#0 play_collision::@17/(byte) play_collision::i#5 ) (byte*) play_collision::piece_gfx#2 ← phi( play_collision/(byte*) play_collision::piece_gfx#0 play_collision::@17/(byte*) play_collision::piece_gfx#4 ) - (byte) play_collision::xpos#4 ← phi( play_collision/(byte) play_collision::xpos#5 play_collision::@17/(byte) play_collision::xpos#6 ) + (byte) play_collision::xpos#5 ← phi( play_collision/(byte) play_collision::xpos#6 play_collision::@17/(byte) play_collision::xpos#7 ) (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@17/(byte) play_collision::ypos2#1 ) (byte*) play_collision::playfield_line#0 ← *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) - (byte) play_collision::col#0 ← (byte) play_collision::xpos#4 + (byte) play_collision::col#0 ← (byte) play_collision::xpos#5 (byte) play_collision::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_collision::@2 play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@3 (byte*) play_collision::playfield_line#5 ← phi( play_collision::@1/(byte*) play_collision::playfield_line#0 play_collision::@3/(byte*) play_collision::playfield_line#6 ) - (byte) play_collision::xpos#8 ← phi( play_collision::@1/(byte) play_collision::xpos#4 play_collision::@3/(byte) play_collision::xpos#7 ) + (byte) play_collision::xpos#9 ← phi( play_collision::@1/(byte) play_collision::xpos#5 play_collision::@3/(byte) play_collision::xpos#8 ) (byte) play_collision::l#4 ← phi( play_collision::@1/(byte) play_collision::l#6 play_collision::@3/(byte) play_collision::l#3 ) (byte) play_collision::ypos2#5 ← phi( play_collision::@1/(byte) play_collision::ypos2#2 play_collision::@3/(byte) play_collision::ypos2#6 ) (byte) play_collision::c#3 ← phi( play_collision::@1/(byte) play_collision::c#0 play_collision::@3/(byte) play_collision::c#1 ) @@ -2124,7 +2332,7 @@ play_collision::@2: scope:[play_collision] from play_collision::@1 play_collisi to:play_collision::@8 play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@7 (byte*) play_collision::playfield_line#6 ← phi( play_collision::@2/(byte*) play_collision::playfield_line#5 play_collision::@7/(byte*) play_collision::playfield_line#7 ) - (byte) play_collision::xpos#7 ← phi( play_collision::@2/(byte) play_collision::xpos#8 play_collision::@7/(byte) play_collision::xpos#9 ) + (byte) play_collision::xpos#8 ← phi( play_collision::@2/(byte) play_collision::xpos#9 play_collision::@7/(byte) play_collision::xpos#10 ) (byte) play_collision::l#3 ← phi( play_collision::@2/(byte) play_collision::l#4 play_collision::@7/(byte) play_collision::l#5 ) (byte) play_collision::ypos2#6 ← phi( play_collision::@2/(byte) play_collision::ypos2#5 play_collision::@7/(byte) play_collision::ypos2#7 ) (byte) play_collision::i#4 ← phi( play_collision::@2/(byte) play_collision::i#1 play_collision::@7/(byte) play_collision::i#6 ) @@ -2137,7 +2345,7 @@ play_collision::@3: scope:[play_collision] from play_collision::@2 play_collisi if((bool~) play_collision::$14) goto play_collision::@2 to:play_collision::@17 play_collision::@8: scope:[play_collision] from play_collision::@2 - (byte) play_collision::xpos#13 ← phi( play_collision::@2/(byte) play_collision::xpos#8 ) + (byte) play_collision::xpos#14 ← phi( play_collision::@2/(byte) play_collision::xpos#9 ) (byte) play_collision::l#10 ← phi( play_collision::@2/(byte) play_collision::l#4 ) (byte) play_collision::i#10 ← phi( play_collision::@2/(byte) play_collision::i#1 ) (byte*) play_collision::piece_gfx#9 ← phi( play_collision::@2/(byte*) play_collision::piece_gfx#1 ) @@ -2151,7 +2359,7 @@ play_collision::@8: scope:[play_collision] from play_collision::@2 if((bool~) play_collision::$6) goto play_collision::@4 to:play_collision::@9 play_collision::@4: scope:[play_collision] from play_collision::@8 - (byte) play_collision::xpos#12 ← phi( play_collision::@8/(byte) play_collision::xpos#13 ) + (byte) play_collision::xpos#13 ← phi( play_collision::@8/(byte) play_collision::xpos#14 ) (byte) play_collision::l#9 ← phi( play_collision::@8/(byte) play_collision::l#10 ) (byte) play_collision::ypos2#10 ← phi( play_collision::@8/(byte) play_collision::ypos2#3 ) (byte) play_collision::i#9 ← phi( play_collision::@8/(byte) play_collision::i#10 ) @@ -2168,12 +2376,12 @@ play_collision::@9: scope:[play_collision] from play_collision::@8 (byte) play_collision::return#4 ← (byte) COLLISION_BOTTOM#0 to:play_collision::@return play_collision::@return: scope:[play_collision] from play_collision::@11 play_collision::@13 play_collision::@15 play_collision::@18 play_collision::@9 - (byte) play_collision::return#14 ← phi( play_collision::@11/(byte) play_collision::return#6 play_collision::@13/(byte) play_collision::return#7 play_collision::@15/(byte) play_collision::return#8 play_collision::@18/(byte) play_collision::return#9 play_collision::@9/(byte) play_collision::return#4 ) - (byte) play_collision::return#5 ← (byte) play_collision::return#14 + (byte) play_collision::return#15 ← phi( play_collision::@11/(byte) play_collision::return#6 play_collision::@13/(byte) play_collision::return#7 play_collision::@15/(byte) play_collision::return#8 play_collision::@18/(byte) play_collision::return#9 play_collision::@9/(byte) play_collision::return#4 ) + (byte) play_collision::return#5 ← (byte) play_collision::return#15 return to:@return play_collision::@5: scope:[play_collision] from play_collision::@4 - (byte) play_collision::xpos#11 ← phi( play_collision::@4/(byte) play_collision::xpos#12 ) + (byte) play_collision::xpos#12 ← phi( play_collision::@4/(byte) play_collision::xpos#13 ) (byte) play_collision::l#8 ← phi( play_collision::@4/(byte) play_collision::l#9 ) (byte) play_collision::ypos2#9 ← phi( play_collision::@4/(byte) play_collision::ypos2#10 ) (byte) play_collision::i#8 ← phi( play_collision::@4/(byte) play_collision::i#9 ) @@ -2189,7 +2397,7 @@ play_collision::@11: scope:[play_collision] from play_collision::@4 (byte) play_collision::return#6 ← (byte) COLLISION_LEFT#0 to:play_collision::@return play_collision::@6: scope:[play_collision] from play_collision::@5 - (byte) play_collision::xpos#10 ← phi( play_collision::@5/(byte) play_collision::xpos#11 ) + (byte) play_collision::xpos#11 ← phi( play_collision::@5/(byte) play_collision::xpos#12 ) (byte) play_collision::l#7 ← phi( play_collision::@5/(byte) play_collision::l#8 ) (byte) play_collision::ypos2#8 ← phi( play_collision::@5/(byte) play_collision::ypos2#9 ) (byte) play_collision::i#7 ← phi( play_collision::@5/(byte) play_collision::i#8 ) @@ -2206,7 +2414,7 @@ play_collision::@13: scope:[play_collision] from play_collision::@5 to:play_collision::@return play_collision::@7: scope:[play_collision] from play_collision::@6 (byte*) play_collision::playfield_line#7 ← phi( play_collision::@6/(byte*) play_collision::playfield_line#1 ) - (byte) play_collision::xpos#9 ← phi( play_collision::@6/(byte) play_collision::xpos#10 ) + (byte) play_collision::xpos#10 ← phi( play_collision::@6/(byte) play_collision::xpos#11 ) (byte) play_collision::l#5 ← phi( play_collision::@6/(byte) play_collision::l#7 ) (byte) play_collision::ypos2#7 ← phi( play_collision::@6/(byte) play_collision::ypos2#8 ) (byte) play_collision::i#6 ← phi( play_collision::@6/(byte) play_collision::i#7 ) @@ -2220,7 +2428,7 @@ play_collision::@15: scope:[play_collision] from play_collision::@6 play_collision::@17: scope:[play_collision] from play_collision::@3 (byte) play_collision::i#5 ← phi( play_collision::@3/(byte) play_collision::i#4 ) (byte*) play_collision::piece_gfx#4 ← phi( play_collision::@3/(byte*) play_collision::piece_gfx#3 ) - (byte) play_collision::xpos#6 ← phi( play_collision::@3/(byte) play_collision::xpos#7 ) + (byte) play_collision::xpos#7 ← phi( play_collision::@3/(byte) play_collision::xpos#8 ) (byte) play_collision::l#2 ← phi( play_collision::@3/(byte) play_collision::l#3 ) (byte) play_collision::ypos2#4 ← phi( play_collision::@3/(byte) play_collision::ypos2#6 ) (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -2232,49 +2440,49 @@ play_collision::@18: scope:[play_collision] from play_collision::@17 (byte) play_collision::return#9 ← (byte) COLLISION_NONE#0 to:play_collision::@return play_lock_current: scope:[play_lock_current] from play_move_down::@13 - (byte) current_piece_char#45 ← phi( play_move_down::@13/(byte) current_piece_char#59 ) - (byte*) current_piece_gfx#44 ← phi( play_move_down::@13/(byte*) current_piece_gfx#63 ) - (byte) current_xpos#41 ← phi( play_move_down::@13/(byte) current_xpos#58 ) - (byte) current_ypos#17 ← phi( play_move_down::@13/(byte) current_ypos#34 ) + (byte) current_piece_char#56 ← phi( play_move_down::@13/(byte) current_piece_char#70 ) + (byte*) current_piece_gfx#53 ← phi( play_move_down::@13/(byte*) current_piece_gfx#72 ) + (byte) current_xpos#49 ← phi( play_move_down::@13/(byte) current_xpos#68 ) + (byte) current_ypos#21 ← phi( play_move_down::@13/(byte) current_ypos#41 ) (byte) play_lock_current::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte~) play_lock_current::$0 ← (byte) current_ypos#17 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte~) play_lock_current::$0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) play_lock_current::ypos2#0 ← (byte~) play_lock_current::$0 (byte) play_lock_current::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_lock_current::@1 play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@5 (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte) play_lock_current::l#0 play_lock_current::@5/(byte) play_lock_current::l#1 ) - (byte) current_piece_char#30 ← phi( play_lock_current/(byte) current_piece_char#45 play_lock_current::@5/(byte) current_piece_char#46 ) + (byte) current_piece_char#40 ← phi( play_lock_current/(byte) current_piece_char#56 play_lock_current::@5/(byte) current_piece_char#57 ) (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte) play_lock_current::i#0 play_lock_current::@5/(byte) play_lock_current::i#5 ) - (byte*) current_piece_gfx#29 ← phi( play_lock_current/(byte*) current_piece_gfx#44 play_lock_current::@5/(byte*) current_piece_gfx#45 ) - (byte) current_xpos#22 ← phi( play_lock_current/(byte) current_xpos#41 play_lock_current::@5/(byte) current_xpos#42 ) + (byte*) current_piece_gfx#36 ← phi( play_lock_current/(byte*) current_piece_gfx#53 play_lock_current::@5/(byte*) current_piece_gfx#54 ) + (byte) current_xpos#27 ← phi( play_lock_current/(byte) current_xpos#49 play_lock_current::@5/(byte) current_xpos#50 ) (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@5/(byte) play_lock_current::ypos2#1 ) (byte*) play_lock_current::playfield_line#0 ← *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) - (byte) play_lock_current::col#0 ← (byte) current_xpos#22 + (byte) play_lock_current::col#0 ← (byte) current_xpos#27 (byte) play_lock_current::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_lock_current::@2 play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@3 - (byte) current_xpos#76 ← phi( play_lock_current::@1/(byte) current_xpos#22 play_lock_current::@3/(byte) current_xpos#59 ) + (byte) current_xpos#86 ← phi( play_lock_current::@1/(byte) current_xpos#27 play_lock_current::@3/(byte) current_xpos#69 ) (byte) play_lock_current::l#4 ← phi( play_lock_current::@1/(byte) play_lock_current::l#6 play_lock_current::@3/(byte) play_lock_current::l#3 ) (byte) play_lock_current::ypos2#5 ← phi( play_lock_current::@1/(byte) play_lock_current::ypos2#2 play_lock_current::@3/(byte) play_lock_current::ypos2#4 ) (byte*) play_lock_current::playfield_line#2 ← phi( play_lock_current::@1/(byte*) play_lock_current::playfield_line#0 play_lock_current::@3/(byte*) play_lock_current::playfield_line#3 ) - (byte) current_piece_char#21 ← phi( play_lock_current::@1/(byte) current_piece_char#30 play_lock_current::@3/(byte) current_piece_char#31 ) + (byte) current_piece_char#28 ← phi( play_lock_current::@1/(byte) current_piece_char#40 play_lock_current::@3/(byte) current_piece_char#41 ) (byte) play_lock_current::c#3 ← phi( play_lock_current::@1/(byte) play_lock_current::c#0 play_lock_current::@3/(byte) play_lock_current::c#1 ) (byte) play_lock_current::col#4 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@3/(byte) play_lock_current::col#1 ) (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@3/(byte) play_lock_current::i#4 ) - (byte*) current_piece_gfx#15 ← phi( play_lock_current::@1/(byte*) current_piece_gfx#29 play_lock_current::@3/(byte*) current_piece_gfx#30 ) - (bool~) play_lock_current::$1 ← *((byte*) current_piece_gfx#15 + (byte) play_lock_current::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*) current_piece_gfx#20 ← phi( play_lock_current::@1/(byte*) current_piece_gfx#36 play_lock_current::@3/(byte*) current_piece_gfx#37 ) + (bool~) play_lock_current::$1 ← *((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) play_lock_current::$2 ← ! (bool~) play_lock_current::$1 (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 if((bool~) play_lock_current::$2) goto play_lock_current::@3 to:play_lock_current::@4 play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 - (byte) current_xpos#59 ← phi( play_lock_current::@2/(byte) current_xpos#76 play_lock_current::@4/(byte) current_xpos#77 ) + (byte) current_xpos#69 ← phi( play_lock_current::@2/(byte) current_xpos#86 play_lock_current::@4/(byte) current_xpos#87 ) (byte*) play_lock_current::playfield_line#3 ← phi( play_lock_current::@2/(byte*) play_lock_current::playfield_line#2 play_lock_current::@4/(byte*) play_lock_current::playfield_line#1 ) - (byte) current_piece_char#31 ← phi( play_lock_current::@2/(byte) current_piece_char#21 play_lock_current::@4/(byte) current_piece_char#11 ) + (byte) current_piece_char#41 ← phi( play_lock_current::@2/(byte) current_piece_char#28 play_lock_current::@4/(byte) current_piece_char#15 ) (byte) play_lock_current::l#3 ← phi( play_lock_current::@2/(byte) play_lock_current::l#4 play_lock_current::@4/(byte) play_lock_current::l#5 ) (byte) play_lock_current::ypos2#4 ← phi( play_lock_current::@2/(byte) play_lock_current::ypos2#5 play_lock_current::@4/(byte) play_lock_current::ypos2#6 ) (byte) play_lock_current::i#4 ← phi( play_lock_current::@2/(byte) play_lock_current::i#1 play_lock_current::@4/(byte) play_lock_current::i#6 ) - (byte*) current_piece_gfx#30 ← phi( play_lock_current::@2/(byte*) current_piece_gfx#15 play_lock_current::@4/(byte*) current_piece_gfx#46 ) + (byte*) current_piece_gfx#37 ← phi( play_lock_current::@2/(byte*) current_piece_gfx#20 play_lock_current::@4/(byte*) current_piece_gfx#55 ) (byte) play_lock_current::c#2 ← phi( play_lock_current::@2/(byte) play_lock_current::c#3 play_lock_current::@4/(byte) play_lock_current::c#4 ) (byte) play_lock_current::col#2 ← phi( play_lock_current::@2/(byte) play_lock_current::col#4 play_lock_current::@4/(byte) play_lock_current::col#3 ) (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 @@ -2283,22 +2491,22 @@ play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 pla if((bool~) play_lock_current::$3) goto play_lock_current::@2 to:play_lock_current::@5 play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 - (byte) current_xpos#77 ← phi( play_lock_current::@2/(byte) current_xpos#76 ) + (byte) current_xpos#87 ← phi( play_lock_current::@2/(byte) current_xpos#86 ) (byte) play_lock_current::l#5 ← phi( play_lock_current::@2/(byte) play_lock_current::l#4 ) (byte) play_lock_current::ypos2#6 ← phi( play_lock_current::@2/(byte) play_lock_current::ypos2#5 ) (byte) play_lock_current::i#6 ← phi( play_lock_current::@2/(byte) play_lock_current::i#1 ) - (byte*) current_piece_gfx#46 ← phi( play_lock_current::@2/(byte*) current_piece_gfx#15 ) + (byte*) current_piece_gfx#55 ← phi( play_lock_current::@2/(byte*) current_piece_gfx#20 ) (byte) play_lock_current::c#4 ← phi( play_lock_current::@2/(byte) play_lock_current::c#3 ) (byte) play_lock_current::col#3 ← phi( play_lock_current::@2/(byte) play_lock_current::col#4 ) (byte*) play_lock_current::playfield_line#1 ← phi( play_lock_current::@2/(byte*) play_lock_current::playfield_line#2 ) - (byte) current_piece_char#11 ← phi( play_lock_current::@2/(byte) current_piece_char#21 ) - *((byte*) play_lock_current::playfield_line#1 + (byte) play_lock_current::col#3) ← (byte) current_piece_char#11 + (byte) current_piece_char#15 ← phi( play_lock_current::@2/(byte) current_piece_char#28 ) + *((byte*) play_lock_current::playfield_line#1 + (byte) play_lock_current::col#3) ← (byte) current_piece_char#15 to:play_lock_current::@3 play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 - (byte) current_piece_char#46 ← phi( play_lock_current::@3/(byte) current_piece_char#31 ) + (byte) current_piece_char#57 ← phi( play_lock_current::@3/(byte) current_piece_char#41 ) (byte) play_lock_current::i#5 ← phi( play_lock_current::@3/(byte) play_lock_current::i#4 ) - (byte*) current_piece_gfx#45 ← phi( play_lock_current::@3/(byte*) current_piece_gfx#30 ) - (byte) current_xpos#42 ← phi( play_lock_current::@3/(byte) current_xpos#59 ) + (byte*) current_piece_gfx#54 ← phi( play_lock_current::@3/(byte*) current_piece_gfx#37 ) + (byte) current_xpos#50 ← phi( play_lock_current::@3/(byte) current_xpos#69 ) (byte) play_lock_current::l#2 ← phi( play_lock_current::@3/(byte) play_lock_current::l#3 ) (byte) play_lock_current::ypos2#3 ← phi( play_lock_current::@3/(byte) play_lock_current::ypos2#4 ) (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -2309,48 +2517,92 @@ play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5 return to:@return -play_spawn_current: scope:[play_spawn_current] from main::@19 play_move_down::@21 +play_spawn_current: scope:[play_spawn_current] from main::@29 play_move_down::@21 + (byte) game_over#69 ← phi( main::@29/(byte) game_over#28 play_move_down::@21/(byte) game_over#24 ) (byte) play_spawn_current::piece_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 to:play_spawn_current::@1 -play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current play_spawn_current::@7 - (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current/(byte) play_spawn_current::piece_idx#0 play_spawn_current::@7/(byte) play_spawn_current::piece_idx#1 ) +play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current play_spawn_current::@9 + (byte) game_over#61 ← phi( play_spawn_current/(byte) game_over#69 play_spawn_current::@9/(byte) game_over#70 ) + (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current/(byte) play_spawn_current::piece_idx#0 play_spawn_current::@9/(byte) play_spawn_current::piece_idx#1 ) (bool~) play_spawn_current::$0 ← (byte) play_spawn_current::piece_idx#2 == (byte/signed byte/word/signed word/dword/signed dword) 7 if((bool~) play_spawn_current::$0) goto play_spawn_current::@2 to:play_spawn_current::@3 play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 + (byte) game_over#79 ← phi( play_spawn_current::@1/(byte) game_over#61 ) call sid_rnd (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#1 - to:play_spawn_current::@7 -play_spawn_current::@7: scope:[play_spawn_current] from play_spawn_current::@2 + to:play_spawn_current::@9 +play_spawn_current::@9: scope:[play_spawn_current] from play_spawn_current::@2 + (byte) game_over#70 ← phi( play_spawn_current::@2/(byte) game_over#79 ) (byte) sid_rnd::return#4 ← phi( play_spawn_current::@2/(byte) sid_rnd::return#2 ) (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#4 (byte~) play_spawn_current::$2 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$2 to:play_spawn_current::@1 play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::@1 + (byte) game_over#49 ← phi( play_spawn_current::@1/(byte) game_over#61 ) (byte) play_spawn_current::piece_idx#3 ← phi( play_spawn_current::@1/(byte) play_spawn_current::piece_idx#2 ) (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte*) current_piece#3 ← ((byte*)) *((word[]) PIECES#0 + (byte~) play_spawn_current::$3) - (byte) current_orientation#5 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte*~) play_spawn_current::$4 ← (byte*) current_piece#3 + (byte) current_orientation#5 - (byte*) current_piece_gfx#4 ← (byte*~) play_spawn_current::$4 - (byte) current_xpos#5 ← *((byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#3) - (byte) current_ypos#3 ← *((byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#3) - (byte) current_piece_char#2 ← *((byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#3) + (byte*) current_piece#5 ← ((byte*)) *((word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte) current_piece_char#4 ← *((byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#3) + (byte) current_orientation#8 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*~) play_spawn_current::$4 ← (byte*) current_piece#5 + (byte) current_orientation#8 + (byte*) current_piece_gfx#7 ← (byte*~) play_spawn_current::$4 + (byte) current_xpos#8 ← *((byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#3) + (byte) current_ypos#5 ← *((byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#3) + (byte) play_collision::xpos#4 ← (byte) current_xpos#8 + (byte) play_collision::ypos#4 ← (byte) current_ypos#5 + (byte) play_collision::orientation#4 ← (byte) current_orientation#8 + call play_collision + (byte) play_collision::return#10 ← (byte) play_collision::return#5 + to:play_spawn_current::@10 +play_spawn_current::@10: scope:[play_spawn_current] from play_spawn_current::@3 + (byte) game_over#37 ← phi( play_spawn_current::@3/(byte) game_over#49 ) + (byte) current_ypos#55 ← phi( play_spawn_current::@3/(byte) current_ypos#5 ) + (byte) current_xpos#70 ← phi( play_spawn_current::@3/(byte) current_xpos#8 ) + (byte*) current_piece_gfx#56 ← phi( play_spawn_current::@3/(byte*) current_piece_gfx#7 ) + (byte) current_orientation#55 ← phi( play_spawn_current::@3/(byte) current_orientation#8 ) + (byte) current_piece_char#42 ← phi( play_spawn_current::@3/(byte) current_piece_char#4 ) + (byte*) current_piece#47 ← phi( play_spawn_current::@3/(byte*) current_piece#5 ) + (byte) play_collision::return#16 ← phi( play_spawn_current::@3/(byte) play_collision::return#10 ) + (byte~) play_spawn_current::$5 ← (byte) play_collision::return#16 + (bool~) play_spawn_current::$6 ← (byte~) play_spawn_current::$5 == (byte) COLLISION_PLAYFIELD#0 + (bool~) play_spawn_current::$7 ← ! (bool~) play_spawn_current::$6 + if((bool~) play_spawn_current::$7) goto play_spawn_current::@4 + to:play_spawn_current::@8 +play_spawn_current::@4: scope:[play_spawn_current] from play_spawn_current::@10 + (byte) game_over#27 ← phi( play_spawn_current::@10/(byte) game_over#37 ) + (byte) current_ypos#42 ← phi( play_spawn_current::@10/(byte) current_ypos#55 ) + (byte) current_xpos#51 ← phi( play_spawn_current::@10/(byte) current_xpos#70 ) + (byte*) current_piece_gfx#38 ← phi( play_spawn_current::@10/(byte*) current_piece_gfx#56 ) + (byte) current_orientation#43 ← phi( play_spawn_current::@10/(byte) current_orientation#55 ) + (byte) current_piece_char#29 ← phi( play_spawn_current::@10/(byte) current_piece_char#42 ) + (byte*) current_piece#33 ← phi( play_spawn_current::@10/(byte*) current_piece#47 ) to:play_spawn_current::@return -play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@3 - (byte) current_piece_char#12 ← phi( play_spawn_current::@3/(byte) current_piece_char#2 ) - (byte) current_ypos#18 ← phi( play_spawn_current::@3/(byte) current_ypos#3 ) - (byte) current_xpos#23 ← phi( play_spawn_current::@3/(byte) current_xpos#5 ) - (byte*) current_piece_gfx#16 ← phi( play_spawn_current::@3/(byte*) current_piece_gfx#4 ) - (byte) current_orientation#20 ← phi( play_spawn_current::@3/(byte) current_orientation#5 ) - (byte*) current_piece#13 ← phi( play_spawn_current::@3/(byte*) current_piece#3 ) - (byte*) current_piece#4 ← (byte*) current_piece#13 - (byte) current_orientation#6 ← (byte) current_orientation#20 - (byte*) current_piece_gfx#5 ← (byte*) current_piece_gfx#16 - (byte) current_xpos#6 ← (byte) current_xpos#23 - (byte) current_ypos#4 ← (byte) current_ypos#18 - (byte) current_piece_char#3 ← (byte) current_piece_char#12 +play_spawn_current::@8: scope:[play_spawn_current] from play_spawn_current::@10 + (byte) current_ypos#43 ← phi( play_spawn_current::@10/(byte) current_ypos#55 ) + (byte) current_xpos#52 ← phi( play_spawn_current::@10/(byte) current_xpos#70 ) + (byte*) current_piece_gfx#39 ← phi( play_spawn_current::@10/(byte*) current_piece_gfx#56 ) + (byte) current_orientation#44 ← phi( play_spawn_current::@10/(byte) current_orientation#55 ) + (byte) current_piece_char#30 ← phi( play_spawn_current::@10/(byte) current_piece_char#42 ) + (byte*) current_piece#34 ← phi( play_spawn_current::@10/(byte*) current_piece#47 ) + (byte) game_over#5 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:play_spawn_current::@return +play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@4 play_spawn_current::@8 + (byte) game_over#15 ← phi( play_spawn_current::@4/(byte) game_over#27 play_spawn_current::@8/(byte) game_over#5 ) + (byte) current_ypos#22 ← phi( play_spawn_current::@4/(byte) current_ypos#42 play_spawn_current::@8/(byte) current_ypos#43 ) + (byte) current_xpos#28 ← phi( play_spawn_current::@4/(byte) current_xpos#51 play_spawn_current::@8/(byte) current_xpos#52 ) + (byte*) current_piece_gfx#21 ← phi( play_spawn_current::@4/(byte*) current_piece_gfx#38 play_spawn_current::@8/(byte*) current_piece_gfx#39 ) + (byte) current_orientation#25 ← phi( play_spawn_current::@4/(byte) current_orientation#43 play_spawn_current::@8/(byte) current_orientation#44 ) + (byte) current_piece_char#16 ← phi( play_spawn_current::@4/(byte) current_piece_char#29 play_spawn_current::@8/(byte) current_piece_char#30 ) + (byte*) current_piece#17 ← phi( play_spawn_current::@4/(byte*) current_piece#33 play_spawn_current::@8/(byte*) current_piece#34 ) + (byte*) current_piece#6 ← (byte*) current_piece#17 + (byte) current_piece_char#5 ← (byte) current_piece_char#16 + (byte) current_orientation#9 ← (byte) current_orientation#25 + (byte*) current_piece_gfx#8 ← (byte*) current_piece_gfx#21 + (byte) current_xpos#9 ← (byte) current_xpos#28 + (byte) current_ypos#6 ← (byte) current_ypos#22 + (byte) game_over#6 ← (byte) game_over#15 return to:@return play_remove_lines: scope:[play_remove_lines] from play_move_down::@19 @@ -2459,40 +2711,40 @@ play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@ return to:@return play_update_score: scope:[play_update_score] from play_move_down::@20 - (byte) level_bcd#40 ← phi( play_move_down::@20/(byte) level_bcd#23 ) - (byte) current_movedown_slow#46 ← phi( play_move_down::@20/(byte) current_movedown_slow#29 ) - (byte) level#37 ← phi( play_move_down::@20/(byte) level#22 ) - (dword) score_bcd#21 ← phi( play_move_down::@20/(dword) score_bcd#18 ) - (word) lines_bcd#21 ← phi( play_move_down::@20/(word) lines_bcd#18 ) + (byte) level_bcd#48 ← phi( play_move_down::@20/(byte) level_bcd#30 ) + (byte) current_movedown_slow#54 ← phi( play_move_down::@20/(byte) current_movedown_slow#36 ) + (byte) level#45 ← phi( play_move_down::@20/(byte) level#29 ) + (dword) score_bcd#28 ← phi( play_move_down::@20/(dword) score_bcd#25 ) + (word) lines_bcd#28 ← phi( play_move_down::@20/(word) lines_bcd#25 ) (byte) play_update_score::removed#1 ← phi( play_move_down::@20/(byte) play_update_score::removed#0 ) (bool~) play_update_score::$0 ← (byte) play_update_score::removed#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) play_update_score::$1 ← ! (bool~) play_update_score::$0 if((bool~) play_update_score::$1) goto play_update_score::@1 to:play_update_score::@3 play_update_score::@1: scope:[play_update_score] from play_update_score - (byte) level_bcd#27 ← phi( play_update_score/(byte) level_bcd#40 ) - (byte) current_movedown_slow#33 ← phi( play_update_score/(byte) current_movedown_slow#46 ) - (byte) level#26 ← phi( play_update_score/(byte) level#37 ) - (dword) score_bcd#22 ← phi( play_update_score/(dword) score_bcd#21 ) - (word) lines_bcd#22 ← phi( play_update_score/(word) lines_bcd#21 ) + (byte) level_bcd#34 ← phi( play_update_score/(byte) level_bcd#48 ) + (byte) current_movedown_slow#40 ← phi( play_update_score/(byte) current_movedown_slow#54 ) + (byte) level#33 ← phi( play_update_score/(byte) level#45 ) + (dword) score_bcd#29 ← phi( play_update_score/(dword) score_bcd#28 ) + (word) lines_bcd#29 ← phi( play_update_score/(word) lines_bcd#28 ) to:play_update_score::@return play_update_score::@3: scope:[play_update_score] from play_update_score - (byte) level_bcd#41 ← phi( play_update_score/(byte) level_bcd#40 ) - (byte) current_movedown_slow#47 ← phi( play_update_score/(byte) current_movedown_slow#46 ) - (byte) level#38 ← phi( play_update_score/(byte) level#37 ) - (dword) score_bcd#11 ← phi( play_update_score/(dword) score_bcd#21 ) + (byte) level_bcd#49 ← phi( play_update_score/(byte) level_bcd#48 ) + (byte) current_movedown_slow#55 ← phi( play_update_score/(byte) current_movedown_slow#54 ) + (byte) level#46 ← phi( play_update_score/(byte) level#45 ) + (dword) score_bcd#15 ← phi( play_update_score/(dword) score_bcd#28 ) (byte) play_update_score::removed#2 ← phi( play_update_score/(byte) play_update_score::removed#1 ) - (word) lines_bcd#12 ← phi( play_update_score/(word) lines_bcd#21 ) - (byte~) play_update_score::$2 ← < (word) lines_bcd#12 + (word) lines_bcd#16 ← phi( play_update_score/(word) lines_bcd#28 ) + (byte~) play_update_score::$2 ← < (word) lines_bcd#16 (byte~) play_update_score::$3 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$3 (byte~) play_update_score::$4 ← (byte) play_update_score::removed#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 (dword) play_update_score::add_bcd#0 ← *((dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) asm { sed } - (word) lines_bcd#3 ← (word) lines_bcd#12 + (byte) play_update_score::removed#2 - (dword) score_bcd#3 ← (dword) score_bcd#11 + (dword) play_update_score::add_bcd#0 + (word) lines_bcd#5 ← (word) lines_bcd#16 + (byte) play_update_score::removed#2 + (dword) score_bcd#5 ← (dword) score_bcd#15 + (dword) play_update_score::add_bcd#0 asm { cld } - (byte~) play_update_score::$5 ← < (word) lines_bcd#3 + (byte~) play_update_score::$5 ← < (word) lines_bcd#5 (byte~) play_update_score::$6 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$6 (bool~) play_update_score::$7 ← (byte) play_update_score::lines_before#0 != (byte) play_update_score::lines_after#0 @@ -2500,87 +2752,87 @@ play_update_score::@3: scope:[play_update_score] from play_update_score if((bool~) play_update_score::$8) goto play_update_score::@2 to:play_update_score::@4 play_update_score::@2: scope:[play_update_score] from play_update_score::@3 - (byte) level_bcd#28 ← phi( play_update_score::@3/(byte) level_bcd#41 ) - (byte) current_movedown_slow#34 ← phi( play_update_score::@3/(byte) current_movedown_slow#47 ) - (byte) level#27 ← phi( play_update_score::@3/(byte) level#38 ) - (dword) score_bcd#23 ← phi( play_update_score::@3/(dword) score_bcd#3 ) - (word) lines_bcd#23 ← phi( play_update_score::@3/(word) lines_bcd#3 ) + (byte) level_bcd#35 ← phi( play_update_score::@3/(byte) level_bcd#49 ) + (byte) current_movedown_slow#41 ← phi( play_update_score::@3/(byte) current_movedown_slow#55 ) + (byte) level#34 ← phi( play_update_score::@3/(byte) level#46 ) + (dword) score_bcd#30 ← phi( play_update_score::@3/(dword) score_bcd#5 ) + (word) lines_bcd#30 ← phi( play_update_score::@3/(word) lines_bcd#5 ) to:play_update_score::@return play_update_score::@4: scope:[play_update_score] from play_update_score::@3 - (dword) score_bcd#33 ← phi( play_update_score::@3/(dword) score_bcd#3 ) - (word) lines_bcd#33 ← phi( play_update_score::@3/(word) lines_bcd#3 ) - (byte) level_bcd#26 ← phi( play_update_score::@3/(byte) level_bcd#41 ) - (byte) current_movedown_slow#32 ← phi( play_update_score::@3/(byte) current_movedown_slow#47 ) - (byte) level#25 ← phi( play_update_score::@3/(byte) level#38 ) + (dword) score_bcd#41 ← phi( play_update_score::@3/(dword) score_bcd#5 ) + (word) lines_bcd#41 ← phi( play_update_score::@3/(word) lines_bcd#5 ) + (byte) level_bcd#33 ← phi( play_update_score::@3/(byte) level_bcd#49 ) + (byte) current_movedown_slow#39 ← phi( play_update_score::@3/(byte) current_movedown_slow#55 ) + (byte) level#32 ← phi( play_update_score::@3/(byte) level#46 ) call play_increase_level to:play_update_score::@5 play_update_score::@5: scope:[play_update_score] from play_update_score::@4 - (dword) score_bcd#24 ← phi( play_update_score::@4/(dword) score_bcd#33 ) - (word) lines_bcd#24 ← phi( play_update_score::@4/(word) lines_bcd#33 ) - (byte) level_bcd#14 ← phi( play_update_score::@4/(byte) level_bcd#7 ) - (byte) current_movedown_slow#18 ← phi( play_update_score::@4/(byte) current_movedown_slow#9 ) - (byte) level#13 ← phi( play_update_score::@4/(byte) level#6 ) - (byte) level#3 ← (byte) level#13 - (byte) current_movedown_slow#5 ← (byte) current_movedown_slow#18 - (byte) level_bcd#3 ← (byte) level_bcd#14 + (dword) score_bcd#31 ← phi( play_update_score::@4/(dword) score_bcd#41 ) + (word) lines_bcd#31 ← phi( play_update_score::@4/(word) lines_bcd#41 ) + (byte) level_bcd#18 ← phi( play_update_score::@4/(byte) level_bcd#9 ) + (byte) current_movedown_slow#22 ← phi( play_update_score::@4/(byte) current_movedown_slow#11 ) + (byte) level#17 ← phi( play_update_score::@4/(byte) level#8 ) + (byte) level#5 ← (byte) level#17 + (byte) current_movedown_slow#7 ← (byte) current_movedown_slow#22 + (byte) level_bcd#5 ← (byte) level_bcd#18 to:play_update_score::@return play_update_score::@return: scope:[play_update_score] from play_update_score::@1 play_update_score::@2 play_update_score::@5 - (byte) level_bcd#15 ← phi( play_update_score::@1/(byte) level_bcd#27 play_update_score::@2/(byte) level_bcd#28 play_update_score::@5/(byte) level_bcd#3 ) - (byte) current_movedown_slow#19 ← phi( play_update_score::@1/(byte) current_movedown_slow#33 play_update_score::@2/(byte) current_movedown_slow#34 play_update_score::@5/(byte) current_movedown_slow#5 ) - (byte) level#14 ← phi( play_update_score::@1/(byte) level#26 play_update_score::@2/(byte) level#27 play_update_score::@5/(byte) level#3 ) - (dword) score_bcd#12 ← phi( play_update_score::@1/(dword) score_bcd#22 play_update_score::@2/(dword) score_bcd#23 play_update_score::@5/(dword) score_bcd#24 ) - (word) lines_bcd#13 ← phi( play_update_score::@1/(word) lines_bcd#22 play_update_score::@2/(word) lines_bcd#23 play_update_score::@5/(word) lines_bcd#24 ) - (word) lines_bcd#4 ← (word) lines_bcd#13 - (dword) score_bcd#4 ← (dword) score_bcd#12 - (byte) level#4 ← (byte) level#14 - (byte) current_movedown_slow#6 ← (byte) current_movedown_slow#19 - (byte) level_bcd#4 ← (byte) level_bcd#15 + (byte) level_bcd#19 ← phi( play_update_score::@1/(byte) level_bcd#34 play_update_score::@2/(byte) level_bcd#35 play_update_score::@5/(byte) level_bcd#5 ) + (byte) current_movedown_slow#23 ← phi( play_update_score::@1/(byte) current_movedown_slow#40 play_update_score::@2/(byte) current_movedown_slow#41 play_update_score::@5/(byte) current_movedown_slow#7 ) + (byte) level#18 ← phi( play_update_score::@1/(byte) level#33 play_update_score::@2/(byte) level#34 play_update_score::@5/(byte) level#5 ) + (dword) score_bcd#16 ← phi( play_update_score::@1/(dword) score_bcd#29 play_update_score::@2/(dword) score_bcd#30 play_update_score::@5/(dword) score_bcd#31 ) + (word) lines_bcd#17 ← phi( play_update_score::@1/(word) lines_bcd#29 play_update_score::@2/(word) lines_bcd#30 play_update_score::@5/(word) lines_bcd#31 ) + (word) lines_bcd#6 ← (word) lines_bcd#17 + (dword) score_bcd#6 ← (dword) score_bcd#16 + (byte) level#6 ← (byte) level#18 + (byte) current_movedown_slow#8 ← (byte) current_movedown_slow#23 + (byte) level_bcd#6 ← (byte) level_bcd#19 return to:@return play_increase_level: scope:[play_increase_level] from play_update_score::@4 - (byte) level_bcd#42 ← phi( play_update_score::@4/(byte) level_bcd#26 ) - (byte) level#15 ← phi( play_update_score::@4/(byte) level#25 ) - (byte) level#5 ← ++ (byte) level#15 - (bool~) play_increase_level::$0 ← (byte) level#5 > (byte/signed byte/word/signed word/dword/signed dword) 29 + (byte) level_bcd#50 ← phi( play_update_score::@4/(byte) level_bcd#33 ) + (byte) level#19 ← phi( play_update_score::@4/(byte) level#32 ) + (byte) level#7 ← ++ (byte) level#19 + (bool~) play_increase_level::$0 ← (byte) level#7 > (byte/signed byte/word/signed word/dword/signed dword) 29 if((bool~) play_increase_level::$0) goto play_increase_level::@1 to:play_increase_level::@5 play_increase_level::@1: scope:[play_increase_level] from play_increase_level - (byte) level#71 ← phi( play_increase_level/(byte) level#5 ) - (byte) level_bcd#29 ← phi( play_increase_level/(byte) level_bcd#42 ) - (byte) current_movedown_slow#7 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) level#79 ← phi( play_increase_level/(byte) level#7 ) + (byte) level_bcd#36 ← phi( play_increase_level/(byte) level_bcd#50 ) + (byte) current_movedown_slow#9 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_increase_level::@2 play_increase_level::@5: scope:[play_increase_level] from play_increase_level - (byte) level_bcd#30 ← phi( play_increase_level/(byte) level_bcd#42 ) - (byte) level#16 ← phi( play_increase_level/(byte) level#5 ) - (byte) current_movedown_slow#8 ← *((byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#16) + (byte) level_bcd#37 ← phi( play_increase_level/(byte) level_bcd#50 ) + (byte) level#20 ← phi( play_increase_level/(byte) level#7 ) + (byte) current_movedown_slow#10 ← *((byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#20) to:play_increase_level::@2 play_increase_level::@2: scope:[play_increase_level] from play_increase_level::@1 play_increase_level::@5 - (byte) current_movedown_slow#67 ← phi( play_increase_level::@1/(byte) current_movedown_slow#7 play_increase_level::@5/(byte) current_movedown_slow#8 ) - (byte) level#61 ← phi( play_increase_level::@1/(byte) level#71 play_increase_level::@5/(byte) level#16 ) - (byte) level_bcd#16 ← phi( play_increase_level::@1/(byte) level_bcd#29 play_increase_level::@5/(byte) level_bcd#30 ) - (byte) level_bcd#5 ← ++ (byte) level_bcd#16 - (byte~) play_increase_level::$1 ← (byte) level_bcd#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte) current_movedown_slow#75 ← phi( play_increase_level::@1/(byte) current_movedown_slow#9 play_increase_level::@5/(byte) current_movedown_slow#10 ) + (byte) level#69 ← phi( play_increase_level::@1/(byte) level#79 play_increase_level::@5/(byte) level#20 ) + (byte) level_bcd#20 ← phi( play_increase_level::@1/(byte) level_bcd#36 play_increase_level::@5/(byte) level_bcd#37 ) + (byte) level_bcd#7 ← ++ (byte) level_bcd#20 + (byte~) play_increase_level::$1 ← (byte) level_bcd#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 (bool~) play_increase_level::$2 ← (byte~) play_increase_level::$1 == (byte/signed byte/word/signed word/dword/signed dword) 10 (bool~) play_increase_level::$3 ← ! (bool~) play_increase_level::$2 if((bool~) play_increase_level::$3) goto play_increase_level::@3 to:play_increase_level::@7 play_increase_level::@3: scope:[play_increase_level] from play_increase_level::@2 play_increase_level::@7 - (byte) level_bcd#55 ← phi( play_increase_level::@2/(byte) level_bcd#5 play_increase_level::@7/(byte) level_bcd#6 ) - (byte) current_movedown_slow#60 ← phi( play_increase_level::@2/(byte) current_movedown_slow#67 play_increase_level::@7/(byte) current_movedown_slow#68 ) - (byte) level#51 ← phi( play_increase_level::@2/(byte) level#61 play_increase_level::@7/(byte) level#62 ) + (byte) level_bcd#63 ← phi( play_increase_level::@2/(byte) level_bcd#7 play_increase_level::@7/(byte) level_bcd#8 ) + (byte) current_movedown_slow#68 ← phi( play_increase_level::@2/(byte) current_movedown_slow#75 play_increase_level::@7/(byte) current_movedown_slow#76 ) + (byte) level#59 ← phi( play_increase_level::@2/(byte) level#69 play_increase_level::@7/(byte) level#70 ) asm { sed } (byte) play_increase_level::b#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_increase_level::@4 play_increase_level::@7: scope:[play_increase_level] from play_increase_level::@2 - (byte) current_movedown_slow#68 ← phi( play_increase_level::@2/(byte) current_movedown_slow#67 ) - (byte) level#62 ← phi( play_increase_level::@2/(byte) level#61 ) - (byte) level_bcd#17 ← phi( play_increase_level::@2/(byte) level_bcd#5 ) - (byte) level_bcd#6 ← (byte) level_bcd#17 + (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) current_movedown_slow#76 ← phi( play_increase_level::@2/(byte) current_movedown_slow#75 ) + (byte) level#70 ← phi( play_increase_level::@2/(byte) level#69 ) + (byte) level_bcd#21 ← phi( play_increase_level::@2/(byte) level_bcd#7 ) + (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 to:play_increase_level::@3 play_increase_level::@4: scope:[play_increase_level] from play_increase_level::@3 play_increase_level::@4 - (byte) level_bcd#43 ← phi( play_increase_level::@3/(byte) level_bcd#55 play_increase_level::@4/(byte) level_bcd#43 ) - (byte) current_movedown_slow#48 ← phi( play_increase_level::@3/(byte) current_movedown_slow#60 play_increase_level::@4/(byte) current_movedown_slow#48 ) - (byte) level#39 ← phi( play_increase_level::@3/(byte) level#51 play_increase_level::@4/(byte) level#39 ) + (byte) level_bcd#51 ← phi( play_increase_level::@3/(byte) level_bcd#63 play_increase_level::@4/(byte) level_bcd#51 ) + (byte) current_movedown_slow#56 ← phi( play_increase_level::@3/(byte) current_movedown_slow#68 play_increase_level::@4/(byte) current_movedown_slow#56 ) + (byte) level#47 ← phi( play_increase_level::@3/(byte) level#59 play_increase_level::@4/(byte) level#47 ) (byte) play_increase_level::b#2 ← phi( play_increase_level::@3/(byte) play_increase_level::b#0 play_increase_level::@4/(byte) play_increase_level::b#1 ) (byte~) play_increase_level::$4 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) play_increase_level::b4#0 ← (byte~) play_increase_level::$4 @@ -2590,730 +2842,797 @@ play_increase_level::@4: scope:[play_increase_level] from play_increase_level:: if((bool~) play_increase_level::$5) goto play_increase_level::@4 to:play_increase_level::@8 play_increase_level::@8: scope:[play_increase_level] from play_increase_level::@4 - (byte) level_bcd#31 ← phi( play_increase_level::@4/(byte) level_bcd#43 ) - (byte) current_movedown_slow#35 ← phi( play_increase_level::@4/(byte) current_movedown_slow#48 ) - (byte) level#28 ← phi( play_increase_level::@4/(byte) level#39 ) + (byte) level_bcd#38 ← phi( play_increase_level::@4/(byte) level_bcd#51 ) + (byte) current_movedown_slow#42 ← phi( play_increase_level::@4/(byte) current_movedown_slow#56 ) + (byte) level#35 ← phi( play_increase_level::@4/(byte) level#47 ) asm { cld } to:play_increase_level::@return play_increase_level::@return: scope:[play_increase_level] from play_increase_level::@8 - (byte) level_bcd#18 ← phi( play_increase_level::@8/(byte) level_bcd#31 ) - (byte) current_movedown_slow#20 ← phi( play_increase_level::@8/(byte) current_movedown_slow#35 ) - (byte) level#17 ← phi( play_increase_level::@8/(byte) level#28 ) - (byte) level#6 ← (byte) level#17 - (byte) current_movedown_slow#9 ← (byte) current_movedown_slow#20 - (byte) level_bcd#7 ← (byte) level_bcd#18 + (byte) level_bcd#22 ← phi( play_increase_level::@8/(byte) level_bcd#38 ) + (byte) current_movedown_slow#24 ← phi( play_increase_level::@8/(byte) current_movedown_slow#42 ) + (byte) level#21 ← phi( play_increase_level::@8/(byte) level#35 ) + (byte) level#8 ← (byte) level#21 + (byte) current_movedown_slow#11 ← (byte) current_movedown_slow#24 + (byte) level_bcd#9 ← (byte) level_bcd#22 return to:@return -main: scope:[main] from @36 - (byte) level_bcd#92 ← phi( @36/(byte) level_bcd#34 ) - (dword) score_bcd#75 ← phi( @36/(dword) score_bcd#27 ) - (word) lines_bcd#79 ← phi( @36/(word) lines_bcd#27 ) - (byte) current_movedown_counter#48 ← phi( @36/(byte) current_movedown_counter#20 ) - (byte) keyboard_modifiers#60 ← phi( @36/(byte) keyboard_modifiers#25 ) - (byte) keyboard_events_size#79 ← phi( @36/(byte) keyboard_events_size#28 ) - (byte) render_screen_showing#45 ← phi( @36/(byte) render_screen_showing#14 ) - (byte) level#84 ← phi( @36/(byte) level#31 ) - (byte) current_piece_char#76 ← phi( @36/(byte) current_piece_char#25 ) - (byte) current_ypos#73 ← phi( @36/(byte) current_ypos#38 ) - (byte) current_xpos#99 ← phi( @36/(byte) current_xpos#46 ) - (byte*) current_piece_gfx#89 ← phi( @36/(byte*) current_piece_gfx#35 ) - (byte) current_orientation#73 ← phi( @36/(byte) current_orientation#40 ) - (byte*) current_piece#69 ← phi( @36/(byte*) current_piece#29 ) - (byte) current_movedown_slow#74 ← phi( @36/(byte) current_movedown_slow#39 ) - (byte) render_screen_render#32 ← phi( @36/(byte) render_screen_render#26 ) - (byte) render_screen_show#27 ← phi( @36/(byte) render_screen_show#24 ) +main: scope:[main] from @37 + (byte) level_bcd#103 ← phi( @37/(byte) level_bcd#41 ) + (dword) score_bcd#86 ← phi( @37/(dword) score_bcd#34 ) + (word) lines_bcd#90 ← phi( @37/(word) lines_bcd#34 ) + (byte) current_movedown_counter#59 ← phi( @37/(byte) current_movedown_counter#27 ) + (byte) keyboard_modifiers#62 ← phi( @37/(byte) keyboard_modifiers#25 ) + (byte) keyboard_events_size#81 ← phi( @37/(byte) keyboard_events_size#28 ) + (byte) render_screen_showing#47 ← phi( @37/(byte) render_screen_showing#14 ) + (byte) level#92 ← phi( @37/(byte) level#38 ) + (byte) game_over#80 ← phi( @37/(byte) game_over#32 ) + (byte) current_ypos#86 ← phi( @37/(byte) current_ypos#47 ) + (byte) current_xpos#112 ← phi( @37/(byte) current_xpos#56 ) + (byte*) current_piece_gfx#102 ← phi( @37/(byte*) current_piece_gfx#43 ) + (byte) current_orientation#85 ← phi( @37/(byte) current_orientation#48 ) + (byte) current_piece_char#89 ← phi( @37/(byte) current_piece_char#34 ) + (byte*) current_piece#81 ← phi( @37/(byte*) current_piece#38 ) + (byte) current_movedown_slow#82 ← phi( @37/(byte) current_movedown_slow#46 ) + (byte) render_screen_render#32 ← phi( @37/(byte) render_screen_render#26 ) + (byte) render_screen_show#28 ← phi( @37/(byte) render_screen_show#25 ) call sid_rnd_init - to:main::@15 -main::@15: scope:[main] from main - (byte) level_bcd#91 ← phi( main/(byte) level_bcd#92 ) - (dword) score_bcd#74 ← phi( main/(dword) score_bcd#75 ) - (word) lines_bcd#78 ← phi( main/(word) lines_bcd#79 ) - (byte) current_movedown_counter#47 ← phi( main/(byte) current_movedown_counter#48 ) - (byte) keyboard_modifiers#58 ← phi( main/(byte) keyboard_modifiers#60 ) - (byte) keyboard_events_size#77 ← phi( main/(byte) keyboard_events_size#79 ) - (byte) render_screen_showing#44 ← phi( main/(byte) render_screen_showing#45 ) - (byte) level#79 ← phi( main/(byte) level#84 ) - (byte) current_piece_char#69 ← phi( main/(byte) current_piece_char#76 ) - (byte) current_ypos#70 ← phi( main/(byte) current_ypos#73 ) - (byte) current_xpos#96 ← phi( main/(byte) current_xpos#99 ) - (byte*) current_piece_gfx#83 ← phi( main/(byte*) current_piece_gfx#89 ) - (byte) current_orientation#70 ← phi( main/(byte) current_orientation#73 ) - (byte*) current_piece#64 ← phi( main/(byte*) current_piece#69 ) - (byte) current_movedown_slow#69 ← phi( main/(byte) current_movedown_slow#74 ) + to:main::@25 +main::@25: scope:[main] from main + (byte) level_bcd#102 ← phi( main/(byte) level_bcd#103 ) + (dword) score_bcd#85 ← phi( main/(dword) score_bcd#86 ) + (word) lines_bcd#89 ← phi( main/(word) lines_bcd#90 ) + (byte) current_movedown_counter#58 ← phi( main/(byte) current_movedown_counter#59 ) + (byte) keyboard_modifiers#60 ← phi( main/(byte) keyboard_modifiers#62 ) + (byte) keyboard_events_size#79 ← phi( main/(byte) keyboard_events_size#81 ) + (byte) render_screen_showing#46 ← phi( main/(byte) render_screen_showing#47 ) + (byte) level#88 ← phi( main/(byte) level#92 ) + (byte) game_over#71 ← phi( main/(byte) game_over#80 ) + (byte) current_ypos#81 ← phi( main/(byte) current_ypos#86 ) + (byte) current_xpos#107 ← phi( main/(byte) current_xpos#112 ) + (byte*) current_piece_gfx#94 ← phi( main/(byte*) current_piece_gfx#102 ) + (byte) current_orientation#81 ← phi( main/(byte) current_orientation#85 ) + (byte) current_piece_char#80 ← phi( main/(byte) current_piece_char#89 ) + (byte*) current_piece#75 ← phi( main/(byte*) current_piece#81 ) + (byte) current_movedown_slow#77 ← phi( main/(byte) current_movedown_slow#82 ) (byte) render_screen_render#24 ← phi( main/(byte) render_screen_render#32 ) - (byte) render_screen_show#22 ← phi( main/(byte) render_screen_show#27 ) + (byte) render_screen_show#22 ← phi( main/(byte) render_screen_show#28 ) asm { sei } call render_init - to:main::@16 -main::@16: scope:[main] from main::@15 - (byte) level_bcd#90 ← phi( main::@15/(byte) level_bcd#91 ) - (dword) score_bcd#73 ← phi( main::@15/(dword) score_bcd#74 ) - (word) lines_bcd#77 ← phi( main::@15/(word) lines_bcd#78 ) - (byte) current_movedown_counter#46 ← phi( main::@15/(byte) current_movedown_counter#47 ) - (byte) keyboard_modifiers#56 ← phi( main::@15/(byte) keyboard_modifiers#58 ) - (byte) keyboard_events_size#74 ← phi( main::@15/(byte) keyboard_events_size#77 ) - (byte) render_screen_showing#43 ← phi( main::@15/(byte) render_screen_showing#44 ) - (byte) level#72 ← phi( main::@15/(byte) level#79 ) - (byte) current_piece_char#60 ← phi( main::@15/(byte) current_piece_char#69 ) - (byte) current_ypos#64 ← phi( main::@15/(byte) current_ypos#70 ) - (byte) current_xpos#88 ← phi( main::@15/(byte) current_xpos#96 ) - (byte*) current_piece_gfx#77 ← phi( main::@15/(byte*) current_piece_gfx#83 ) - (byte) current_orientation#65 ← phi( main::@15/(byte) current_orientation#70 ) - (byte*) current_piece#59 ← phi( main::@15/(byte*) current_piece#64 ) - (byte) current_movedown_slow#61 ← phi( main::@15/(byte) current_movedown_slow#69 ) - (byte) render_screen_render#15 ← phi( main::@15/(byte) render_screen_render#2 ) - (byte) render_screen_show#14 ← phi( main::@15/(byte) render_screen_show#2 ) + to:main::@26 +main::@26: scope:[main] from main::@25 + (byte) level_bcd#101 ← phi( main::@25/(byte) level_bcd#102 ) + (dword) score_bcd#84 ← phi( main::@25/(dword) score_bcd#85 ) + (word) lines_bcd#88 ← phi( main::@25/(word) lines_bcd#89 ) + (byte) current_movedown_counter#57 ← phi( main::@25/(byte) current_movedown_counter#58 ) + (byte) keyboard_modifiers#58 ← phi( main::@25/(byte) keyboard_modifiers#60 ) + (byte) keyboard_events_size#76 ← phi( main::@25/(byte) keyboard_events_size#79 ) + (byte) render_screen_showing#45 ← phi( main::@25/(byte) render_screen_showing#46 ) + (byte) level#80 ← phi( main::@25/(byte) level#88 ) + (byte) game_over#62 ← phi( main::@25/(byte) game_over#71 ) + (byte) current_ypos#74 ← phi( main::@25/(byte) current_ypos#81 ) + (byte) current_xpos#98 ← phi( main::@25/(byte) current_xpos#107 ) + (byte*) current_piece_gfx#87 ← phi( main::@25/(byte*) current_piece_gfx#94 ) + (byte) current_orientation#75 ← phi( main::@25/(byte) current_orientation#81 ) + (byte) current_piece_char#71 ← phi( main::@25/(byte) current_piece_char#80 ) + (byte*) current_piece#69 ← phi( main::@25/(byte*) current_piece#75 ) + (byte) current_movedown_slow#69 ← phi( main::@25/(byte) current_movedown_slow#77 ) + (byte) render_screen_render#15 ← phi( main::@25/(byte) render_screen_render#2 ) + (byte) render_screen_show#14 ← phi( main::@25/(byte) render_screen_show#2 ) (byte) render_screen_show#5 ← (byte) render_screen_show#14 (byte) render_screen_render#5 ← (byte) render_screen_render#15 call sprites_init - to:main::@17 -main::@17: scope:[main] from main::@16 - (byte) level_bcd#88 ← phi( main::@16/(byte) level_bcd#90 ) - (dword) score_bcd#71 ← phi( main::@16/(dword) score_bcd#73 ) - (word) lines_bcd#75 ← phi( main::@16/(word) lines_bcd#77 ) - (byte) current_movedown_counter#45 ← phi( main::@16/(byte) current_movedown_counter#46 ) - (byte) keyboard_modifiers#54 ← phi( main::@16/(byte) keyboard_modifiers#56 ) - (byte) keyboard_events_size#70 ← phi( main::@16/(byte) keyboard_events_size#74 ) - (byte) render_screen_showing#40 ← phi( main::@16/(byte) render_screen_showing#43 ) - (byte) render_screen_show#54 ← phi( main::@16/(byte) render_screen_show#5 ) - (byte) render_screen_render#51 ← phi( main::@16/(byte) render_screen_render#5 ) - (byte) level#63 ← phi( main::@16/(byte) level#72 ) - (byte) current_piece_char#47 ← phi( main::@16/(byte) current_piece_char#60 ) - (byte) current_ypos#57 ← phi( main::@16/(byte) current_ypos#64 ) - (byte) current_xpos#78 ← phi( main::@16/(byte) current_xpos#88 ) - (byte*) current_piece_gfx#64 ← phi( main::@16/(byte*) current_piece_gfx#77 ) - (byte) current_orientation#58 ← phi( main::@16/(byte) current_orientation#65 ) - (byte*) current_piece#49 ← phi( main::@16/(byte*) current_piece#59 ) - (byte) current_movedown_slow#49 ← phi( main::@16/(byte) current_movedown_slow#61 ) + to:main::@27 +main::@27: scope:[main] from main::@26 + (byte) level_bcd#96 ← phi( main::@26/(byte) level_bcd#101 ) + (dword) score_bcd#80 ← phi( main::@26/(dword) score_bcd#84 ) + (word) lines_bcd#83 ← phi( main::@26/(word) lines_bcd#88 ) + (byte) current_movedown_counter#53 ← phi( main::@26/(byte) current_movedown_counter#57 ) + (byte) keyboard_modifiers#55 ← phi( main::@26/(byte) keyboard_modifiers#58 ) + (byte) keyboard_events_size#71 ← phi( main::@26/(byte) keyboard_events_size#76 ) + (byte) render_screen_showing#42 ← phi( main::@26/(byte) render_screen_showing#45 ) + (byte) render_screen_show#57 ← phi( main::@26/(byte) render_screen_show#5 ) + (byte) render_screen_render#52 ← phi( main::@26/(byte) render_screen_render#5 ) + (byte) level#71 ← phi( main::@26/(byte) level#80 ) + (byte) game_over#50 ← phi( main::@26/(byte) game_over#62 ) + (byte) current_ypos#67 ← phi( main::@26/(byte) current_ypos#74 ) + (byte) current_xpos#88 ← phi( main::@26/(byte) current_xpos#98 ) + (byte*) current_piece_gfx#73 ← phi( main::@26/(byte*) current_piece_gfx#87 ) + (byte) current_orientation#67 ← phi( main::@26/(byte) current_orientation#75 ) + (byte) current_piece_char#58 ← phi( main::@26/(byte) current_piece_char#71 ) + (byte*) current_piece#60 ← phi( main::@26/(byte*) current_piece#69 ) + (byte) current_movedown_slow#57 ← phi( main::@26/(byte) current_movedown_slow#69 ) call sprites_irq_init - to:main::@18 -main::@18: scope:[main] from main::@17 - (byte) level_bcd#82 ← phi( main::@17/(byte) level_bcd#88 ) - (dword) score_bcd#67 ← phi( main::@17/(dword) score_bcd#71 ) - (word) lines_bcd#70 ← phi( main::@17/(word) lines_bcd#75 ) - (byte) current_movedown_counter#41 ← phi( main::@17/(byte) current_movedown_counter#45 ) - (byte) keyboard_modifiers#50 ← phi( main::@17/(byte) keyboard_modifiers#54 ) - (byte) keyboard_events_size#66 ← phi( main::@17/(byte) keyboard_events_size#70 ) - (byte) render_screen_showing#36 ← phi( main::@17/(byte) render_screen_showing#40 ) - (byte) render_screen_show#51 ← phi( main::@17/(byte) render_screen_show#54 ) - (byte) render_screen_render#47 ← phi( main::@17/(byte) render_screen_render#51 ) - (byte) level#45 ← phi( main::@17/(byte) level#63 ) - (byte) current_piece_char#32 ← phi( main::@17/(byte) current_piece_char#47 ) - (byte) current_ypos#44 ← phi( main::@17/(byte) current_ypos#57 ) - (byte) current_xpos#60 ← phi( main::@17/(byte) current_xpos#78 ) - (byte*) current_piece_gfx#47 ← phi( main::@17/(byte*) current_piece_gfx#64 ) - (byte) current_orientation#46 ← phi( main::@17/(byte) current_orientation#58 ) - (byte*) current_piece#37 ← phi( main::@17/(byte*) current_piece#49 ) - (byte) current_movedown_slow#36 ← phi( main::@17/(byte) current_movedown_slow#49 ) + to:main::@28 +main::@28: scope:[main] from main::@27 + (byte) level_bcd#91 ← phi( main::@27/(byte) level_bcd#96 ) + (dword) score_bcd#77 ← phi( main::@27/(dword) score_bcd#80 ) + (word) lines_bcd#79 ← phi( main::@27/(word) lines_bcd#83 ) + (byte) current_movedown_counter#50 ← phi( main::@27/(byte) current_movedown_counter#53 ) + (byte) keyboard_modifiers#52 ← phi( main::@27/(byte) keyboard_modifiers#55 ) + (byte) keyboard_events_size#67 ← phi( main::@27/(byte) keyboard_events_size#71 ) + (byte) render_screen_showing#38 ← phi( main::@27/(byte) render_screen_showing#42 ) + (byte) render_screen_show#54 ← phi( main::@27/(byte) render_screen_show#57 ) + (byte) render_screen_render#47 ← phi( main::@27/(byte) render_screen_render#52 ) + (byte) level#52 ← phi( main::@27/(byte) level#71 ) + (byte) game_over#38 ← phi( main::@27/(byte) game_over#50 ) + (byte) current_ypos#56 ← phi( main::@27/(byte) current_ypos#67 ) + (byte) current_xpos#71 ← phi( main::@27/(byte) current_xpos#88 ) + (byte*) current_piece_gfx#57 ← phi( main::@27/(byte*) current_piece_gfx#73 ) + (byte) current_orientation#56 ← phi( main::@27/(byte) current_orientation#67 ) + (byte) current_piece_char#43 ← phi( main::@27/(byte) current_piece_char#58 ) + (byte*) current_piece#48 ← phi( main::@27/(byte*) current_piece#60 ) + (byte) current_movedown_slow#43 ← phi( main::@27/(byte) current_movedown_slow#57 ) call play_init - to:main::@19 -main::@19: scope:[main] from main::@18 - (byte) level_bcd#74 ← phi( main::@18/(byte) level_bcd#82 ) - (byte) level#73 ← phi( main::@18/(byte) level#45 ) - (dword) score_bcd#61 ← phi( main::@18/(dword) score_bcd#67 ) - (word) lines_bcd#64 ← phi( main::@18/(word) lines_bcd#70 ) - (byte) current_movedown_counter#38 ← phi( main::@18/(byte) current_movedown_counter#41 ) - (byte) keyboard_modifiers#46 ← phi( main::@18/(byte) keyboard_modifiers#50 ) - (byte) keyboard_events_size#58 ← phi( main::@18/(byte) keyboard_events_size#66 ) - (byte) render_screen_showing#32 ← phi( main::@18/(byte) render_screen_showing#36 ) - (byte) render_screen_show#48 ← phi( main::@18/(byte) render_screen_show#51 ) - (byte) render_screen_render#41 ← phi( main::@18/(byte) render_screen_render#47 ) - (byte) current_piece_char#22 ← phi( main::@18/(byte) current_piece_char#32 ) - (byte) current_ypos#35 ← phi( main::@18/(byte) current_ypos#44 ) - (byte) current_xpos#43 ← phi( main::@18/(byte) current_xpos#60 ) - (byte*) current_piece_gfx#31 ← phi( main::@18/(byte*) current_piece_gfx#47 ) - (byte) current_orientation#36 ← phi( main::@18/(byte) current_orientation#46 ) - (byte*) current_piece#26 ← phi( main::@18/(byte*) current_piece#37 ) - (byte) current_movedown_slow#21 ← phi( main::@18/(byte) current_movedown_slow#2 ) - (byte) current_movedown_slow#10 ← (byte) current_movedown_slow#21 + to:main::@29 +main::@29: scope:[main] from main::@28 + (byte) level_bcd#82 ← phi( main::@28/(byte) level_bcd#91 ) + (byte) level#81 ← phi( main::@28/(byte) level#52 ) + (dword) score_bcd#70 ← phi( main::@28/(dword) score_bcd#77 ) + (word) lines_bcd#72 ← phi( main::@28/(word) lines_bcd#79 ) + (byte) current_movedown_counter#46 ← phi( main::@28/(byte) current_movedown_counter#50 ) + (byte) keyboard_modifiers#46 ← phi( main::@28/(byte) keyboard_modifiers#52 ) + (byte) keyboard_events_size#58 ← phi( main::@28/(byte) keyboard_events_size#67 ) + (byte) render_screen_showing#32 ← phi( main::@28/(byte) render_screen_showing#38 ) + (byte) render_screen_show#49 ← phi( main::@28/(byte) render_screen_show#54 ) + (byte) render_screen_render#41 ← phi( main::@28/(byte) render_screen_render#47 ) + (byte) game_over#28 ← phi( main::@28/(byte) game_over#38 ) + (byte) current_ypos#44 ← phi( main::@28/(byte) current_ypos#56 ) + (byte) current_xpos#53 ← phi( main::@28/(byte) current_xpos#71 ) + (byte*) current_piece_gfx#40 ← phi( main::@28/(byte*) current_piece_gfx#57 ) + (byte) current_orientation#45 ← phi( main::@28/(byte) current_orientation#56 ) + (byte) current_piece_char#31 ← phi( main::@28/(byte) current_piece_char#43 ) + (byte*) current_piece#35 ← phi( main::@28/(byte*) current_piece#48 ) + (byte) current_movedown_slow#25 ← phi( main::@28/(byte) current_movedown_slow#2 ) + (byte) current_movedown_slow#12 ← (byte) current_movedown_slow#25 call play_spawn_current - to:main::@20 -main::@20: scope:[main] from main::@19 - (byte) level_bcd#66 ← phi( main::@19/(byte) level_bcd#74 ) - (byte) level#64 ← phi( main::@19/(byte) level#73 ) - (dword) score_bcd#54 ← phi( main::@19/(dword) score_bcd#61 ) - (word) lines_bcd#56 ← phi( main::@19/(word) lines_bcd#64 ) - (byte) current_movedown_counter#34 ← phi( main::@19/(byte) current_movedown_counter#38 ) - (byte) keyboard_modifiers#40 ← phi( main::@19/(byte) keyboard_modifiers#46 ) - (byte) keyboard_events_size#49 ← phi( main::@19/(byte) keyboard_events_size#58 ) - (byte) render_screen_showing#28 ← phi( main::@19/(byte) render_screen_showing#32 ) - (byte) current_movedown_slow#70 ← phi( main::@19/(byte) current_movedown_slow#10 ) - (byte) render_screen_show#44 ← phi( main::@19/(byte) render_screen_show#48 ) - (byte) render_screen_render#28 ← phi( main::@19/(byte) render_screen_render#41 ) - (byte) current_piece_char#13 ← phi( main::@19/(byte) current_piece_char#3 ) - (byte) current_ypos#19 ← phi( main::@19/(byte) current_ypos#4 ) - (byte) current_xpos#24 ← phi( main::@19/(byte) current_xpos#6 ) - (byte*) current_piece_gfx#17 ← phi( main::@19/(byte*) current_piece_gfx#5 ) - (byte) current_orientation#21 ← phi( main::@19/(byte) current_orientation#6 ) - (byte*) current_piece#14 ← phi( main::@19/(byte*) current_piece#4 ) - (byte*) current_piece#5 ← (byte*) current_piece#14 - (byte) current_orientation#7 ← (byte) current_orientation#21 - (byte*) current_piece_gfx#6 ← (byte*) current_piece_gfx#17 - (byte) current_xpos#7 ← (byte) current_xpos#24 - (byte) current_ypos#5 ← (byte) current_ypos#19 - (byte) current_piece_char#4 ← (byte) current_piece_char#13 + to:main::@30 +main::@30: scope:[main] from main::@29 + (byte) level_bcd#74 ← phi( main::@29/(byte) level_bcd#82 ) + (byte) level#72 ← phi( main::@29/(byte) level#81 ) + (dword) score_bcd#62 ← phi( main::@29/(dword) score_bcd#70 ) + (word) lines_bcd#64 ← phi( main::@29/(word) lines_bcd#72 ) + (byte) current_movedown_counter#42 ← phi( main::@29/(byte) current_movedown_counter#46 ) + (byte) keyboard_modifiers#39 ← phi( main::@29/(byte) keyboard_modifiers#46 ) + (byte) keyboard_events_size#48 ← phi( main::@29/(byte) keyboard_events_size#58 ) + (byte) render_screen_showing#27 ← phi( main::@29/(byte) render_screen_showing#32 ) + (byte) current_movedown_slow#78 ← phi( main::@29/(byte) current_movedown_slow#12 ) + (byte) render_screen_show#44 ← phi( main::@29/(byte) render_screen_show#49 ) + (byte) render_screen_render#28 ← phi( main::@29/(byte) render_screen_render#41 ) + (byte) game_over#16 ← phi( main::@29/(byte) game_over#6 ) + (byte) current_ypos#23 ← phi( main::@29/(byte) current_ypos#6 ) + (byte) current_xpos#29 ← phi( main::@29/(byte) current_xpos#9 ) + (byte*) current_piece_gfx#22 ← phi( main::@29/(byte*) current_piece_gfx#8 ) + (byte) current_orientation#26 ← phi( main::@29/(byte) current_orientation#9 ) + (byte) current_piece_char#17 ← phi( main::@29/(byte) current_piece_char#5 ) + (byte*) current_piece#18 ← phi( main::@29/(byte*) current_piece#6 ) + (byte*) current_piece#7 ← (byte*) current_piece#18 + (byte) current_piece_char#6 ← (byte) current_piece_char#17 + (byte) current_orientation#10 ← (byte) current_orientation#26 + (byte*) current_piece_gfx#9 ← (byte*) current_piece_gfx#22 + (byte) current_xpos#10 ← (byte) current_xpos#29 + (byte) current_ypos#7 ← (byte) current_ypos#23 + (byte) game_over#7 ← (byte) game_over#16 call render_playfield - to:main::@21 -main::@21: scope:[main] from main::@20 - (byte) level_bcd#56 ← phi( main::@20/(byte) level_bcd#66 ) - (byte) level#52 ← phi( main::@20/(byte) level#64 ) - (dword) score_bcd#45 ← phi( main::@20/(dword) score_bcd#54 ) - (word) lines_bcd#45 ← phi( main::@20/(word) lines_bcd#56 ) - (byte) current_movedown_counter#30 ← phi( main::@20/(byte) current_movedown_counter#34 ) - (byte) keyboard_modifiers#35 ← phi( main::@20/(byte) keyboard_modifiers#40 ) - (byte) keyboard_events_size#41 ← phi( main::@20/(byte) keyboard_events_size#49 ) - (byte) render_screen_showing#22 ← phi( main::@20/(byte) render_screen_showing#28 ) - (byte) current_piece_char#48 ← phi( main::@20/(byte) current_piece_char#4 ) - (byte*) current_piece_gfx#65 ← phi( main::@20/(byte*) current_piece_gfx#6 ) - (byte) current_orientation#59 ← phi( main::@20/(byte) current_orientation#7 ) - (byte*) current_piece#50 ← phi( main::@20/(byte*) current_piece#5 ) - (byte) current_movedown_slow#62 ← phi( main::@20/(byte) current_movedown_slow#70 ) - (byte) render_screen_show#36 ← phi( main::@20/(byte) render_screen_show#44 ) - (byte) current_xpos#66 ← phi( main::@20/(byte) current_xpos#7 ) - (byte) render_screen_render#37 ← phi( main::@20/(byte) render_screen_render#28 ) - (byte) current_ypos#23 ← phi( main::@20/(byte) current_ypos#5 ) + to:main::@31 +main::@31: scope:[main] from main::@30 + (byte) level_bcd#64 ← phi( main::@30/(byte) level_bcd#74 ) + (byte) level#60 ← phi( main::@30/(byte) level#72 ) + (dword) score_bcd#53 ← phi( main::@30/(dword) score_bcd#62 ) + (word) lines_bcd#53 ← phi( main::@30/(word) lines_bcd#64 ) + (byte) current_movedown_counter#38 ← phi( main::@30/(byte) current_movedown_counter#42 ) + (byte) keyboard_modifiers#34 ← phi( main::@30/(byte) keyboard_modifiers#39 ) + (byte) keyboard_events_size#40 ← phi( main::@30/(byte) keyboard_events_size#48 ) + (byte) render_screen_showing#21 ← phi( main::@30/(byte) render_screen_showing#27 ) + (byte) game_over#51 ← phi( main::@30/(byte) game_over#7 ) + (byte*) current_piece_gfx#74 ← phi( main::@30/(byte*) current_piece_gfx#9 ) + (byte) current_orientation#68 ← phi( main::@30/(byte) current_orientation#10 ) + (byte) current_piece_char#59 ← phi( main::@30/(byte) current_piece_char#6 ) + (byte*) current_piece#61 ← phi( main::@30/(byte*) current_piece#7 ) + (byte) current_movedown_slow#70 ← phi( main::@30/(byte) current_movedown_slow#78 ) + (byte) render_screen_show#38 ← phi( main::@30/(byte) render_screen_show#44 ) + (byte) current_xpos#76 ← phi( main::@30/(byte) current_xpos#10 ) + (byte) render_screen_render#37 ← phi( main::@30/(byte) render_screen_render#28 ) + (byte) current_ypos#27 ← phi( main::@30/(byte) current_ypos#7 ) call render_moving - to:main::@22 -main::@22: scope:[main] from main::@21 - (byte) level_bcd#44 ← phi( main::@21/(byte) level_bcd#56 ) - (byte) level#40 ← phi( main::@21/(byte) level#52 ) - (dword) score_bcd#34 ← phi( main::@21/(dword) score_bcd#45 ) - (word) lines_bcd#34 ← phi( main::@21/(word) lines_bcd#45 ) - (byte) current_movedown_counter#23 ← phi( main::@21/(byte) current_movedown_counter#30 ) - (byte) keyboard_modifiers#29 ← phi( main::@21/(byte) keyboard_modifiers#35 ) - (byte) keyboard_events_size#32 ← phi( main::@21/(byte) keyboard_events_size#41 ) - (byte) render_screen_showing#16 ← phi( main::@21/(byte) render_screen_showing#22 ) - (byte) current_piece_char#33 ← phi( main::@21/(byte) current_piece_char#48 ) - (byte) current_ypos#45 ← phi( main::@21/(byte) current_ypos#23 ) - (byte) current_xpos#61 ← phi( main::@21/(byte) current_xpos#66 ) - (byte*) current_piece_gfx#48 ← phi( main::@21/(byte*) current_piece_gfx#65 ) - (byte) current_orientation#47 ← phi( main::@21/(byte) current_orientation#59 ) - (byte*) current_piece#38 ← phi( main::@21/(byte*) current_piece#50 ) - (byte) current_movedown_slow#50 ← phi( main::@21/(byte) current_movedown_slow#62 ) - (byte) render_screen_render#33 ← phi( main::@21/(byte) render_screen_render#37 ) - (byte) render_screen_show#28 ← phi( main::@21/(byte) render_screen_show#36 ) + to:main::@32 +main::@32: scope:[main] from main::@31 + (byte) level_bcd#53 ← phi( main::@31/(byte) level_bcd#64 ) + (byte) level#49 ← phi( main::@31/(byte) level#60 ) + (dword) score_bcd#43 ← phi( main::@31/(dword) score_bcd#53 ) + (word) lines_bcd#43 ← phi( main::@31/(word) lines_bcd#53 ) + (byte) current_movedown_counter#32 ← phi( main::@31/(byte) current_movedown_counter#38 ) + (byte) keyboard_modifiers#30 ← phi( main::@31/(byte) keyboard_modifiers#34 ) + (byte) keyboard_events_size#33 ← phi( main::@31/(byte) keyboard_events_size#40 ) + (byte) render_screen_showing#17 ← phi( main::@31/(byte) render_screen_showing#21 ) + (byte) game_over#40 ← phi( main::@31/(byte) game_over#51 ) + (byte) current_ypos#58 ← phi( main::@31/(byte) current_ypos#27 ) + (byte) current_xpos#73 ← phi( main::@31/(byte) current_xpos#76 ) + (byte*) current_piece_gfx#59 ← phi( main::@31/(byte*) current_piece_gfx#74 ) + (byte) current_orientation#58 ← phi( main::@31/(byte) current_orientation#68 ) + (byte) current_piece_char#45 ← phi( main::@31/(byte) current_piece_char#59 ) + (byte*) current_piece#50 ← phi( main::@31/(byte*) current_piece#61 ) + (byte) current_movedown_slow#59 ← phi( main::@31/(byte) current_movedown_slow#70 ) + (byte) render_screen_render#34 ← phi( main::@31/(byte) render_screen_render#37 ) + (byte) render_screen_show#30 ← phi( main::@31/(byte) render_screen_show#38 ) to:main::@1 -main::@1: scope:[main] from main::@22 main::@32 main::@7 - (byte) level_bcd#33 ← phi( main::@22/(byte) level_bcd#44 main::@32/(byte) level_bcd#45 main::@7/(byte) level_bcd#46 ) - (byte) level#30 ← phi( main::@22/(byte) level#40 main::@32/(byte) level#41 main::@7/(byte) level#42 ) - (dword) score_bcd#26 ← phi( main::@22/(dword) score_bcd#34 main::@32/(dword) score_bcd#35 main::@7/(dword) score_bcd#36 ) - (word) lines_bcd#26 ← phi( main::@22/(word) lines_bcd#34 main::@32/(word) lines_bcd#35 main::@7/(word) lines_bcd#36 ) - (byte) current_movedown_counter#19 ← phi( main::@22/(byte) current_movedown_counter#23 main::@32/(byte) current_movedown_counter#24 main::@7/(byte) current_movedown_counter#25 ) - (byte) keyboard_modifiers#24 ← phi( main::@22/(byte) keyboard_modifiers#29 main::@32/(byte) keyboard_modifiers#30 main::@7/(byte) keyboard_modifiers#31 ) - (byte) keyboard_events_size#27 ← phi( main::@22/(byte) keyboard_events_size#32 main::@32/(byte) keyboard_events_size#33 main::@7/(byte) keyboard_events_size#34 ) - (byte) render_screen_showing#13 ← phi( main::@22/(byte) render_screen_showing#16 main::@32/(byte) render_screen_showing#17 main::@7/(byte) render_screen_showing#18 ) - (byte) current_piece_char#24 ← phi( main::@22/(byte) current_piece_char#33 main::@32/(byte) current_piece_char#34 main::@7/(byte) current_piece_char#35 ) - (byte) current_ypos#37 ← phi( main::@22/(byte) current_ypos#45 main::@32/(byte) current_ypos#46 main::@7/(byte) current_ypos#47 ) - (byte) current_xpos#45 ← phi( main::@22/(byte) current_xpos#61 main::@32/(byte) current_xpos#62 main::@7/(byte) current_xpos#63 ) - (byte*) current_piece_gfx#34 ← phi( main::@22/(byte*) current_piece_gfx#48 main::@32/(byte*) current_piece_gfx#49 main::@7/(byte*) current_piece_gfx#50 ) - (byte) current_orientation#39 ← phi( main::@22/(byte) current_orientation#47 main::@32/(byte) current_orientation#48 main::@7/(byte) current_orientation#49 ) - (byte*) current_piece#28 ← phi( main::@22/(byte*) current_piece#38 main::@32/(byte*) current_piece#39 main::@7/(byte*) current_piece#40 ) - (byte) current_movedown_slow#38 ← phi( main::@22/(byte) current_movedown_slow#50 main::@32/(byte) current_movedown_slow#51 main::@7/(byte) current_movedown_slow#52 ) - (byte) render_screen_render#25 ← phi( main::@22/(byte) render_screen_render#33 main::@32/(byte) render_screen_render#6 main::@7/(byte) render_screen_render#34 ) - (byte) render_screen_show#23 ← phi( main::@22/(byte) render_screen_show#28 main::@32/(byte) render_screen_show#6 main::@7/(byte) render_screen_show#29 ) +main::@1: scope:[main] from main::@12 main::@32 + (byte) level_bcd#40 ← phi( main::@12/(byte) level_bcd#52 main::@32/(byte) level_bcd#53 ) + (byte) level#37 ← phi( main::@12/(byte) level#48 main::@32/(byte) level#49 ) + (dword) score_bcd#33 ← phi( main::@12/(dword) score_bcd#42 main::@32/(dword) score_bcd#43 ) + (word) lines_bcd#33 ← phi( main::@12/(word) lines_bcd#42 main::@32/(word) lines_bcd#43 ) + (byte) current_movedown_counter#26 ← phi( main::@12/(byte) current_movedown_counter#31 main::@32/(byte) current_movedown_counter#32 ) + (byte) keyboard_modifiers#24 ← phi( main::@12/(byte) keyboard_modifiers#29 main::@32/(byte) keyboard_modifiers#30 ) + (byte) keyboard_events_size#27 ← phi( main::@12/(byte) keyboard_events_size#32 main::@32/(byte) keyboard_events_size#33 ) + (byte) render_screen_showing#13 ← phi( main::@12/(byte) render_screen_showing#16 main::@32/(byte) render_screen_showing#17 ) + (byte) game_over#31 ← phi( main::@12/(byte) game_over#39 main::@32/(byte) game_over#40 ) + (byte) current_ypos#46 ← phi( main::@12/(byte) current_ypos#57 main::@32/(byte) current_ypos#58 ) + (byte) current_xpos#55 ← phi( main::@12/(byte) current_xpos#72 main::@32/(byte) current_xpos#73 ) + (byte*) current_piece_gfx#42 ← phi( main::@12/(byte*) current_piece_gfx#58 main::@32/(byte*) current_piece_gfx#59 ) + (byte) current_orientation#47 ← phi( main::@12/(byte) current_orientation#57 main::@32/(byte) current_orientation#58 ) + (byte) current_piece_char#33 ← phi( main::@12/(byte) current_piece_char#44 main::@32/(byte) current_piece_char#45 ) + (byte*) current_piece#37 ← phi( main::@12/(byte*) current_piece#49 main::@32/(byte*) current_piece#50 ) + (byte) current_movedown_slow#45 ← phi( main::@12/(byte) current_movedown_slow#58 main::@32/(byte) current_movedown_slow#59 ) + (byte) render_screen_render#25 ← phi( main::@12/(byte) render_screen_render#33 main::@32/(byte) render_screen_render#34 ) + (byte) render_screen_show#24 ← phi( main::@12/(byte) render_screen_show#29 main::@32/(byte) render_screen_show#30 ) if(true) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (byte) render_screen_render#61 ← phi( main::@1/(byte) render_screen_render#25 ) - (byte) current_piece_char#77 ← phi( main::@1/(byte) current_piece_char#24 ) - (byte) current_xpos#100 ← phi( main::@1/(byte) current_xpos#45 ) - (byte*) current_piece_gfx#90 ← phi( main::@1/(byte*) current_piece_gfx#34 ) - (byte) current_orientation#74 ← phi( main::@1/(byte) current_orientation#39 ) - (byte*) current_piece#70 ← phi( main::@1/(byte*) current_piece#28 ) - (byte) level_bcd#83 ← phi( main::@1/(byte) level_bcd#33 ) - (byte) current_movedown_slow#77 ← phi( main::@1/(byte) current_movedown_slow#38 ) - (byte) level#80 ← phi( main::@1/(byte) level#30 ) - (dword) score_bcd#68 ← phi( main::@1/(dword) score_bcd#26 ) - (word) lines_bcd#71 ← phi( main::@1/(word) lines_bcd#26 ) - (byte) current_ypos#74 ← phi( main::@1/(byte) current_ypos#37 ) - (byte) current_movedown_counter#42 ← phi( main::@1/(byte) current_movedown_counter#19 ) - (byte) keyboard_modifiers#41 ← phi( main::@1/(byte) keyboard_modifiers#24 ) - (byte) keyboard_events_size#50 ← phi( main::@1/(byte) keyboard_events_size#27 ) - (byte) render_screen_showing#23 ← phi( main::@1/(byte) render_screen_showing#13 ) - (byte) render_screen_show#37 ← phi( main::@1/(byte) render_screen_show#23 ) + (byte) render_screen_render#63 ← phi( main::@1/(byte) render_screen_render#25 ) + (byte) current_xpos#115 ← phi( main::@1/(byte) current_xpos#55 ) + (byte*) current_piece_gfx#105 ← phi( main::@1/(byte*) current_piece_gfx#42 ) + (byte) current_orientation#88 ← phi( main::@1/(byte) current_orientation#47 ) + (byte) current_piece_char#92 ← phi( main::@1/(byte) current_piece_char#33 ) + (byte*) current_piece#84 ← phi( main::@1/(byte*) current_piece#37 ) + (byte) level_bcd#97 ← phi( main::@1/(byte) level_bcd#40 ) + (byte) current_movedown_slow#88 ← phi( main::@1/(byte) current_movedown_slow#45 ) + (byte) level#93 ← phi( main::@1/(byte) level#37 ) + (dword) score_bcd#81 ← phi( main::@1/(dword) score_bcd#33 ) + (word) lines_bcd#84 ← phi( main::@1/(word) lines_bcd#33 ) + (byte) current_ypos#89 ← phi( main::@1/(byte) current_ypos#46 ) + (byte) current_movedown_counter#54 ← phi( main::@1/(byte) current_movedown_counter#26 ) + (byte) game_over#72 ← phi( main::@1/(byte) game_over#31 ) + (byte) keyboard_modifiers#40 ← phi( main::@1/(byte) keyboard_modifiers#24 ) + (byte) keyboard_events_size#49 ← phi( main::@1/(byte) keyboard_events_size#27 ) + (byte) render_screen_showing#22 ← phi( main::@1/(byte) render_screen_showing#13 ) + (byte) render_screen_show#31 ← phi( main::@1/(byte) render_screen_show#24 ) to:main::@4 main::@4: scope:[main] from main::@2 main::@5 - (byte) render_screen_render#60 ← phi( main::@2/(byte) render_screen_render#61 main::@5/(byte) render_screen_render#62 ) - (byte) current_piece_char#70 ← phi( main::@2/(byte) current_piece_char#77 main::@5/(byte) current_piece_char#78 ) - (byte) current_xpos#97 ← phi( main::@2/(byte) current_xpos#100 main::@5/(byte) current_xpos#101 ) - (byte*) current_piece_gfx#84 ← phi( main::@2/(byte*) current_piece_gfx#90 main::@5/(byte*) current_piece_gfx#91 ) - (byte) current_orientation#71 ← phi( main::@2/(byte) current_orientation#74 main::@5/(byte) current_orientation#75 ) - (byte*) current_piece#65 ← phi( main::@2/(byte*) current_piece#70 main::@5/(byte*) current_piece#71 ) - (byte) level_bcd#75 ← phi( main::@2/(byte) level_bcd#83 main::@5/(byte) level_bcd#84 ) - (byte) current_movedown_slow#75 ← phi( main::@2/(byte) current_movedown_slow#77 main::@5/(byte) current_movedown_slow#78 ) - (byte) level#74 ← phi( main::@2/(byte) level#80 main::@5/(byte) level#81 ) - (dword) score_bcd#62 ← phi( main::@2/(dword) score_bcd#68 main::@5/(dword) score_bcd#69 ) - (word) lines_bcd#65 ← phi( main::@2/(word) lines_bcd#71 main::@5/(word) lines_bcd#72 ) - (byte) current_ypos#71 ← phi( main::@2/(byte) current_ypos#74 main::@5/(byte) current_ypos#75 ) - (byte) current_movedown_counter#39 ← phi( main::@2/(byte) current_movedown_counter#42 main::@5/(byte) current_movedown_counter#43 ) - (byte) keyboard_modifiers#36 ← phi( main::@2/(byte) keyboard_modifiers#41 main::@5/(byte) keyboard_modifiers#42 ) - (byte) keyboard_events_size#42 ← phi( main::@2/(byte) keyboard_events_size#50 main::@5/(byte) keyboard_events_size#51 ) - (byte) render_screen_showing#19 ← phi( main::@2/(byte) render_screen_showing#23 main::@5/(byte) render_screen_showing#24 ) - (byte) render_screen_show#30 ← phi( main::@2/(byte) render_screen_show#37 main::@5/(byte) render_screen_show#38 ) + (byte) render_screen_render#62 ← phi( main::@2/(byte) render_screen_render#63 main::@5/(byte) render_screen_render#64 ) + (byte) current_xpos#113 ← phi( main::@2/(byte) current_xpos#115 main::@5/(byte) current_xpos#116 ) + (byte*) current_piece_gfx#103 ← phi( main::@2/(byte*) current_piece_gfx#105 main::@5/(byte*) current_piece_gfx#106 ) + (byte) current_orientation#86 ← phi( main::@2/(byte) current_orientation#88 main::@5/(byte) current_orientation#89 ) + (byte) current_piece_char#90 ← phi( main::@2/(byte) current_piece_char#92 main::@5/(byte) current_piece_char#93 ) + (byte*) current_piece#82 ← phi( main::@2/(byte*) current_piece#84 main::@5/(byte*) current_piece#85 ) + (byte) level_bcd#92 ← phi( main::@2/(byte) level_bcd#97 main::@5/(byte) level_bcd#98 ) + (byte) current_movedown_slow#86 ← phi( main::@2/(byte) current_movedown_slow#88 main::@5/(byte) current_movedown_slow#89 ) + (byte) level#89 ← phi( main::@2/(byte) level#93 main::@5/(byte) level#94 ) + (dword) score_bcd#78 ← phi( main::@2/(dword) score_bcd#81 main::@5/(dword) score_bcd#82 ) + (word) lines_bcd#80 ← phi( main::@2/(word) lines_bcd#84 main::@5/(word) lines_bcd#85 ) + (byte) current_ypos#87 ← phi( main::@2/(byte) current_ypos#89 main::@5/(byte) current_ypos#90 ) + (byte) current_movedown_counter#51 ← phi( main::@2/(byte) current_movedown_counter#54 main::@5/(byte) current_movedown_counter#55 ) + (byte) game_over#63 ← phi( main::@2/(byte) game_over#72 main::@5/(byte) game_over#73 ) + (byte) keyboard_modifiers#35 ← phi( main::@2/(byte) keyboard_modifiers#40 main::@5/(byte) keyboard_modifiers#41 ) + (byte) keyboard_events_size#41 ← phi( main::@2/(byte) keyboard_events_size#49 main::@5/(byte) keyboard_events_size#50 ) + (byte) render_screen_showing#18 ← phi( main::@2/(byte) render_screen_showing#22 main::@5/(byte) render_screen_showing#23 ) + (byte) render_screen_show#23 ← phi( main::@2/(byte) render_screen_show#31 main::@5/(byte) render_screen_show#32 ) (bool~) main::$8 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255 if((bool~) main::$8) goto main::@5 to:main::@6 main::@5: scope:[main] from main::@4 - (byte) render_screen_render#62 ← phi( main::@4/(byte) render_screen_render#60 ) - (byte) current_piece_char#78 ← phi( main::@4/(byte) current_piece_char#70 ) - (byte) current_xpos#101 ← phi( main::@4/(byte) current_xpos#97 ) - (byte*) current_piece_gfx#91 ← phi( main::@4/(byte*) current_piece_gfx#84 ) - (byte) current_orientation#75 ← phi( main::@4/(byte) current_orientation#71 ) - (byte*) current_piece#71 ← phi( main::@4/(byte*) current_piece#65 ) - (byte) level_bcd#84 ← phi( main::@4/(byte) level_bcd#75 ) - (byte) current_movedown_slow#78 ← phi( main::@4/(byte) current_movedown_slow#75 ) - (byte) level#81 ← phi( main::@4/(byte) level#74 ) - (dword) score_bcd#69 ← phi( main::@4/(dword) score_bcd#62 ) - (word) lines_bcd#72 ← phi( main::@4/(word) lines_bcd#65 ) - (byte) current_ypos#75 ← phi( main::@4/(byte) current_ypos#71 ) - (byte) current_movedown_counter#43 ← phi( main::@4/(byte) current_movedown_counter#39 ) - (byte) keyboard_modifiers#42 ← phi( main::@4/(byte) keyboard_modifiers#36 ) - (byte) keyboard_events_size#51 ← phi( main::@4/(byte) keyboard_events_size#42 ) - (byte) render_screen_showing#24 ← phi( main::@4/(byte) render_screen_showing#19 ) - (byte) render_screen_show#38 ← phi( main::@4/(byte) render_screen_show#30 ) + (byte) render_screen_render#64 ← phi( main::@4/(byte) render_screen_render#62 ) + (byte) current_xpos#116 ← phi( main::@4/(byte) current_xpos#113 ) + (byte*) current_piece_gfx#106 ← phi( main::@4/(byte*) current_piece_gfx#103 ) + (byte) current_orientation#89 ← phi( main::@4/(byte) current_orientation#86 ) + (byte) current_piece_char#93 ← phi( main::@4/(byte) current_piece_char#90 ) + (byte*) current_piece#85 ← phi( main::@4/(byte*) current_piece#82 ) + (byte) level_bcd#98 ← phi( main::@4/(byte) level_bcd#92 ) + (byte) current_movedown_slow#89 ← phi( main::@4/(byte) current_movedown_slow#86 ) + (byte) level#94 ← phi( main::@4/(byte) level#89 ) + (dword) score_bcd#82 ← phi( main::@4/(dword) score_bcd#78 ) + (word) lines_bcd#85 ← phi( main::@4/(word) lines_bcd#80 ) + (byte) current_ypos#90 ← phi( main::@4/(byte) current_ypos#87 ) + (byte) current_movedown_counter#55 ← phi( main::@4/(byte) current_movedown_counter#51 ) + (byte) game_over#73 ← phi( main::@4/(byte) game_over#63 ) + (byte) keyboard_modifiers#41 ← phi( main::@4/(byte) keyboard_modifiers#35 ) + (byte) keyboard_events_size#50 ← phi( main::@4/(byte) keyboard_events_size#41 ) + (byte) render_screen_showing#23 ← phi( main::@4/(byte) render_screen_showing#18 ) + (byte) render_screen_show#32 ← phi( main::@4/(byte) render_screen_show#23 ) to:main::@4 main::@6: scope:[main] from main::@4 - (byte) render_screen_render#59 ← phi( main::@4/(byte) render_screen_render#60 ) - (byte) current_piece_char#61 ← phi( main::@4/(byte) current_piece_char#70 ) - (byte) current_xpos#89 ← phi( main::@4/(byte) current_xpos#97 ) - (byte*) current_piece_gfx#78 ← phi( main::@4/(byte*) current_piece_gfx#84 ) - (byte) current_orientation#66 ← phi( main::@4/(byte) current_orientation#71 ) - (byte*) current_piece#60 ← phi( main::@4/(byte*) current_piece#65 ) - (byte) level_bcd#67 ← phi( main::@4/(byte) level_bcd#75 ) - (byte) current_movedown_slow#71 ← phi( main::@4/(byte) current_movedown_slow#75 ) - (byte) level#65 ← phi( main::@4/(byte) level#74 ) - (dword) score_bcd#55 ← phi( main::@4/(dword) score_bcd#62 ) - (word) lines_bcd#57 ← phi( main::@4/(word) lines_bcd#65 ) - (byte) current_ypos#65 ← phi( main::@4/(byte) current_ypos#71 ) - (byte) current_movedown_counter#35 ← phi( main::@4/(byte) current_movedown_counter#39 ) - (byte) keyboard_modifiers#32 ← phi( main::@4/(byte) keyboard_modifiers#36 ) - (byte) keyboard_events_size#35 ← phi( main::@4/(byte) keyboard_events_size#42 ) - (byte) render_screen_showing#12 ← phi( main::@4/(byte) render_screen_showing#19 ) - (byte) render_screen_show#18 ← phi( main::@4/(byte) render_screen_show#30 ) + (byte) render_screen_render#61 ← phi( main::@4/(byte) render_screen_render#62 ) + (byte) current_xpos#108 ← phi( main::@4/(byte) current_xpos#113 ) + (byte*) current_piece_gfx#95 ← phi( main::@4/(byte*) current_piece_gfx#103 ) + (byte) current_orientation#82 ← phi( main::@4/(byte) current_orientation#86 ) + (byte) current_piece_char#81 ← phi( main::@4/(byte) current_piece_char#90 ) + (byte*) current_piece#76 ← phi( main::@4/(byte*) current_piece#82 ) + (byte) level_bcd#83 ← phi( main::@4/(byte) level_bcd#92 ) + (byte) current_movedown_slow#83 ← phi( main::@4/(byte) current_movedown_slow#86 ) + (byte) level#82 ← phi( main::@4/(byte) level#89 ) + (dword) score_bcd#71 ← phi( main::@4/(dword) score_bcd#78 ) + (word) lines_bcd#73 ← phi( main::@4/(word) lines_bcd#80 ) + (byte) current_ypos#82 ← phi( main::@4/(byte) current_ypos#87 ) + (byte) current_movedown_counter#47 ← phi( main::@4/(byte) current_movedown_counter#51 ) + (byte) game_over#52 ← phi( main::@4/(byte) game_over#63 ) + (byte) keyboard_modifiers#31 ← phi( main::@4/(byte) keyboard_modifiers#35 ) + (byte) keyboard_events_size#34 ← phi( main::@4/(byte) keyboard_events_size#41 ) + (byte) render_screen_showing#12 ← phi( main::@4/(byte) render_screen_showing#18 ) + (byte) render_screen_show#15 ← phi( main::@4/(byte) render_screen_show#23 ) + (byte~) main::$9 ← (byte) render_screen_show#15 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + *((byte*) BORDERCOL#0) ← (byte~) main::$9 call render_show - to:main::@23 -main::@23: scope:[main] from main::@6 - (byte) render_screen_render#58 ← phi( main::@6/(byte) render_screen_render#59 ) - (byte) render_screen_show#57 ← phi( main::@6/(byte) render_screen_show#18 ) - (byte) current_piece_char#49 ← phi( main::@6/(byte) current_piece_char#61 ) - (byte) current_xpos#79 ← phi( main::@6/(byte) current_xpos#89 ) - (byte*) current_piece_gfx#66 ← phi( main::@6/(byte*) current_piece_gfx#78 ) - (byte) current_orientation#60 ← phi( main::@6/(byte) current_orientation#66 ) - (byte*) current_piece#51 ← phi( main::@6/(byte*) current_piece#60 ) - (byte) level_bcd#57 ← phi( main::@6/(byte) level_bcd#67 ) - (byte) current_movedown_slow#63 ← phi( main::@6/(byte) current_movedown_slow#71 ) - (byte) level#53 ← phi( main::@6/(byte) level#65 ) - (dword) score_bcd#46 ← phi( main::@6/(dword) score_bcd#55 ) - (word) lines_bcd#46 ← phi( main::@6/(word) lines_bcd#57 ) - (byte) current_ypos#58 ← phi( main::@6/(byte) current_ypos#65 ) - (byte) current_movedown_counter#31 ← phi( main::@6/(byte) current_movedown_counter#35 ) - (byte) keyboard_modifiers#23 ← phi( main::@6/(byte) keyboard_modifiers#32 ) - (byte) keyboard_events_size#26 ← phi( main::@6/(byte) keyboard_events_size#35 ) + to:main::@33 +main::@33: scope:[main] from main::@6 + (byte) render_screen_render#59 ← phi( main::@6/(byte) render_screen_render#61 ) + (byte) render_screen_show#58 ← phi( main::@6/(byte) render_screen_show#15 ) + (byte) current_xpos#99 ← phi( main::@6/(byte) current_xpos#108 ) + (byte*) current_piece_gfx#88 ← phi( main::@6/(byte*) current_piece_gfx#95 ) + (byte) current_orientation#76 ← phi( main::@6/(byte) current_orientation#82 ) + (byte) current_piece_char#72 ← phi( main::@6/(byte) current_piece_char#81 ) + (byte*) current_piece#70 ← phi( main::@6/(byte*) current_piece#76 ) + (byte) level_bcd#75 ← phi( main::@6/(byte) level_bcd#83 ) + (byte) current_movedown_slow#79 ← phi( main::@6/(byte) current_movedown_slow#83 ) + (byte) level#73 ← phi( main::@6/(byte) level#82 ) + (dword) score_bcd#63 ← phi( main::@6/(dword) score_bcd#71 ) + (word) lines_bcd#65 ← phi( main::@6/(word) lines_bcd#73 ) + (byte) current_ypos#75 ← phi( main::@6/(byte) current_ypos#82 ) + (byte) current_movedown_counter#43 ← phi( main::@6/(byte) current_movedown_counter#47 ) + (byte) game_over#41 ← phi( main::@6/(byte) game_over#52 ) + (byte) keyboard_modifiers#23 ← phi( main::@6/(byte) keyboard_modifiers#31 ) + (byte) keyboard_events_size#26 ← phi( main::@6/(byte) keyboard_events_size#34 ) (byte) render_screen_showing#8 ← phi( main::@6/(byte) render_screen_showing#2 ) (byte) render_screen_showing#3 ← (byte) render_screen_showing#8 call keyboard_event_scan - to:main::@24 -main::@24: scope:[main] from main::@23 - (byte) render_screen_showing#41 ← phi( main::@23/(byte) render_screen_showing#3 ) - (byte) render_screen_render#56 ← phi( main::@23/(byte) render_screen_render#58 ) - (byte) render_screen_show#55 ← phi( main::@23/(byte) render_screen_show#57 ) - (byte) current_piece_char#36 ← phi( main::@23/(byte) current_piece_char#49 ) - (byte) current_xpos#64 ← phi( main::@23/(byte) current_xpos#79 ) - (byte*) current_piece_gfx#51 ← phi( main::@23/(byte*) current_piece_gfx#66 ) - (byte) current_orientation#50 ← phi( main::@23/(byte) current_orientation#60 ) - (byte*) current_piece#41 ← phi( main::@23/(byte*) current_piece#51 ) - (byte) level_bcd#47 ← phi( main::@23/(byte) level_bcd#57 ) - (byte) current_movedown_slow#53 ← phi( main::@23/(byte) current_movedown_slow#63 ) - (byte) level#43 ← phi( main::@23/(byte) level#53 ) - (dword) score_bcd#37 ← phi( main::@23/(dword) score_bcd#46 ) - (word) lines_bcd#37 ← phi( main::@23/(word) lines_bcd#46 ) - (byte) current_ypos#48 ← phi( main::@23/(byte) current_ypos#58 ) - (byte) current_movedown_counter#26 ← phi( main::@23/(byte) current_movedown_counter#31 ) - (byte) keyboard_modifiers#15 ← phi( main::@23/(byte) keyboard_modifiers#6 ) - (byte) keyboard_events_size#17 ← phi( main::@23/(byte) keyboard_events_size#3 ) + to:main::@34 +main::@34: scope:[main] from main::@33 + (byte) render_screen_showing#39 ← phi( main::@33/(byte) render_screen_showing#3 ) + (byte) render_screen_render#57 ← phi( main::@33/(byte) render_screen_render#59 ) + (byte) render_screen_show#55 ← phi( main::@33/(byte) render_screen_show#58 ) + (byte) current_xpos#89 ← phi( main::@33/(byte) current_xpos#99 ) + (byte*) current_piece_gfx#75 ← phi( main::@33/(byte*) current_piece_gfx#88 ) + (byte) current_orientation#69 ← phi( main::@33/(byte) current_orientation#76 ) + (byte) current_piece_char#60 ← phi( main::@33/(byte) current_piece_char#72 ) + (byte*) current_piece#62 ← phi( main::@33/(byte*) current_piece#70 ) + (byte) level_bcd#65 ← phi( main::@33/(byte) level_bcd#75 ) + (byte) current_movedown_slow#71 ← phi( main::@33/(byte) current_movedown_slow#79 ) + (byte) level#61 ← phi( main::@33/(byte) level#73 ) + (dword) score_bcd#54 ← phi( main::@33/(dword) score_bcd#63 ) + (word) lines_bcd#54 ← phi( main::@33/(word) lines_bcd#65 ) + (byte) current_ypos#68 ← phi( main::@33/(byte) current_ypos#75 ) + (byte) current_movedown_counter#39 ← phi( main::@33/(byte) current_movedown_counter#43 ) + (byte) game_over#29 ← phi( main::@33/(byte) game_over#41 ) + (byte) keyboard_modifiers#15 ← phi( main::@33/(byte) keyboard_modifiers#6 ) + (byte) keyboard_events_size#17 ← phi( main::@33/(byte) keyboard_events_size#3 ) (byte) keyboard_events_size#6 ← (byte) keyboard_events_size#17 (byte) keyboard_modifiers#7 ← (byte) keyboard_modifiers#15 call keyboard_event_get (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 - to:main::@25 -main::@25: scope:[main] from main::@24 - (byte) keyboard_modifiers#51 ← phi( main::@24/(byte) keyboard_modifiers#7 ) - (byte) render_screen_showing#37 ← phi( main::@24/(byte) render_screen_showing#41 ) - (byte) render_screen_render#54 ← phi( main::@24/(byte) render_screen_render#56 ) - (byte) render_screen_show#52 ← phi( main::@24/(byte) render_screen_show#55 ) - (byte) current_piece_char#23 ← phi( main::@24/(byte) current_piece_char#36 ) - (byte) current_xpos#44 ← phi( main::@24/(byte) current_xpos#64 ) - (byte*) current_piece_gfx#32 ← phi( main::@24/(byte*) current_piece_gfx#51 ) - (byte) current_orientation#37 ← phi( main::@24/(byte) current_orientation#50 ) - (byte*) current_piece#27 ← phi( main::@24/(byte*) current_piece#41 ) - (byte) level_bcd#32 ← phi( main::@24/(byte) level_bcd#47 ) - (byte) current_movedown_slow#37 ← phi( main::@24/(byte) current_movedown_slow#53 ) - (byte) level#29 ← phi( main::@24/(byte) level#43 ) - (dword) score_bcd#25 ← phi( main::@24/(dword) score_bcd#37 ) - (word) lines_bcd#25 ← phi( main::@24/(word) lines_bcd#37 ) - (byte) current_ypos#36 ← phi( main::@24/(byte) current_ypos#48 ) - (byte) current_movedown_counter#14 ← phi( main::@24/(byte) current_movedown_counter#26 ) - (byte) keyboard_events_size#18 ← phi( main::@24/(byte) keyboard_events_size#5 ) - (byte) keyboard_event_get::return#5 ← phi( main::@24/(byte) keyboard_event_get::return#3 ) - (byte~) main::$11 ← (byte) keyboard_event_get::return#5 + to:main::@35 +main::@35: scope:[main] from main::@34 + (byte) keyboard_modifiers#48 ← phi( main::@34/(byte) keyboard_modifiers#7 ) + (byte) render_screen_showing#34 ← phi( main::@34/(byte) render_screen_showing#39 ) + (byte) render_screen_render#54 ← phi( main::@34/(byte) render_screen_render#57 ) + (byte) render_screen_show#51 ← phi( main::@34/(byte) render_screen_show#55 ) + (byte) current_xpos#74 ← phi( main::@34/(byte) current_xpos#89 ) + (byte*) current_piece_gfx#60 ← phi( main::@34/(byte*) current_piece_gfx#75 ) + (byte) current_orientation#59 ← phi( main::@34/(byte) current_orientation#69 ) + (byte) current_piece_char#46 ← phi( main::@34/(byte) current_piece_char#60 ) + (byte*) current_piece#51 ← phi( main::@34/(byte*) current_piece#62 ) + (byte) level_bcd#54 ← phi( main::@34/(byte) level_bcd#65 ) + (byte) current_movedown_slow#60 ← phi( main::@34/(byte) current_movedown_slow#71 ) + (byte) level#50 ← phi( main::@34/(byte) level#61 ) + (dword) score_bcd#44 ← phi( main::@34/(dword) score_bcd#54 ) + (word) lines_bcd#44 ← phi( main::@34/(word) lines_bcd#54 ) + (byte) current_ypos#59 ← phi( main::@34/(byte) current_ypos#68 ) + (byte) current_movedown_counter#33 ← phi( main::@34/(byte) current_movedown_counter#39 ) + (byte) game_over#17 ← phi( main::@34/(byte) game_over#29 ) + (byte) keyboard_events_size#18 ← phi( main::@34/(byte) keyboard_events_size#5 ) + (byte) keyboard_event_get::return#5 ← phi( main::@34/(byte) keyboard_event_get::return#3 ) + (byte~) main::$12 ← (byte) keyboard_event_get::return#5 (byte) keyboard_events_size#7 ← (byte) keyboard_events_size#18 - (byte) main::key_event#0 ← (byte~) main::$11 + (byte) main::key_event#0 ← (byte~) main::$12 (byte) main::render#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 - call play_move_down - (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 - to:main::@26 -main::@26: scope:[main] from main::@25 - (byte) keyboard_modifiers#47 ← phi( main::@25/(byte) keyboard_modifiers#51 ) - (byte) keyboard_events_size#59 ← phi( main::@25/(byte) keyboard_events_size#7 ) - (byte) render_screen_showing#33 ← phi( main::@25/(byte) render_screen_showing#37 ) - (byte) render_screen_render#52 ← phi( main::@25/(byte) render_screen_render#54 ) - (byte) render_screen_show#49 ← phi( main::@25/(byte) render_screen_show#52 ) - (byte) main::key_event#1 ← phi( main::@25/(byte) main::key_event#0 ) - (byte) main::render#4 ← phi( main::@25/(byte) main::render#0 ) - (byte) current_piece_char#14 ← phi( main::@25/(byte) current_piece_char#1 ) - (byte) current_xpos#25 ← phi( main::@25/(byte) current_xpos#1 ) - (byte*) current_piece_gfx#18 ← phi( main::@25/(byte*) current_piece_gfx#1 ) - (byte) current_orientation#22 ← phi( main::@25/(byte) current_orientation#2 ) - (byte*) current_piece#15 ← phi( main::@25/(byte*) current_piece#2 ) - (byte) level_bcd#19 ← phi( main::@25/(byte) level_bcd#2 ) - (byte) current_movedown_slow#22 ← phi( main::@25/(byte) current_movedown_slow#4 ) - (byte) level#18 ← phi( main::@25/(byte) level#2 ) - (dword) score_bcd#13 ← phi( main::@25/(dword) score_bcd#2 ) - (word) lines_bcd#14 ← phi( main::@25/(word) lines_bcd#2 ) - (byte) current_ypos#20 ← phi( main::@25/(byte) current_ypos#2 ) - (byte) current_movedown_counter#11 ← phi( main::@25/(byte) current_movedown_counter#3 ) - (byte) play_move_down::return#5 ← phi( main::@25/(byte) play_move_down::return#3 ) - (byte~) main::$12 ← (byte) play_move_down::return#5 - (byte) current_movedown_counter#4 ← (byte) current_movedown_counter#11 - (byte) current_ypos#6 ← (byte) current_ypos#20 - (word) lines_bcd#5 ← (word) lines_bcd#14 - (dword) score_bcd#5 ← (dword) score_bcd#13 - (byte) level#7 ← (byte) level#18 - (byte) current_movedown_slow#11 ← (byte) current_movedown_slow#22 - (byte) level_bcd#8 ← (byte) level_bcd#19 - (byte*) current_piece#6 ← (byte*) current_piece#15 - (byte) current_orientation#8 ← (byte) current_orientation#22 - (byte*) current_piece_gfx#7 ← (byte*) current_piece_gfx#18 - (byte) current_xpos#8 ← (byte) current_xpos#25 - (byte) current_piece_char#5 ← (byte) current_piece_char#14 - (byte) main::render#1 ← (byte) main::render#4 + (byte~) main::$12 - (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#1 - call play_move_leftright - (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 - to:main::@27 -main::@27: scope:[main] from main::@26 - (byte) level_bcd#68 ← phi( main::@26/(byte) level_bcd#8 ) - (byte) level#66 ← phi( main::@26/(byte) level#7 ) - (dword) score_bcd#56 ← phi( main::@26/(dword) score_bcd#5 ) - (word) lines_bcd#58 ← phi( main::@26/(word) lines_bcd#5 ) - (byte) current_movedown_counter#36 ← phi( main::@26/(byte) current_movedown_counter#4 ) - (byte) keyboard_modifiers#43 ← phi( main::@26/(byte) keyboard_modifiers#47 ) - (byte) keyboard_events_size#52 ← phi( main::@26/(byte) keyboard_events_size#59 ) - (byte) render_screen_showing#29 ← phi( main::@26/(byte) render_screen_showing#33 ) - (byte) current_piece_char#62 ← phi( main::@26/(byte) current_piece_char#5 ) - (byte) current_movedown_slow#72 ← phi( main::@26/(byte) current_movedown_slow#11 ) - (byte) render_screen_render#48 ← phi( main::@26/(byte) render_screen_render#52 ) - (byte) render_screen_show#45 ← phi( main::@26/(byte) render_screen_show#49 ) - (byte*) current_piece#58 ← phi( main::@26/(byte*) current_piece#6 ) - (byte) current_ypos#55 ← phi( main::@26/(byte) current_ypos#6 ) - (byte*) current_piece_gfx#33 ← phi( main::@26/(byte*) current_piece_gfx#7 ) - (byte) current_orientation#38 ← phi( main::@26/(byte) current_orientation#8 ) - (byte) main::key_event#2 ← phi( main::@26/(byte) main::key_event#1 ) - (byte) main::render#5 ← phi( main::@26/(byte) main::render#1 ) - (byte) current_xpos#26 ← phi( main::@26/(byte) current_xpos#3 ) - (byte) play_move_leftright::return#6 ← phi( main::@26/(byte) play_move_leftright::return#4 ) - (byte~) main::$13 ← (byte) play_move_leftright::return#6 - (byte) current_xpos#9 ← (byte) current_xpos#26 - (byte) main::render#2 ← (byte) main::render#5 + (byte~) main::$13 - (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#2 - call play_move_rotate - (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 - to:main::@28 -main::@28: scope:[main] from main::@27 - (byte) level_bcd#58 ← phi( main::@27/(byte) level_bcd#68 ) - (byte) level#54 ← phi( main::@27/(byte) level#66 ) - (dword) score_bcd#47 ← phi( main::@27/(dword) score_bcd#56 ) - (word) lines_bcd#47 ← phi( main::@27/(word) lines_bcd#58 ) - (byte) current_movedown_counter#32 ← phi( main::@27/(byte) current_movedown_counter#36 ) - (byte) keyboard_modifiers#37 ← phi( main::@27/(byte) keyboard_modifiers#43 ) - (byte) keyboard_events_size#43 ← phi( main::@27/(byte) keyboard_events_size#52 ) - (byte) render_screen_showing#25 ← phi( main::@27/(byte) render_screen_showing#29 ) - (byte) current_piece_char#50 ← phi( main::@27/(byte) current_piece_char#62 ) - (byte) current_ypos#59 ← phi( main::@27/(byte) current_ypos#55 ) - (byte) current_xpos#80 ← phi( main::@27/(byte) current_xpos#9 ) - (byte*) current_piece#52 ← phi( main::@27/(byte*) current_piece#58 ) - (byte) current_movedown_slow#64 ← phi( main::@27/(byte) current_movedown_slow#72 ) - (byte) render_screen_render#42 ← phi( main::@27/(byte) render_screen_render#48 ) - (byte) render_screen_show#39 ← phi( main::@27/(byte) render_screen_show#45 ) - (byte) main::render#6 ← phi( main::@27/(byte) main::render#2 ) - (byte*) current_piece_gfx#19 ← phi( main::@27/(byte*) current_piece_gfx#2 ) - (byte) current_orientation#23 ← phi( main::@27/(byte) current_orientation#3 ) - (byte) play_move_rotate::return#6 ← phi( main::@27/(byte) play_move_rotate::return#4 ) - (byte~) main::$14 ← (byte) play_move_rotate::return#6 - (byte) current_orientation#9 ← (byte) current_orientation#23 - (byte*) current_piece_gfx#8 ← (byte*) current_piece_gfx#19 - (byte) main::render#3 ← (byte) main::render#6 + (byte~) main::$14 - (bool~) main::$15 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) main::$13 ← (byte) game_over#17 == (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) main::$13) goto main::@7 + to:main::@8 +main::@7: scope:[main] from main::@35 + (byte) keyboard_modifiers#47 ← phi( main::@35/(byte) keyboard_modifiers#48 ) + (byte) keyboard_events_size#59 ← phi( main::@35/(byte) keyboard_events_size#7 ) + (byte) render_screen_showing#33 ← phi( main::@35/(byte) render_screen_showing#34 ) + (byte) render_screen_render#53 ← phi( main::@35/(byte) render_screen_render#54 ) + (byte) render_screen_show#50 ← phi( main::@35/(byte) render_screen_show#51 ) + (byte) game_over#30 ← phi( main::@35/(byte) game_over#17 ) + (byte) current_xpos#54 ← phi( main::@35/(byte) current_xpos#74 ) + (byte*) current_piece_gfx#41 ← phi( main::@35/(byte*) current_piece_gfx#60 ) + (byte) current_orientation#46 ← phi( main::@35/(byte) current_orientation#59 ) + (byte) current_piece_char#32 ← phi( main::@35/(byte) current_piece_char#46 ) + (byte*) current_piece#36 ← phi( main::@35/(byte*) current_piece#51 ) + (byte) level_bcd#39 ← phi( main::@35/(byte) level_bcd#54 ) + (byte) current_movedown_slow#44 ← phi( main::@35/(byte) current_movedown_slow#60 ) + (byte) level#36 ← phi( main::@35/(byte) level#50 ) + (dword) score_bcd#32 ← phi( main::@35/(dword) score_bcd#44 ) + (word) lines_bcd#32 ← phi( main::@35/(word) lines_bcd#44 ) + (byte) current_ypos#45 ← phi( main::@35/(byte) current_ypos#59 ) + (byte) current_movedown_counter#25 ← phi( main::@35/(byte) current_movedown_counter#33 ) + (byte) main::key_event#1 ← phi( main::@35/(byte) main::key_event#0 ) + (byte) play_movement::key_event#0 ← (byte) main::key_event#1 + call play_movement + (byte) play_movement::return#3 ← (byte) play_movement::return#2 + to:main::@36 +main::@36: scope:[main] from main::@7 + (byte) keyboard_modifiers#42 ← phi( main::@7/(byte) keyboard_modifiers#47 ) + (byte) keyboard_events_size#51 ← phi( main::@7/(byte) keyboard_events_size#59 ) + (byte) render_screen_showing#28 ← phi( main::@7/(byte) render_screen_showing#33 ) + (byte) render_screen_render#48 ← phi( main::@7/(byte) render_screen_render#53 ) + (byte) render_screen_show#45 ← phi( main::@7/(byte) render_screen_show#50 ) + (byte) game_over#18 ← phi( main::@7/(byte) game_over#2 ) + (byte) current_xpos#30 ← phi( main::@7/(byte) current_xpos#2 ) + (byte*) current_piece_gfx#23 ← phi( main::@7/(byte*) current_piece_gfx#2 ) + (byte) current_orientation#27 ← phi( main::@7/(byte) current_orientation#3 ) + (byte) current_piece_char#18 ← phi( main::@7/(byte) current_piece_char#1 ) + (byte*) current_piece#19 ← phi( main::@7/(byte*) current_piece#2 ) + (byte) level_bcd#23 ← phi( main::@7/(byte) level_bcd#2 ) + (byte) current_movedown_slow#26 ← phi( main::@7/(byte) current_movedown_slow#4 ) + (byte) level#22 ← phi( main::@7/(byte) level#2 ) + (dword) score_bcd#17 ← phi( main::@7/(dword) score_bcd#2 ) + (word) lines_bcd#18 ← phi( main::@7/(word) lines_bcd#2 ) + (byte) current_ypos#24 ← phi( main::@7/(byte) current_ypos#1 ) + (byte) current_movedown_counter#15 ← phi( main::@7/(byte) current_movedown_counter#2 ) + (byte) play_movement::return#5 ← phi( main::@7/(byte) play_movement::return#3 ) + (byte~) main::$14 ← (byte) play_movement::return#5 + (byte) current_movedown_counter#6 ← (byte) current_movedown_counter#15 + (byte) current_ypos#8 ← (byte) current_ypos#24 + (word) lines_bcd#7 ← (word) lines_bcd#18 + (dword) score_bcd#7 ← (dword) score_bcd#17 + (byte) level#9 ← (byte) level#22 + (byte) current_movedown_slow#13 ← (byte) current_movedown_slow#26 + (byte) level_bcd#10 ← (byte) level_bcd#23 + (byte*) current_piece#8 ← (byte*) current_piece#19 + (byte) current_piece_char#7 ← (byte) current_piece_char#18 + (byte) current_orientation#11 ← (byte) current_orientation#27 + (byte*) current_piece_gfx#10 ← (byte*) current_piece_gfx#23 + (byte) current_xpos#11 ← (byte) current_xpos#30 + (byte) game_over#8 ← (byte) game_over#18 + (byte) main::render#1 ← (byte~) main::$14 + to:main::@11 +main::@8: scope:[main] from main::@35 main::@9 + (byte) level_bcd#76 ← phi( main::@35/(byte) level_bcd#54 main::@9/(byte) level_bcd#84 ) + (byte) level#74 ← phi( main::@35/(byte) level#50 main::@9/(byte) level#83 ) + (dword) score_bcd#64 ← phi( main::@35/(dword) score_bcd#44 main::@9/(dword) score_bcd#72 ) + (word) lines_bcd#66 ← phi( main::@35/(word) lines_bcd#44 main::@9/(word) lines_bcd#74 ) + (byte) current_movedown_counter#44 ← phi( main::@35/(byte) current_movedown_counter#33 main::@9/(byte) current_movedown_counter#48 ) + (byte) keyboard_modifiers#43 ← phi( main::@35/(byte) keyboard_modifiers#48 main::@9/(byte) keyboard_modifiers#49 ) + (byte) keyboard_events_size#52 ← phi( main::@35/(byte) keyboard_events_size#7 main::@9/(byte) keyboard_events_size#60 ) + (byte) render_screen_showing#29 ← phi( main::@35/(byte) render_screen_showing#34 main::@9/(byte) render_screen_showing#35 ) + (byte) game_over#64 ← phi( main::@35/(byte) game_over#17 main::@9/(byte) game_over#74 ) + (byte) current_ypos#76 ← phi( main::@35/(byte) current_ypos#59 main::@9/(byte) current_ypos#83 ) + (byte) current_xpos#100 ← phi( main::@35/(byte) current_xpos#74 main::@9/(byte) current_xpos#109 ) + (byte*) current_piece_gfx#89 ← phi( main::@35/(byte*) current_piece_gfx#60 main::@9/(byte*) current_piece_gfx#96 ) + (byte) current_orientation#77 ← phi( main::@35/(byte) current_orientation#59 main::@9/(byte) current_orientation#83 ) + (byte) current_piece_char#73 ← phi( main::@35/(byte) current_piece_char#46 main::@9/(byte) current_piece_char#82 ) + (byte*) current_piece#71 ← phi( main::@35/(byte*) current_piece#51 main::@9/(byte*) current_piece#77 ) + (byte) current_movedown_slow#80 ← phi( main::@35/(byte) current_movedown_slow#60 main::@9/(byte) current_movedown_slow#84 ) + (byte) render_screen_render#49 ← phi( main::@35/(byte) render_screen_render#54 main::@9/(byte) render_screen_render#55 ) + (byte) render_screen_show#46 ← phi( main::@35/(byte) render_screen_show#51 main::@9/(byte) render_screen_show#52 ) + (byte) main::render#3 ← phi( main::@35/(byte) main::render#0 main::@9/(byte) main::render#4 ) + if(true) goto main::@9 + to:main::@11 +main::@9: scope:[main] from main::@8 + (byte) level_bcd#84 ← phi( main::@8/(byte) level_bcd#76 ) + (byte) level#83 ← phi( main::@8/(byte) level#74 ) + (dword) score_bcd#72 ← phi( main::@8/(dword) score_bcd#64 ) + (word) lines_bcd#74 ← phi( main::@8/(word) lines_bcd#66 ) + (byte) current_movedown_counter#48 ← phi( main::@8/(byte) current_movedown_counter#44 ) + (byte) keyboard_modifiers#49 ← phi( main::@8/(byte) keyboard_modifiers#43 ) + (byte) keyboard_events_size#60 ← phi( main::@8/(byte) keyboard_events_size#52 ) + (byte) render_screen_showing#35 ← phi( main::@8/(byte) render_screen_showing#29 ) + (byte) game_over#74 ← phi( main::@8/(byte) game_over#64 ) + (byte) current_ypos#83 ← phi( main::@8/(byte) current_ypos#76 ) + (byte) current_xpos#109 ← phi( main::@8/(byte) current_xpos#100 ) + (byte*) current_piece_gfx#96 ← phi( main::@8/(byte*) current_piece_gfx#89 ) + (byte) current_orientation#83 ← phi( main::@8/(byte) current_orientation#77 ) + (byte) current_piece_char#82 ← phi( main::@8/(byte) current_piece_char#73 ) + (byte*) current_piece#77 ← phi( main::@8/(byte*) current_piece#71 ) + (byte) current_movedown_slow#84 ← phi( main::@8/(byte) current_movedown_slow#80 ) + (byte) render_screen_render#55 ← phi( main::@8/(byte) render_screen_render#49 ) + (byte) render_screen_show#52 ← phi( main::@8/(byte) render_screen_show#46 ) + (byte) main::render#4 ← phi( main::@8/(byte) main::render#3 ) + *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0) + to:main::@8 +main::@11: scope:[main] from main::@36 main::@8 + (byte) level_bcd#66 ← phi( main::@36/(byte) level_bcd#10 main::@8/(byte) level_bcd#76 ) + (byte) level#62 ← phi( main::@36/(byte) level#9 main::@8/(byte) level#74 ) + (dword) score_bcd#55 ← phi( main::@36/(dword) score_bcd#7 main::@8/(dword) score_bcd#64 ) + (word) lines_bcd#55 ← phi( main::@36/(word) lines_bcd#7 main::@8/(word) lines_bcd#66 ) + (byte) current_movedown_counter#40 ← phi( main::@36/(byte) current_movedown_counter#6 main::@8/(byte) current_movedown_counter#44 ) + (byte) keyboard_modifiers#36 ← phi( main::@36/(byte) keyboard_modifiers#42 main::@8/(byte) keyboard_modifiers#43 ) + (byte) keyboard_events_size#42 ← phi( main::@36/(byte) keyboard_events_size#51 main::@8/(byte) keyboard_events_size#52 ) + (byte) render_screen_showing#24 ← phi( main::@36/(byte) render_screen_showing#28 main::@8/(byte) render_screen_showing#29 ) + (byte) game_over#53 ← phi( main::@36/(byte) game_over#8 main::@8/(byte) game_over#64 ) + (byte) current_ypos#69 ← phi( main::@36/(byte) current_ypos#8 main::@8/(byte) current_ypos#76 ) + (byte) current_xpos#90 ← phi( main::@36/(byte) current_xpos#11 main::@8/(byte) current_xpos#100 ) + (byte*) current_piece_gfx#76 ← phi( main::@36/(byte*) current_piece_gfx#10 main::@8/(byte*) current_piece_gfx#89 ) + (byte) current_orientation#70 ← phi( main::@36/(byte) current_orientation#11 main::@8/(byte) current_orientation#77 ) + (byte) current_piece_char#61 ← phi( main::@36/(byte) current_piece_char#7 main::@8/(byte) current_piece_char#73 ) + (byte*) current_piece#63 ← phi( main::@36/(byte*) current_piece#8 main::@8/(byte*) current_piece#71 ) + (byte) current_movedown_slow#72 ← phi( main::@36/(byte) current_movedown_slow#13 main::@8/(byte) current_movedown_slow#80 ) + (byte) render_screen_render#42 ← phi( main::@36/(byte) render_screen_render#48 main::@8/(byte) render_screen_render#49 ) + (byte) render_screen_show#39 ← phi( main::@36/(byte) render_screen_show#45 main::@8/(byte) render_screen_show#46 ) + (byte) main::render#2 ← phi( main::@36/(byte) main::render#1 main::@8/(byte) main::render#3 ) + (bool~) main::$15 ← (byte) main::render#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) main::$16 ← ! (bool~) main::$15 - if((bool~) main::$16) goto main::@7 - to:main::@13 -main::@7: scope:[main] from main::@28 - (byte) level_bcd#46 ← phi( main::@28/(byte) level_bcd#58 ) - (byte) level#42 ← phi( main::@28/(byte) level#54 ) - (dword) score_bcd#36 ← phi( main::@28/(dword) score_bcd#47 ) - (word) lines_bcd#36 ← phi( main::@28/(word) lines_bcd#47 ) - (byte) current_movedown_counter#25 ← phi( main::@28/(byte) current_movedown_counter#32 ) - (byte) keyboard_modifiers#31 ← phi( main::@28/(byte) keyboard_modifiers#37 ) - (byte) keyboard_events_size#34 ← phi( main::@28/(byte) keyboard_events_size#43 ) - (byte) render_screen_showing#18 ← phi( main::@28/(byte) render_screen_showing#25 ) - (byte) current_piece_char#35 ← phi( main::@28/(byte) current_piece_char#50 ) - (byte) current_ypos#47 ← phi( main::@28/(byte) current_ypos#59 ) - (byte) current_xpos#63 ← phi( main::@28/(byte) current_xpos#80 ) - (byte*) current_piece_gfx#50 ← phi( main::@28/(byte*) current_piece_gfx#8 ) - (byte) current_orientation#49 ← phi( main::@28/(byte) current_orientation#9 ) - (byte*) current_piece#40 ← phi( main::@28/(byte*) current_piece#52 ) - (byte) current_movedown_slow#52 ← phi( main::@28/(byte) current_movedown_slow#64 ) - (byte) render_screen_render#34 ← phi( main::@28/(byte) render_screen_render#42 ) - (byte) render_screen_show#29 ← phi( main::@28/(byte) render_screen_show#39 ) + if((bool~) main::$16) goto main::@12 + to:main::@23 +main::@12: scope:[main] from main::@11 main::@40 + (byte) level_bcd#52 ← phi( main::@11/(byte) level_bcd#66 main::@40/(byte) level_bcd#67 ) + (byte) level#48 ← phi( main::@11/(byte) level#62 main::@40/(byte) level#63 ) + (dword) score_bcd#42 ← phi( main::@11/(dword) score_bcd#55 main::@40/(dword) score_bcd#56 ) + (word) lines_bcd#42 ← phi( main::@11/(word) lines_bcd#55 main::@40/(word) lines_bcd#56 ) + (byte) current_movedown_counter#31 ← phi( main::@11/(byte) current_movedown_counter#40 main::@40/(byte) current_movedown_counter#41 ) + (byte) keyboard_modifiers#29 ← phi( main::@11/(byte) keyboard_modifiers#36 main::@40/(byte) keyboard_modifiers#37 ) + (byte) keyboard_events_size#32 ← phi( main::@11/(byte) keyboard_events_size#42 main::@40/(byte) keyboard_events_size#43 ) + (byte) render_screen_showing#16 ← phi( main::@11/(byte) render_screen_showing#24 main::@40/(byte) render_screen_showing#25 ) + (byte) game_over#39 ← phi( main::@11/(byte) game_over#53 main::@40/(byte) game_over#54 ) + (byte) current_ypos#57 ← phi( main::@11/(byte) current_ypos#69 main::@40/(byte) current_ypos#70 ) + (byte) current_xpos#72 ← phi( main::@11/(byte) current_xpos#90 main::@40/(byte) current_xpos#91 ) + (byte*) current_piece_gfx#58 ← phi( main::@11/(byte*) current_piece_gfx#76 main::@40/(byte*) current_piece_gfx#77 ) + (byte) current_orientation#57 ← phi( main::@11/(byte) current_orientation#70 main::@40/(byte) current_orientation#71 ) + (byte) current_piece_char#44 ← phi( main::@11/(byte) current_piece_char#61 main::@40/(byte) current_piece_char#62 ) + (byte*) current_piece#49 ← phi( main::@11/(byte*) current_piece#63 main::@40/(byte*) current_piece#64 ) + (byte) current_movedown_slow#58 ← phi( main::@11/(byte) current_movedown_slow#72 main::@40/(byte) current_movedown_slow#73 ) + (byte) render_screen_render#33 ← phi( main::@11/(byte) render_screen_render#42 main::@40/(byte) render_screen_render#6 ) + (byte) render_screen_show#29 ← phi( main::@11/(byte) render_screen_show#39 main::@40/(byte) render_screen_show#6 ) + *((byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::@1 -main::@13: scope:[main] from main::@28 - (byte) level_bcd#85 ← phi( main::@28/(byte) level_bcd#58 ) - (byte) level#82 ← phi( main::@28/(byte) level#54 ) - (word) lines_bcd#73 ← phi( main::@28/(word) lines_bcd#47 ) - (byte) current_movedown_counter#44 ← phi( main::@28/(byte) current_movedown_counter#32 ) - (byte) keyboard_modifiers#52 ← phi( main::@28/(byte) keyboard_modifiers#37 ) - (byte) keyboard_events_size#67 ← phi( main::@28/(byte) keyboard_events_size#43 ) - (byte) render_screen_showing#38 ← phi( main::@28/(byte) render_screen_showing#25 ) - (byte) current_piece_char#79 ← phi( main::@28/(byte) current_piece_char#50 ) - (byte) current_orientation#76 ← phi( main::@28/(byte) current_orientation#9 ) - (byte*) current_piece#72 ← phi( main::@28/(byte*) current_piece#52 ) - (byte) current_movedown_slow#79 ← phi( main::@28/(byte) current_movedown_slow#64 ) - (dword) score_bcd#63 ← phi( main::@28/(dword) score_bcd#47 ) - (byte*) current_piece_gfx#85 ← phi( main::@28/(byte*) current_piece_gfx#8 ) - (byte) render_screen_show#46 ← phi( main::@28/(byte) render_screen_show#39 ) - (byte) current_xpos#90 ← phi( main::@28/(byte) current_xpos#80 ) - (byte) current_ypos#49 ← phi( main::@28/(byte) current_ypos#59 ) - (byte) render_screen_render#27 ← phi( main::@28/(byte) render_screen_render#42 ) +main::@23: scope:[main] from main::@11 + (byte) level_bcd#99 ← phi( main::@11/(byte) level_bcd#66 ) + (byte) level#95 ← phi( main::@11/(byte) level#62 ) + (word) lines_bcd#86 ← phi( main::@11/(word) lines_bcd#55 ) + (byte) current_movedown_counter#56 ← phi( main::@11/(byte) current_movedown_counter#40 ) + (byte) keyboard_modifiers#56 ← phi( main::@11/(byte) keyboard_modifiers#36 ) + (byte) keyboard_events_size#72 ← phi( main::@11/(byte) keyboard_events_size#42 ) + (byte) render_screen_showing#43 ← phi( main::@11/(byte) render_screen_showing#24 ) + (byte) game_over#83 ← phi( main::@11/(byte) game_over#53 ) + (byte) current_orientation#90 ← phi( main::@11/(byte) current_orientation#70 ) + (byte*) current_piece#86 ← phi( main::@11/(byte*) current_piece#63 ) + (byte) current_movedown_slow#90 ← phi( main::@11/(byte) current_movedown_slow#72 ) + (byte) current_piece_char#94 ← phi( main::@11/(byte) current_piece_char#61 ) + (dword) score_bcd#73 ← phi( main::@11/(dword) score_bcd#55 ) + (byte*) current_piece_gfx#97 ← phi( main::@11/(byte*) current_piece_gfx#76 ) + (byte) render_screen_show#47 ← phi( main::@11/(byte) render_screen_show#39 ) + (byte) current_xpos#101 ← phi( main::@11/(byte) current_xpos#90 ) + (byte) current_ypos#60 ← phi( main::@11/(byte) current_ypos#69 ) + (byte) render_screen_render#27 ← phi( main::@11/(byte) render_screen_render#42 ) call render_playfield - to:main::@29 -main::@29: scope:[main] from main::@13 - (byte) level_bcd#76 ← phi( main::@13/(byte) level_bcd#85 ) - (byte) level#75 ← phi( main::@13/(byte) level#82 ) - (word) lines_bcd#66 ← phi( main::@13/(word) lines_bcd#73 ) - (byte) current_movedown_counter#40 ← phi( main::@13/(byte) current_movedown_counter#44 ) - (byte) keyboard_modifiers#48 ← phi( main::@13/(byte) keyboard_modifiers#52 ) - (byte) keyboard_events_size#60 ← phi( main::@13/(byte) keyboard_events_size#67 ) - (byte) render_screen_showing#34 ← phi( main::@13/(byte) render_screen_showing#38 ) - (byte) current_piece_char#71 ← phi( main::@13/(byte) current_piece_char#79 ) - (byte) current_orientation#72 ← phi( main::@13/(byte) current_orientation#76 ) - (byte*) current_piece#66 ← phi( main::@13/(byte*) current_piece#72 ) - (byte) current_movedown_slow#76 ← phi( main::@13/(byte) current_movedown_slow#79 ) - (dword) score_bcd#57 ← phi( main::@13/(dword) score_bcd#63 ) - (byte*) current_piece_gfx#68 ← phi( main::@13/(byte*) current_piece_gfx#85 ) - (byte) render_screen_show#40 ← phi( main::@13/(byte) render_screen_show#46 ) - (byte) current_xpos#67 ← phi( main::@13/(byte) current_xpos#90 ) - (byte) render_screen_render#35 ← phi( main::@13/(byte) render_screen_render#27 ) - (byte) current_ypos#24 ← phi( main::@13/(byte) current_ypos#49 ) + to:main::@37 +main::@37: scope:[main] from main::@23 + (byte) level_bcd#93 ← phi( main::@23/(byte) level_bcd#99 ) + (byte) level#90 ← phi( main::@23/(byte) level#95 ) + (word) lines_bcd#81 ← phi( main::@23/(word) lines_bcd#86 ) + (byte) current_movedown_counter#52 ← phi( main::@23/(byte) current_movedown_counter#56 ) + (byte) keyboard_modifiers#53 ← phi( main::@23/(byte) keyboard_modifiers#56 ) + (byte) keyboard_events_size#68 ← phi( main::@23/(byte) keyboard_events_size#72 ) + (byte) render_screen_showing#40 ← phi( main::@23/(byte) render_screen_showing#43 ) + (byte) game_over#81 ← phi( main::@23/(byte) game_over#83 ) + (byte) current_orientation#87 ← phi( main::@23/(byte) current_orientation#90 ) + (byte*) current_piece#83 ← phi( main::@23/(byte*) current_piece#86 ) + (byte) current_movedown_slow#87 ← phi( main::@23/(byte) current_movedown_slow#90 ) + (byte) current_piece_char#84 ← phi( main::@23/(byte) current_piece_char#94 ) + (dword) score_bcd#65 ← phi( main::@23/(dword) score_bcd#73 ) + (byte*) current_piece_gfx#78 ← phi( main::@23/(byte*) current_piece_gfx#97 ) + (byte) render_screen_show#40 ← phi( main::@23/(byte) render_screen_show#47 ) + (byte) current_xpos#77 ← phi( main::@23/(byte) current_xpos#101 ) + (byte) render_screen_render#35 ← phi( main::@23/(byte) render_screen_render#27 ) + (byte) current_ypos#28 ← phi( main::@23/(byte) current_ypos#60 ) call render_moving - to:main::@30 -main::@30: scope:[main] from main::@29 - (byte) level_bcd#69 ← phi( main::@29/(byte) level_bcd#76 ) - (byte) level#67 ← phi( main::@29/(byte) level#75 ) - (word) lines_bcd#59 ← phi( main::@29/(word) lines_bcd#66 ) - (byte) current_movedown_counter#37 ← phi( main::@29/(byte) current_movedown_counter#40 ) - (byte) keyboard_modifiers#44 ← phi( main::@29/(byte) keyboard_modifiers#48 ) - (byte) keyboard_events_size#53 ← phi( main::@29/(byte) keyboard_events_size#60 ) - (byte) render_screen_showing#30 ← phi( main::@29/(byte) render_screen_showing#34 ) - (byte) current_piece_char#63 ← phi( main::@29/(byte) current_piece_char#71 ) - (byte) current_ypos#66 ← phi( main::@29/(byte) current_ypos#24 ) - (byte) current_xpos#91 ← phi( main::@29/(byte) current_xpos#67 ) - (byte*) current_piece_gfx#79 ← phi( main::@29/(byte*) current_piece_gfx#68 ) - (byte) current_orientation#67 ← phi( main::@29/(byte) current_orientation#72 ) - (byte*) current_piece#61 ← phi( main::@29/(byte*) current_piece#66 ) - (byte) current_movedown_slow#73 ← phi( main::@29/(byte) current_movedown_slow#76 ) - (dword) score_bcd#39 ← phi( main::@29/(dword) score_bcd#57 ) - (byte) render_screen_show#31 ← phi( main::@29/(byte) render_screen_show#40 ) - (byte) render_screen_render#20 ← phi( main::@29/(byte) render_screen_render#35 ) + to:main::@38 +main::@38: scope:[main] from main::@37 + (byte) level_bcd#85 ← phi( main::@37/(byte) level_bcd#93 ) + (byte) level#84 ← phi( main::@37/(byte) level#90 ) + (word) lines_bcd#75 ← phi( main::@37/(word) lines_bcd#81 ) + (byte) current_movedown_counter#49 ← phi( main::@37/(byte) current_movedown_counter#52 ) + (byte) keyboard_modifiers#50 ← phi( main::@37/(byte) keyboard_modifiers#53 ) + (byte) keyboard_events_size#61 ← phi( main::@37/(byte) keyboard_events_size#68 ) + (byte) render_screen_showing#36 ← phi( main::@37/(byte) render_screen_showing#40 ) + (byte) game_over#75 ← phi( main::@37/(byte) game_over#81 ) + (byte) current_ypos#84 ← phi( main::@37/(byte) current_ypos#28 ) + (byte) current_xpos#110 ← phi( main::@37/(byte) current_xpos#77 ) + (byte*) current_piece_gfx#98 ← phi( main::@37/(byte*) current_piece_gfx#78 ) + (byte) current_orientation#84 ← phi( main::@37/(byte) current_orientation#87 ) + (byte) current_piece_char#83 ← phi( main::@37/(byte) current_piece_char#84 ) + (byte*) current_piece#78 ← phi( main::@37/(byte*) current_piece#83 ) + (byte) current_movedown_slow#85 ← phi( main::@37/(byte) current_movedown_slow#87 ) + (dword) score_bcd#46 ← phi( main::@37/(dword) score_bcd#65 ) + (byte) render_screen_show#33 ← phi( main::@37/(byte) render_screen_show#40 ) + (byte) render_screen_render#20 ← phi( main::@37/(byte) render_screen_render#35 ) call render_score - to:main::@31 -main::@31: scope:[main] from main::@30 - (byte) level_bcd#59 ← phi( main::@30/(byte) level_bcd#69 ) - (byte) level#55 ← phi( main::@30/(byte) level#67 ) - (dword) score_bcd#48 ← phi( main::@30/(dword) score_bcd#39 ) - (word) lines_bcd#48 ← phi( main::@30/(word) lines_bcd#59 ) - (byte) current_movedown_counter#33 ← phi( main::@30/(byte) current_movedown_counter#37 ) - (byte) keyboard_modifiers#38 ← phi( main::@30/(byte) keyboard_modifiers#44 ) - (byte) keyboard_events_size#44 ← phi( main::@30/(byte) keyboard_events_size#53 ) - (byte) render_screen_showing#26 ← phi( main::@30/(byte) render_screen_showing#30 ) - (byte) current_piece_char#51 ← phi( main::@30/(byte) current_piece_char#63 ) - (byte) current_ypos#60 ← phi( main::@30/(byte) current_ypos#66 ) - (byte) current_xpos#81 ← phi( main::@30/(byte) current_xpos#91 ) - (byte*) current_piece_gfx#67 ← phi( main::@30/(byte*) current_piece_gfx#79 ) - (byte) current_orientation#61 ← phi( main::@30/(byte) current_orientation#67 ) - (byte*) current_piece#53 ← phi( main::@30/(byte*) current_piece#61 ) - (byte) current_movedown_slow#65 ← phi( main::@30/(byte) current_movedown_slow#73 ) - (byte) render_screen_show#21 ← phi( main::@30/(byte) render_screen_show#31 ) - (byte) render_screen_render#19 ← phi( main::@30/(byte) render_screen_render#20 ) + to:main::@39 +main::@39: scope:[main] from main::@38 + (byte) level_bcd#77 ← phi( main::@38/(byte) level_bcd#85 ) + (byte) level#75 ← phi( main::@38/(byte) level#84 ) + (dword) score_bcd#66 ← phi( main::@38/(dword) score_bcd#46 ) + (word) lines_bcd#67 ← phi( main::@38/(word) lines_bcd#75 ) + (byte) current_movedown_counter#45 ← phi( main::@38/(byte) current_movedown_counter#49 ) + (byte) keyboard_modifiers#44 ← phi( main::@38/(byte) keyboard_modifiers#50 ) + (byte) keyboard_events_size#53 ← phi( main::@38/(byte) keyboard_events_size#61 ) + (byte) render_screen_showing#30 ← phi( main::@38/(byte) render_screen_showing#36 ) + (byte) game_over#65 ← phi( main::@38/(byte) game_over#75 ) + (byte) current_ypos#77 ← phi( main::@38/(byte) current_ypos#84 ) + (byte) current_xpos#102 ← phi( main::@38/(byte) current_xpos#110 ) + (byte*) current_piece_gfx#90 ← phi( main::@38/(byte*) current_piece_gfx#98 ) + (byte) current_orientation#78 ← phi( main::@38/(byte) current_orientation#84 ) + (byte) current_piece_char#74 ← phi( main::@38/(byte) current_piece_char#83 ) + (byte*) current_piece#72 ← phi( main::@38/(byte*) current_piece#78 ) + (byte) current_movedown_slow#81 ← phi( main::@38/(byte) current_movedown_slow#85 ) + (byte) render_screen_show#21 ← phi( main::@38/(byte) render_screen_show#33 ) + (byte) render_screen_render#19 ← phi( main::@38/(byte) render_screen_render#20 ) call render_screen_swap - to:main::@32 -main::@32: scope:[main] from main::@31 - (byte) level_bcd#45 ← phi( main::@31/(byte) level_bcd#59 ) - (byte) level#41 ← phi( main::@31/(byte) level#55 ) - (dword) score_bcd#35 ← phi( main::@31/(dword) score_bcd#48 ) - (word) lines_bcd#35 ← phi( main::@31/(word) lines_bcd#48 ) - (byte) current_movedown_counter#24 ← phi( main::@31/(byte) current_movedown_counter#33 ) - (byte) keyboard_modifiers#30 ← phi( main::@31/(byte) keyboard_modifiers#38 ) - (byte) keyboard_events_size#33 ← phi( main::@31/(byte) keyboard_events_size#44 ) - (byte) render_screen_showing#17 ← phi( main::@31/(byte) render_screen_showing#26 ) - (byte) current_piece_char#34 ← phi( main::@31/(byte) current_piece_char#51 ) - (byte) current_ypos#46 ← phi( main::@31/(byte) current_ypos#60 ) - (byte) current_xpos#62 ← phi( main::@31/(byte) current_xpos#81 ) - (byte*) current_piece_gfx#49 ← phi( main::@31/(byte*) current_piece_gfx#67 ) - (byte) current_orientation#48 ← phi( main::@31/(byte) current_orientation#61 ) - (byte*) current_piece#39 ← phi( main::@31/(byte*) current_piece#53 ) - (byte) current_movedown_slow#51 ← phi( main::@31/(byte) current_movedown_slow#65 ) - (byte) render_screen_show#15 ← phi( main::@31/(byte) render_screen_show#4 ) - (byte) render_screen_render#16 ← phi( main::@31/(byte) render_screen_render#4 ) + to:main::@40 +main::@40: scope:[main] from main::@39 + (byte) level_bcd#67 ← phi( main::@39/(byte) level_bcd#77 ) + (byte) level#63 ← phi( main::@39/(byte) level#75 ) + (dword) score_bcd#56 ← phi( main::@39/(dword) score_bcd#66 ) + (word) lines_bcd#56 ← phi( main::@39/(word) lines_bcd#67 ) + (byte) current_movedown_counter#41 ← phi( main::@39/(byte) current_movedown_counter#45 ) + (byte) keyboard_modifiers#37 ← phi( main::@39/(byte) keyboard_modifiers#44 ) + (byte) keyboard_events_size#43 ← phi( main::@39/(byte) keyboard_events_size#53 ) + (byte) render_screen_showing#25 ← phi( main::@39/(byte) render_screen_showing#30 ) + (byte) game_over#54 ← phi( main::@39/(byte) game_over#65 ) + (byte) current_ypos#70 ← phi( main::@39/(byte) current_ypos#77 ) + (byte) current_xpos#91 ← phi( main::@39/(byte) current_xpos#102 ) + (byte*) current_piece_gfx#77 ← phi( main::@39/(byte*) current_piece_gfx#90 ) + (byte) current_orientation#71 ← phi( main::@39/(byte) current_orientation#78 ) + (byte) current_piece_char#62 ← phi( main::@39/(byte) current_piece_char#74 ) + (byte*) current_piece#64 ← phi( main::@39/(byte*) current_piece#72 ) + (byte) current_movedown_slow#73 ← phi( main::@39/(byte) current_movedown_slow#81 ) + (byte) render_screen_show#16 ← phi( main::@39/(byte) render_screen_show#4 ) + (byte) render_screen_render#16 ← phi( main::@39/(byte) render_screen_render#4 ) (byte) render_screen_render#6 ← (byte) render_screen_render#16 - (byte) render_screen_show#6 ← (byte) render_screen_show#15 - to:main::@1 + (byte) render_screen_show#6 ← (byte) render_screen_show#16 + to:main::@12 main::@return: scope:[main] from main::@1 - (byte) level_bcd#20 ← phi( main::@1/(byte) level_bcd#33 ) - (byte) level#19 ← phi( main::@1/(byte) level#30 ) - (dword) score_bcd#14 ← phi( main::@1/(dword) score_bcd#26 ) - (word) lines_bcd#15 ← phi( main::@1/(word) lines_bcd#26 ) - (byte) current_movedown_counter#12 ← phi( main::@1/(byte) current_movedown_counter#19 ) + (byte) level_bcd#24 ← phi( main::@1/(byte) level_bcd#40 ) + (byte) level#23 ← phi( main::@1/(byte) level#37 ) + (dword) score_bcd#18 ← phi( main::@1/(dword) score_bcd#33 ) + (word) lines_bcd#19 ← phi( main::@1/(word) lines_bcd#33 ) + (byte) current_movedown_counter#16 ← phi( main::@1/(byte) current_movedown_counter#26 ) (byte) keyboard_modifiers#16 ← phi( main::@1/(byte) keyboard_modifiers#24 ) (byte) keyboard_events_size#19 ← phi( main::@1/(byte) keyboard_events_size#27 ) (byte) render_screen_showing#9 ← phi( main::@1/(byte) render_screen_showing#13 ) - (byte) current_piece_char#15 ← phi( main::@1/(byte) current_piece_char#24 ) - (byte) current_ypos#21 ← phi( main::@1/(byte) current_ypos#37 ) - (byte) current_xpos#27 ← phi( main::@1/(byte) current_xpos#45 ) - (byte*) current_piece_gfx#20 ← phi( main::@1/(byte*) current_piece_gfx#34 ) - (byte) current_orientation#24 ← phi( main::@1/(byte) current_orientation#39 ) - (byte*) current_piece#16 ← phi( main::@1/(byte*) current_piece#28 ) - (byte) current_movedown_slow#23 ← phi( main::@1/(byte) current_movedown_slow#38 ) + (byte) game_over#19 ← phi( main::@1/(byte) game_over#31 ) + (byte) current_ypos#25 ← phi( main::@1/(byte) current_ypos#46 ) + (byte) current_xpos#31 ← phi( main::@1/(byte) current_xpos#55 ) + (byte*) current_piece_gfx#24 ← phi( main::@1/(byte*) current_piece_gfx#42 ) + (byte) current_orientation#28 ← phi( main::@1/(byte) current_orientation#47 ) + (byte) current_piece_char#19 ← phi( main::@1/(byte) current_piece_char#33 ) + (byte*) current_piece#20 ← phi( main::@1/(byte*) current_piece#37 ) + (byte) current_movedown_slow#27 ← phi( main::@1/(byte) current_movedown_slow#45 ) (byte) render_screen_render#17 ← phi( main::@1/(byte) render_screen_render#25 ) - (byte) render_screen_show#16 ← phi( main::@1/(byte) render_screen_show#23 ) - (byte) render_screen_show#7 ← (byte) render_screen_show#16 + (byte) render_screen_show#17 ← phi( main::@1/(byte) render_screen_show#24 ) + (byte) render_screen_show#7 ← (byte) render_screen_show#17 (byte) render_screen_render#7 ← (byte) render_screen_render#17 - (byte) current_movedown_slow#12 ← (byte) current_movedown_slow#23 - (byte*) current_piece#7 ← (byte*) current_piece#16 - (byte) current_orientation#10 ← (byte) current_orientation#24 - (byte*) current_piece_gfx#9 ← (byte*) current_piece_gfx#20 - (byte) current_xpos#10 ← (byte) current_xpos#27 - (byte) current_ypos#7 ← (byte) current_ypos#21 - (byte) current_piece_char#6 ← (byte) current_piece_char#15 + (byte) current_movedown_slow#14 ← (byte) current_movedown_slow#27 + (byte*) current_piece#9 ← (byte*) current_piece#20 + (byte) current_piece_char#8 ← (byte) current_piece_char#19 + (byte) current_orientation#12 ← (byte) current_orientation#28 + (byte*) current_piece_gfx#11 ← (byte*) current_piece_gfx#24 + (byte) current_xpos#12 ← (byte) current_xpos#31 + (byte) current_ypos#9 ← (byte) current_ypos#25 + (byte) game_over#9 ← (byte) game_over#19 (byte) render_screen_showing#4 ← (byte) render_screen_showing#9 (byte) keyboard_events_size#8 ← (byte) keyboard_events_size#19 (byte) keyboard_modifiers#8 ← (byte) keyboard_modifiers#16 - (byte) current_movedown_counter#5 ← (byte) current_movedown_counter#12 - (word) lines_bcd#6 ← (word) lines_bcd#15 - (dword) score_bcd#6 ← (dword) score_bcd#14 - (byte) level#8 ← (byte) level#19 - (byte) level_bcd#9 ← (byte) level_bcd#20 + (byte) current_movedown_counter#7 ← (byte) current_movedown_counter#16 + (word) lines_bcd#8 ← (word) lines_bcd#19 + (dword) score_bcd#8 ← (dword) score_bcd#18 + (byte) level#10 ← (byte) level#23 + (byte) level_bcd#11 ← (byte) level_bcd#24 return to:@return -@36: scope:[] from @29 - (byte) irq_raster_next#18 ← phi( @29/(byte) irq_raster_next#19 ) - (byte) irq_cnt#17 ← phi( @29/(byte) irq_cnt#19 ) - (byte) irq_sprite_ptr#15 ← phi( @29/(byte) irq_sprite_ptr#16 ) - (byte) level_bcd#34 ← phi( @29/(byte) level_bcd#48 ) - (byte) level#31 ← phi( @29/(byte) level#44 ) - (dword) score_bcd#27 ← phi( @29/(dword) score_bcd#38 ) - (word) lines_bcd#27 ← phi( @29/(word) lines_bcd#38 ) - (byte) current_movedown_counter#20 ← phi( @29/(byte) current_movedown_counter#27 ) - (byte) keyboard_modifiers#25 ← phi( @29/(byte) keyboard_modifiers#33 ) - (byte) keyboard_events_size#28 ← phi( @29/(byte) keyboard_events_size#36 ) - (byte) render_screen_showing#14 ← phi( @29/(byte) render_screen_showing#20 ) - (byte) current_piece_char#25 ← phi( @29/(byte) current_piece_char#37 ) - (byte) current_ypos#38 ← phi( @29/(byte) current_ypos#50 ) - (byte) current_xpos#46 ← phi( @29/(byte) current_xpos#65 ) - (byte*) current_piece_gfx#35 ← phi( @29/(byte*) current_piece_gfx#52 ) - (byte) current_orientation#40 ← phi( @29/(byte) current_orientation#51 ) - (byte*) current_piece#29 ← phi( @29/(byte*) current_piece#42 ) - (byte) current_movedown_slow#39 ← phi( @29/(byte) current_movedown_slow#54 ) - (byte) render_screen_render#26 ← phi( @29/(byte) render_screen_render#36 ) - (byte) render_screen_show#24 ← phi( @29/(byte) render_screen_show#32 ) - (byte) irq_sprite_ypos#8 ← phi( @29/(byte) irq_sprite_ypos#15 ) +@37: scope:[] from @30 + (byte) irq_cnt#17 ← phi( @30/(byte) irq_cnt#19 ) + (byte) irq_sprite_ptr#14 ← phi( @30/(byte) irq_sprite_ptr#17 ) + (byte) level_bcd#41 ← phi( @30/(byte) level_bcd#55 ) + (byte) level#38 ← phi( @30/(byte) level#51 ) + (dword) score_bcd#34 ← phi( @30/(dword) score_bcd#45 ) + (word) lines_bcd#34 ← phi( @30/(word) lines_bcd#45 ) + (byte) current_movedown_counter#27 ← phi( @30/(byte) current_movedown_counter#34 ) + (byte) keyboard_modifiers#25 ← phi( @30/(byte) keyboard_modifiers#32 ) + (byte) keyboard_events_size#28 ← phi( @30/(byte) keyboard_events_size#35 ) + (byte) render_screen_showing#14 ← phi( @30/(byte) render_screen_showing#19 ) + (byte) game_over#32 ← phi( @30/(byte) game_over#42 ) + (byte) current_ypos#47 ← phi( @30/(byte) current_ypos#61 ) + (byte) current_xpos#56 ← phi( @30/(byte) current_xpos#75 ) + (byte*) current_piece_gfx#43 ← phi( @30/(byte*) current_piece_gfx#61 ) + (byte) current_orientation#48 ← phi( @30/(byte) current_orientation#60 ) + (byte) current_piece_char#34 ← phi( @30/(byte) current_piece_char#47 ) + (byte*) current_piece#38 ← phi( @30/(byte*) current_piece#52 ) + (byte) current_movedown_slow#46 ← phi( @30/(byte) current_movedown_slow#61 ) + (byte) render_screen_render#26 ← phi( @30/(byte) render_screen_render#36 ) + (byte) render_screen_show#25 ← phi( @30/(byte) render_screen_show#34 ) + (byte) irq_raster_next#10 ← phi( @30/(byte) irq_raster_next#17 ) + (byte) irq_sprite_ypos#9 ← phi( @30/(byte) irq_sprite_ypos#14 ) call main - to:@38 -@38: scope:[] from @36 - (byte) level_bcd#21 ← phi( @36/(byte) level_bcd#9 ) - (byte) level#20 ← phi( @36/(byte) level#8 ) - (dword) score_bcd#15 ← phi( @36/(dword) score_bcd#6 ) - (word) lines_bcd#16 ← phi( @36/(word) lines_bcd#6 ) - (byte) current_movedown_counter#13 ← phi( @36/(byte) current_movedown_counter#5 ) - (byte) keyboard_modifiers#17 ← phi( @36/(byte) keyboard_modifiers#8 ) - (byte) keyboard_events_size#20 ← phi( @36/(byte) keyboard_events_size#8 ) - (byte) render_screen_showing#10 ← phi( @36/(byte) render_screen_showing#4 ) - (byte) current_piece_char#16 ← phi( @36/(byte) current_piece_char#6 ) - (byte) current_ypos#22 ← phi( @36/(byte) current_ypos#7 ) - (byte) current_xpos#28 ← phi( @36/(byte) current_xpos#10 ) - (byte*) current_piece_gfx#21 ← phi( @36/(byte*) current_piece_gfx#9 ) - (byte) current_orientation#25 ← phi( @36/(byte) current_orientation#10 ) - (byte*) current_piece#17 ← phi( @36/(byte*) current_piece#7 ) - (byte) current_movedown_slow#24 ← phi( @36/(byte) current_movedown_slow#12 ) - (byte) render_screen_render#18 ← phi( @36/(byte) render_screen_render#7 ) - (byte) render_screen_show#17 ← phi( @36/(byte) render_screen_show#7 ) - (byte) render_screen_show#8 ← (byte) render_screen_show#17 + to:@39 +@39: scope:[] from @37 + (byte) level_bcd#25 ← phi( @37/(byte) level_bcd#11 ) + (byte) level#24 ← phi( @37/(byte) level#10 ) + (dword) score_bcd#19 ← phi( @37/(dword) score_bcd#8 ) + (word) lines_bcd#20 ← phi( @37/(word) lines_bcd#8 ) + (byte) current_movedown_counter#17 ← phi( @37/(byte) current_movedown_counter#7 ) + (byte) keyboard_modifiers#17 ← phi( @37/(byte) keyboard_modifiers#8 ) + (byte) keyboard_events_size#20 ← phi( @37/(byte) keyboard_events_size#8 ) + (byte) render_screen_showing#10 ← phi( @37/(byte) render_screen_showing#4 ) + (byte) game_over#20 ← phi( @37/(byte) game_over#9 ) + (byte) current_ypos#26 ← phi( @37/(byte) current_ypos#9 ) + (byte) current_xpos#32 ← phi( @37/(byte) current_xpos#12 ) + (byte*) current_piece_gfx#25 ← phi( @37/(byte*) current_piece_gfx#11 ) + (byte) current_orientation#29 ← phi( @37/(byte) current_orientation#12 ) + (byte) current_piece_char#20 ← phi( @37/(byte) current_piece_char#8 ) + (byte*) current_piece#21 ← phi( @37/(byte*) current_piece#9 ) + (byte) current_movedown_slow#28 ← phi( @37/(byte) current_movedown_slow#14 ) + (byte) render_screen_render#18 ← phi( @37/(byte) render_screen_render#7 ) + (byte) render_screen_show#18 ← phi( @37/(byte) render_screen_show#7 ) + (byte) render_screen_show#8 ← (byte) render_screen_show#18 (byte) render_screen_render#8 ← (byte) render_screen_render#18 - (byte) current_movedown_slow#13 ← (byte) current_movedown_slow#24 - (byte*) current_piece#8 ← (byte*) current_piece#17 - (byte) current_orientation#11 ← (byte) current_orientation#25 - (byte*) current_piece_gfx#10 ← (byte*) current_piece_gfx#21 - (byte) current_xpos#11 ← (byte) current_xpos#28 - (byte) current_ypos#8 ← (byte) current_ypos#22 - (byte) current_piece_char#7 ← (byte) current_piece_char#16 + (byte) current_movedown_slow#15 ← (byte) current_movedown_slow#28 + (byte*) current_piece#10 ← (byte*) current_piece#21 + (byte) current_piece_char#9 ← (byte) current_piece_char#20 + (byte) current_orientation#13 ← (byte) current_orientation#29 + (byte*) current_piece_gfx#12 ← (byte*) current_piece_gfx#25 + (byte) current_xpos#13 ← (byte) current_xpos#32 + (byte) current_ypos#10 ← (byte) current_ypos#26 + (byte) game_over#10 ← (byte) game_over#20 (byte) render_screen_showing#5 ← (byte) render_screen_showing#10 (byte) keyboard_events_size#9 ← (byte) keyboard_events_size#20 (byte) keyboard_modifiers#9 ← (byte) keyboard_modifiers#17 - (byte) current_movedown_counter#6 ← (byte) current_movedown_counter#13 - (word) lines_bcd#7 ← (word) lines_bcd#16 - (dword) score_bcd#7 ← (dword) score_bcd#15 - (byte) level#9 ← (byte) level#20 - (byte) level_bcd#10 ← (byte) level_bcd#21 + (byte) current_movedown_counter#8 ← (byte) current_movedown_counter#17 + (word) lines_bcd#9 ← (word) lines_bcd#20 + (dword) score_bcd#9 ← (dword) score_bcd#19 + (byte) level#11 ← (byte) level#24 + (byte) level_bcd#12 ← (byte) level_bcd#25 to:@end -@end: scope:[] from @38 +@end: scope:[] from @39 SYMBOL TABLE SSA (byte~) $0 (byte*~) $1 -(byte/signed word/word/dword/signed dword/signed byte~) $10 -(byte/signed byte/word/signed word/dword/signed dword~) $11 -(byte/signed word/word/dword/signed dword/signed byte~) $12 -(byte/signed byte/word/signed word/dword/signed dword~) $13 -(byte/signed word/word/dword/signed dword/signed byte~) $14 -(byte/signed byte/word/signed word/dword/signed dword~) $15 -(byte/signed word/word/dword/signed dword/signed byte~) $16 -(byte/signed byte/word/signed word/dword/signed dword~) $17 -(byte/signed word/word/dword/signed dword/signed byte~) $18 -(word~) $19 +(byte/signed byte/word/signed word/dword/signed dword~) $10 +(byte/signed word/word/dword/signed dword/signed byte~) $11 +(byte/signed byte/word/signed word/dword/signed dword~) $12 +(byte/signed word/word/dword/signed dword/signed byte~) $13 +(byte/signed byte/word/signed word/dword/signed dword~) $14 +(byte/signed word/word/dword/signed dword/signed byte~) $15 +(byte/signed byte/word/signed word/dword/signed dword~) $16 +(byte/signed word/word/dword/signed dword/signed byte~) $17 +(byte/signed byte/word/signed word/dword/signed dword~) $18 +(byte/signed word/word/dword/signed dword/signed byte~) $19 (byte*~) $2 -(word~) $20 -(word~) $21 +(byte/signed byte/word/signed word/dword/signed dword~) $20 +(byte/signed word/word/dword/signed dword/signed byte~) $21 (word~) $22 (word~) $23 (word~) $24 (word~) $25 -(byte/signed word/word/dword/signed dword~) $26 +(word~) $26 +(word~) $27 +(word~) $28 +(byte/signed word/word/dword/signed dword~) $29 (byte~) $3 -(byte~) $4 -(byte/signed byte/word/signed word/dword/signed dword~) $5 -(byte/signed word/word/dword/signed dword/signed byte~) $6 -(byte/signed byte/word/signed word/dword/signed dword~) $7 -(byte/signed word/word/dword/signed dword/signed byte~) $8 -(byte/signed byte/word/signed word/dword/signed dword~) $9 +(byte/signed word/word/dword/signed dword~) $4 +(byte/signed word/word/dword/signed dword~) $5 +(byte~) $6 +(byte/signed word/word/dword/signed dword~) $7 +(byte/signed byte/word/signed word/dword/signed dword~) $8 +(byte/signed word/word/dword/signed dword/signed byte~) $9 (label) @12 (label) @14 (label) @22 (label) @23 (label) @25 -(label) @29 -(label) @36 +(label) @30 (label) @37 (label) @38 +(label) @39 (label) @5 (label) @9 (label) @begin @@ -3564,20 +3883,20 @@ SYMBOL TABLE SSA (byte[]) PIECES_START_X#0 (byte[]) PIECES_START_Y (byte[]) PIECES_START_Y#0 -(byte[$18]) PIECE_I -(byte[$18]) PIECE_I#0 -(byte[$14]) PIECE_J -(byte[$14]) PIECE_J#0 -(byte[$12]) PIECE_L -(byte[$12]) PIECE_L#0 -(byte[$16]) PIECE_O -(byte[$16]) PIECE_O#0 -(byte[$8]) PIECE_S -(byte[$8]) PIECE_S#0 -(byte[$6]) PIECE_T -(byte[$6]) PIECE_T#0 -(byte[$10]) PIECE_Z -(byte[$10]) PIECE_Z#0 +(byte[$21]) PIECE_I +(byte[$21]) PIECE_I#0 +(byte[$17]) PIECE_J +(byte[$17]) PIECE_J#0 +(byte[$15]) PIECE_L +(byte[$15]) PIECE_L#0 +(byte[$19]) PIECE_O +(byte[$19]) PIECE_O#0 +(byte[$11]) PIECE_S +(byte[$11]) PIECE_S#0 +(byte[$9]) PIECE_T +(byte[$9]) PIECE_T#0 +(byte[$13]) PIECE_Z +(byte[$13]) PIECE_Z#0 (byte) PINK (byte) PINK#0 (byte*) PLAYFIELD_CHARSET @@ -3660,6 +3979,8 @@ SYMBOL TABLE SSA (byte*) SPRITES_EXPAND_X#0 (byte*) SPRITES_EXPAND_Y (byte*) SPRITES_EXPAND_Y#0 +(byte) SPRITES_FIRST_YPOS +(byte) SPRITES_FIRST_YPOS#0 (byte*) SPRITES_MC (byte*) SPRITES_MC#0 (byte*) SPRITES_MC1 @@ -3745,7 +4066,18 @@ SYMBOL TABLE SSA (byte) current_movedown_counter#46 (byte) current_movedown_counter#47 (byte) current_movedown_counter#48 +(byte) current_movedown_counter#49 (byte) current_movedown_counter#5 +(byte) current_movedown_counter#50 +(byte) current_movedown_counter#51 +(byte) current_movedown_counter#52 +(byte) current_movedown_counter#53 +(byte) current_movedown_counter#54 +(byte) current_movedown_counter#55 +(byte) current_movedown_counter#56 +(byte) current_movedown_counter#57 +(byte) current_movedown_counter#58 +(byte) current_movedown_counter#59 (byte) current_movedown_counter#6 (byte) current_movedown_counter#7 (byte) current_movedown_counter#8 @@ -3832,7 +4164,18 @@ SYMBOL TABLE SSA (byte) current_movedown_slow#78 (byte) current_movedown_slow#79 (byte) current_movedown_slow#8 +(byte) current_movedown_slow#80 +(byte) current_movedown_slow#81 +(byte) current_movedown_slow#82 +(byte) current_movedown_slow#83 +(byte) current_movedown_slow#84 +(byte) current_movedown_slow#85 +(byte) current_movedown_slow#86 +(byte) current_movedown_slow#87 +(byte) current_movedown_slow#88 +(byte) current_movedown_slow#89 (byte) current_movedown_slow#9 +(byte) current_movedown_slow#90 (byte) current_orientation (byte) current_orientation#0 (byte) current_orientation#1 @@ -3909,8 +4252,22 @@ SYMBOL TABLE SSA (byte) current_orientation#74 (byte) current_orientation#75 (byte) current_orientation#76 +(byte) current_orientation#77 +(byte) current_orientation#78 +(byte) current_orientation#79 (byte) current_orientation#8 +(byte) current_orientation#80 +(byte) current_orientation#81 +(byte) current_orientation#82 +(byte) current_orientation#83 +(byte) current_orientation#84 +(byte) current_orientation#85 +(byte) current_orientation#86 +(byte) current_orientation#87 +(byte) current_orientation#88 +(byte) current_orientation#89 (byte) current_orientation#9 +(byte) current_orientation#90 (byte*) current_piece (byte*) current_piece#0 (byte*) current_piece#1 @@ -3983,12 +4340,27 @@ SYMBOL TABLE SSA (byte*) current_piece#70 (byte*) current_piece#71 (byte*) current_piece#72 +(byte*) current_piece#73 +(byte*) current_piece#74 +(byte*) current_piece#75 +(byte*) current_piece#76 +(byte*) current_piece#77 +(byte*) current_piece#78 +(byte*) current_piece#79 (byte*) current_piece#8 +(byte*) current_piece#80 +(byte*) current_piece#81 +(byte*) current_piece#82 +(byte*) current_piece#83 +(byte*) current_piece#84 +(byte*) current_piece#85 +(byte*) current_piece#86 (byte*) current_piece#9 (byte) current_piece_char (byte) current_piece_char#0 (byte) current_piece_char#1 (byte) current_piece_char#10 +(byte) current_piece_char#100 (byte) current_piece_char#11 (byte) current_piece_char#12 (byte) current_piece_char#13 @@ -4072,12 +4444,38 @@ SYMBOL TABLE SSA (byte) current_piece_char#84 (byte) current_piece_char#85 (byte) current_piece_char#86 +(byte) current_piece_char#87 +(byte) current_piece_char#88 +(byte) current_piece_char#89 (byte) current_piece_char#9 +(byte) current_piece_char#90 +(byte) current_piece_char#91 +(byte) current_piece_char#92 +(byte) current_piece_char#93 +(byte) current_piece_char#94 +(byte) current_piece_char#95 +(byte) current_piece_char#96 +(byte) current_piece_char#97 +(byte) current_piece_char#98 +(byte) current_piece_char#99 (byte*) current_piece_gfx (byte*) current_piece_gfx#0 (byte*) current_piece_gfx#1 (byte*) current_piece_gfx#10 +(byte*) current_piece_gfx#100 +(byte*) current_piece_gfx#101 +(byte*) current_piece_gfx#102 +(byte*) current_piece_gfx#103 +(byte*) current_piece_gfx#104 +(byte*) current_piece_gfx#105 +(byte*) current_piece_gfx#106 +(byte*) current_piece_gfx#107 +(byte*) current_piece_gfx#108 +(byte*) current_piece_gfx#109 (byte*) current_piece_gfx#11 +(byte*) current_piece_gfx#110 +(byte*) current_piece_gfx#111 +(byte*) current_piece_gfx#112 (byte*) current_piece_gfx#12 (byte*) current_piece_gfx#13 (byte*) current_piece_gfx#14 @@ -4173,6 +4571,7 @@ SYMBOL TABLE SSA (byte*) current_piece_gfx#96 (byte*) current_piece_gfx#97 (byte*) current_piece_gfx#98 +(byte*) current_piece_gfx#99 (byte) current_xpos (byte) current_xpos#0 (byte) current_xpos#1 @@ -4186,8 +4585,22 @@ SYMBOL TABLE SSA (byte) current_xpos#106 (byte) current_xpos#107 (byte) current_xpos#108 +(byte) current_xpos#109 (byte) current_xpos#11 +(byte) current_xpos#110 +(byte) current_xpos#111 +(byte) current_xpos#112 +(byte) current_xpos#113 +(byte) current_xpos#114 +(byte) current_xpos#115 +(byte) current_xpos#116 +(byte) current_xpos#117 +(byte) current_xpos#118 +(byte) current_xpos#119 (byte) current_xpos#12 +(byte) current_xpos#120 +(byte) current_xpos#121 +(byte) current_xpos#122 (byte) current_xpos#13 (byte) current_xpos#14 (byte) current_xpos#15 @@ -4366,7 +4779,107 @@ SYMBOL TABLE SSA (byte) current_ypos#80 (byte) current_ypos#81 (byte) current_ypos#82 +(byte) current_ypos#83 +(byte) current_ypos#84 +(byte) current_ypos#85 +(byte) current_ypos#86 +(byte) current_ypos#87 +(byte) current_ypos#88 +(byte) current_ypos#89 (byte) current_ypos#9 +(byte) current_ypos#90 +(byte) current_ypos#91 +(byte) current_ypos#92 +(byte) current_ypos#93 +(byte) current_ypos#94 +(byte) current_ypos#95 +(byte) current_ypos#96 +(byte) game_over +(byte) game_over#0 +(byte) game_over#1 +(byte) game_over#10 +(byte) game_over#11 +(byte) game_over#12 +(byte) game_over#13 +(byte) game_over#14 +(byte) game_over#15 +(byte) game_over#16 +(byte) game_over#17 +(byte) game_over#18 +(byte) game_over#19 +(byte) game_over#2 +(byte) game_over#20 +(byte) game_over#21 +(byte) game_over#22 +(byte) game_over#23 +(byte) game_over#24 +(byte) game_over#25 +(byte) game_over#26 +(byte) game_over#27 +(byte) game_over#28 +(byte) game_over#29 +(byte) game_over#3 +(byte) game_over#30 +(byte) game_over#31 +(byte) game_over#32 +(byte) game_over#33 +(byte) game_over#34 +(byte) game_over#35 +(byte) game_over#36 +(byte) game_over#37 +(byte) game_over#38 +(byte) game_over#39 +(byte) game_over#4 +(byte) game_over#40 +(byte) game_over#41 +(byte) game_over#42 +(byte) game_over#43 +(byte) game_over#44 +(byte) game_over#45 +(byte) game_over#46 +(byte) game_over#47 +(byte) game_over#48 +(byte) game_over#49 +(byte) game_over#5 +(byte) game_over#50 +(byte) game_over#51 +(byte) game_over#52 +(byte) game_over#53 +(byte) game_over#54 +(byte) game_over#55 +(byte) game_over#56 +(byte) game_over#57 +(byte) game_over#58 +(byte) game_over#59 +(byte) game_over#6 +(byte) game_over#60 +(byte) game_over#61 +(byte) game_over#62 +(byte) game_over#63 +(byte) game_over#64 +(byte) game_over#65 +(byte) game_over#66 +(byte) game_over#67 +(byte) game_over#68 +(byte) game_over#69 +(byte) game_over#7 +(byte) game_over#70 +(byte) game_over#71 +(byte) game_over#72 +(byte) game_over#73 +(byte) game_over#74 +(byte) game_over#75 +(byte) game_over#76 +(byte) game_over#77 +(byte) game_over#78 +(byte) game_over#79 +(byte) game_over#8 +(byte) game_over#80 +(byte) game_over#81 +(byte) game_over#82 +(byte) game_over#83 +(byte) game_over#84 +(byte) game_over#9 (byte) irq_cnt (byte) irq_cnt#0 (byte) irq_cnt#1 @@ -4407,6 +4920,7 @@ SYMBOL TABLE SSA (byte) irq_raster_next#21 (byte) irq_raster_next#22 (byte) irq_raster_next#23 +(byte) irq_raster_next#24 (byte) irq_raster_next#3 (byte) irq_raster_next#4 (byte) irq_raster_next#5 @@ -4425,6 +4939,7 @@ SYMBOL TABLE SSA (byte) irq_sprite_ptr#15 (byte) irq_sprite_ptr#16 (byte) irq_sprite_ptr#17 +(byte) irq_sprite_ptr#18 (byte) irq_sprite_ptr#2 (byte) irq_sprite_ptr#3 (byte) irq_sprite_ptr#4 @@ -4451,6 +4966,7 @@ SYMBOL TABLE SSA (byte) irq_sprite_ypos#21 (byte) irq_sprite_ypos#22 (byte) irq_sprite_ypos#23 +(byte) irq_sprite_ypos#24 (byte) irq_sprite_ypos#3 (byte) irq_sprite_ypos#4 (byte) irq_sprite_ypos#5 @@ -4696,6 +5212,8 @@ SYMBOL TABLE SSA (byte) keyboard_events_size#78 (byte) keyboard_events_size#79 (byte) keyboard_events_size#8 +(byte) keyboard_events_size#80 +(byte) keyboard_events_size#81 (byte) keyboard_events_size#9 (byte[8]) keyboard_matrix_col_bitmask (byte[8]) keyboard_matrix_col_bitmask#0 @@ -4774,6 +5292,8 @@ SYMBOL TABLE SSA (byte) keyboard_modifiers#59 (byte) keyboard_modifiers#6 (byte) keyboard_modifiers#60 +(byte) keyboard_modifiers#61 +(byte) keyboard_modifiers#62 (byte) keyboard_modifiers#7 (byte) keyboard_modifiers#8 (byte) keyboard_modifiers#9 @@ -4865,11 +5385,26 @@ SYMBOL TABLE SSA (byte) level#83 (byte) level#84 (byte) level#85 +(byte) level#86 +(byte) level#87 +(byte) level#88 +(byte) level#89 (byte) level#9 +(byte) level#90 +(byte) level#91 +(byte) level#92 +(byte) level#93 +(byte) level#94 +(byte) level#95 +(byte) level#96 (byte) level_bcd (byte) level_bcd#0 (byte) level_bcd#1 (byte) level_bcd#10 +(byte) level_bcd#100 +(byte) level_bcd#101 +(byte) level_bcd#102 +(byte) level_bcd#103 (byte) level_bcd#11 (byte) level_bcd#12 (byte) level_bcd#13 @@ -4960,6 +5495,13 @@ SYMBOL TABLE SSA (byte) level_bcd#90 (byte) level_bcd#91 (byte) level_bcd#92 +(byte) level_bcd#93 +(byte) level_bcd#94 +(byte) level_bcd#95 +(byte) level_bcd#96 +(byte) level_bcd#97 +(byte) level_bcd#98 +(byte) level_bcd#99 (word) lines_bcd (word) lines_bcd#0 (word) lines_bcd#1 @@ -5040,28 +5582,31 @@ SYMBOL TABLE SSA (word) lines_bcd#78 (word) lines_bcd#79 (word) lines_bcd#8 +(word) lines_bcd#80 +(word) lines_bcd#81 +(word) lines_bcd#82 +(word) lines_bcd#83 +(word) lines_bcd#84 +(word) lines_bcd#85 +(word) lines_bcd#86 +(word) lines_bcd#87 +(word) lines_bcd#88 +(word) lines_bcd#89 (word) lines_bcd#9 +(word) lines_bcd#90 (void()) main() -(byte~) main::$11 (byte~) main::$12 -(byte~) main::$13 +(bool~) main::$13 (byte~) main::$14 (bool~) main::$15 (bool~) main::$16 (bool~) main::$8 +(byte~) main::$9 (label) main::@1 -(label) main::@13 -(label) main::@15 -(label) main::@16 -(label) main::@17 -(label) main::@18 -(label) main::@19 +(label) main::@11 +(label) main::@12 (label) main::@2 -(label) main::@20 -(label) main::@21 -(label) main::@22 (label) main::@23 -(label) main::@24 (label) main::@25 (label) main::@26 (label) main::@27 @@ -5070,23 +5615,30 @@ SYMBOL TABLE SSA (label) main::@30 (label) main::@31 (label) main::@32 +(label) main::@33 +(label) main::@34 +(label) main::@35 +(label) main::@36 +(label) main::@37 +(label) main::@38 +(label) main::@39 (label) main::@4 +(label) main::@40 (label) main::@5 (label) main::@6 (label) main::@7 +(label) main::@8 +(label) main::@9 (label) main::@return (byte) main::key_event (byte) main::key_event#0 (byte) main::key_event#1 -(byte) main::key_event#2 (byte) main::render (byte) main::render#0 (byte) main::render#1 (byte) main::render#2 (byte) main::render#3 (byte) main::render#4 -(byte) main::render#5 -(byte) main::render#6 (byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) (byte*~) play_collision::$0 (byte~) play_collision::$1 @@ -5169,6 +5721,7 @@ SYMBOL TABLE SSA (byte) play_collision::orientation#2 (byte) play_collision::orientation#3 (byte) play_collision::orientation#4 +(byte) play_collision::orientation#5 (byte*) play_collision::piece_gfx (byte*) play_collision::piece_gfx#0 (byte*) play_collision::piece_gfx#1 @@ -5197,6 +5750,8 @@ SYMBOL TABLE SSA (byte) play_collision::return#12 (byte) play_collision::return#13 (byte) play_collision::return#14 +(byte) play_collision::return#15 +(byte) play_collision::return#16 (byte) play_collision::return#2 (byte) play_collision::return#3 (byte) play_collision::return#4 @@ -5212,6 +5767,7 @@ SYMBOL TABLE SSA (byte) play_collision::xpos#11 (byte) play_collision::xpos#12 (byte) play_collision::xpos#13 +(byte) play_collision::xpos#14 (byte) play_collision::xpos#2 (byte) play_collision::xpos#3 (byte) play_collision::xpos#4 @@ -5226,6 +5782,7 @@ SYMBOL TABLE SSA (byte) play_collision::ypos#2 (byte) play_collision::ypos#3 (byte) play_collision::ypos#4 +(byte) play_collision::ypos#5 (byte) play_collision::ypos2 (byte) play_collision::ypos2#0 (byte) play_collision::ypos2#1 @@ -5478,6 +6035,41 @@ SYMBOL TABLE SSA (byte) play_move_rotate::return#4 (byte) play_move_rotate::return#5 (byte) play_move_rotate::return#6 +(byte()) play_movement((byte) play_movement::key_event) +(byte~) play_movement::$0 +(bool~) play_movement::$1 +(bool~) play_movement::$2 +(byte~) play_movement::$3 +(byte~) play_movement::$4 +(label) play_movement::@1 +(label) play_movement::@2 +(label) play_movement::@5 +(label) play_movement::@6 +(label) play_movement::@7 +(label) play_movement::@return +(byte) play_movement::key_event +(byte) play_movement::key_event#0 +(byte) play_movement::key_event#1 +(byte) play_movement::key_event#2 +(byte) play_movement::key_event#3 +(byte) play_movement::key_event#4 +(byte) play_movement::render +(byte) play_movement::render#0 +(byte) play_movement::render#1 +(byte) play_movement::render#2 +(byte) play_movement::render#3 +(byte) play_movement::render#4 +(byte) play_movement::render#5 +(byte) play_movement::render#6 +(byte) play_movement::render#7 +(byte) play_movement::render#8 +(byte) play_movement::return +(byte) play_movement::return#0 +(byte) play_movement::return#1 +(byte) play_movement::return#2 +(byte) play_movement::return#3 +(byte) play_movement::return#4 +(byte) play_movement::return#5 (byte()) play_remove_lines() (byte~) play_remove_lines::$0 (byte/signed word/word/dword/signed dword~) play_remove_lines::$1 @@ -5579,10 +6171,16 @@ SYMBOL TABLE SSA (byte~) play_spawn_current::$2 (byte~) play_spawn_current::$3 (byte*~) play_spawn_current::$4 +(byte~) play_spawn_current::$5 +(bool~) play_spawn_current::$6 +(bool~) play_spawn_current::$7 (label) play_spawn_current::@1 +(label) play_spawn_current::@10 (label) play_spawn_current::@2 (label) play_spawn_current::@3 -(label) play_spawn_current::@7 +(label) play_spawn_current::@4 +(label) play_spawn_current::@8 +(label) play_spawn_current::@9 (label) play_spawn_current::@return (byte) play_spawn_current::piece_idx (byte) play_spawn_current::piece_idx#0 @@ -5619,8 +6217,8 @@ SYMBOL TABLE SSA (byte[$3]) playfield#0 (byte*[PLAYFIELD_LINES#0]) playfield_lines (byte*[PLAYFIELD_LINES#0]) playfield_lines#0 -(byte[$26]) playfield_lines_idx -(byte[$26]) playfield_lines_idx#0 +(byte[$29]) playfield_lines_idx +(byte[$29]) playfield_lines_idx#0 (void()) render_bcd((byte*) render_bcd::screen , (word) render_bcd::offset , (byte) render_bcd::bcd , (byte) render_bcd::only_low) (byte*~) render_bcd::$0 (bool~) render_bcd::$1 @@ -6032,6 +6630,8 @@ SYMBOL TABLE SSA (byte) render_screen_render#60 (byte) render_screen_render#61 (byte) render_screen_render#62 +(byte) render_screen_render#63 +(byte) render_screen_render#64 (byte) render_screen_render#7 (byte) render_screen_render#8 (byte) render_screen_render#9 @@ -6090,6 +6690,8 @@ SYMBOL TABLE SSA (byte) render_screen_show#55 (byte) render_screen_show#56 (byte) render_screen_show#57 +(byte) render_screen_show#58 +(byte) render_screen_show#59 (byte) render_screen_show#6 (byte) render_screen_show#7 (byte) render_screen_show#8 @@ -6136,6 +6738,8 @@ SYMBOL TABLE SSA (byte) render_screen_showing#43 (byte) render_screen_showing#44 (byte) render_screen_showing#45 +(byte) render_screen_showing#46 +(byte) render_screen_showing#47 (byte) render_screen_showing#5 (byte) render_screen_showing#6 (byte) render_screen_showing#7 @@ -6297,7 +6901,18 @@ SYMBOL TABLE SSA (dword) score_bcd#73 (dword) score_bcd#74 (dword) score_bcd#75 +(dword) score_bcd#76 +(dword) score_bcd#77 +(dword) score_bcd#78 +(dword) score_bcd#79 (dword) score_bcd#8 +(dword) score_bcd#80 +(dword) score_bcd#81 +(dword) score_bcd#82 +(dword) score_bcd#83 +(dword) score_bcd#84 +(dword) score_bcd#85 +(dword) score_bcd#86 (dword) score_bcd#9 (byte*[PLAYFIELD_LINES#0]) screen_lines_1 (byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 @@ -6332,24 +6947,23 @@ SYMBOL TABLE SSA (byte) sprites_init::xpos#1 (byte) sprites_init::xpos#2 interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -(bool~) sprites_irq::$0 +(byte/signed word/word/dword/signed dword~) sprites_irq::$0 (bool~) sprites_irq::$1 (bool~) sprites_irq::$2 -(byte~) sprites_irq::$3 -(byte~) sprites_irq::$4 -(bool~) sprites_irq::$5 -(bool~) sprites_irq::$6 +(bool~) sprites_irq::$3 +(bool~) sprites_irq::$4 +(byte~) sprites_irq::$5 (label) sprites_irq::@1 -(label) sprites_irq::@10 +(label) sprites_irq::@11 (label) sprites_irq::@12 -(label) sprites_irq::@13 +(label) sprites_irq::@15 (label) sprites_irq::@2 (label) sprites_irq::@3 (label) sprites_irq::@4 (label) sprites_irq::@5 -(label) sprites_irq::@6 (label) sprites_irq::@7 (label) sprites_irq::@8 +(label) sprites_irq::@9 (label) sprites_irq::@return (byte) sprites_irq::ptr (byte) sprites_irq::ptr#0 @@ -6359,11 +6973,9 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() (byte) sprites_irq::ptr#4 (byte) sprites_irq::ptr#5 (byte) sprites_irq::ptr#6 -(byte) sprites_irq::raster_next -(byte) sprites_irq::raster_next#0 -(byte) sprites_irq::raster_next#1 -(byte) sprites_irq::raster_next#2 -(byte) sprites_irq::raster_next#3 +(byte) sprites_irq::raster_sprite_gfx_modify +(byte) sprites_irq::raster_sprite_gfx_modify#0 +(byte) sprites_irq::raster_sprite_gfx_modify#1 (label) sprites_irq::toSpritePtr2 (word~) sprites_irq::toSpritePtr2_$0 (word) sprites_irq::toSpritePtr2_$0#0 @@ -6413,11 +7025,11 @@ Inversing boolean not (bool~) keyboard_event_scan::$28 ← (byte~) keyboard_even Inversing boolean not (bool~) render_bcd::$2 ← (byte) render_bcd::only_low#6 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) render_bcd::$1 ← (byte) render_bcd::only_low#6 == (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) render_moving::$7 ← (byte) render_moving::current_cell#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) render_moving::$6 ← (byte) render_moving::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) render_moving::$9 ← (byte) render_moving::xpos#3 >= (byte) PLAYFIELD_COLS#0 from (bool~) render_moving::$8 ← (byte) render_moving::xpos#3 < (byte) PLAYFIELD_COLS#0 -Inversing boolean not (bool~) sprites_irq::$6 ← (byte~) sprites_irq::$4 != (byte/signed byte/word/signed word/dword/signed dword) 3 from (bool~) sprites_irq::$5 ← (byte~) sprites_irq::$4 == (byte/signed byte/word/signed word/dword/signed dword) 3 +Inversing boolean not (bool~) play_movement::$2 ← (byte) game_over#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_movement::$1 ← (byte) game_over#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) play_move_down::$1 ← (byte) play_move_down::key_event#1 != (byte) KEY_SPACE#0 from (bool~) play_move_down::$0 ← (byte) play_move_down::key_event#1 == (byte) KEY_SPACE#0 Inversing boolean not (bool~) play_move_down::$4 ← (byte~) play_move_down::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_move_down::$3 ← (byte~) play_move_down::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) play_move_down::$8 ← (byte) current_movedown_counter#8 < (byte) current_movedown_slow#15 from (bool~) play_move_down::$7 ← (byte) current_movedown_counter#8 >= (byte) current_movedown_slow#15 -Inversing boolean not (bool~) play_move_down::$6 ← (byte) current_movedown_counter#9 < (byte) current_movedown_fast#0 from (bool~) play_move_down::$5 ← (byte) current_movedown_counter#9 >= (byte) current_movedown_fast#0 +Inversing boolean not (bool~) play_move_down::$8 ← (byte) current_movedown_counter#12 < (byte) current_movedown_slow#19 from (bool~) play_move_down::$7 ← (byte) current_movedown_counter#12 >= (byte) current_movedown_slow#19 +Inversing boolean not (bool~) play_move_down::$6 ← (byte) current_movedown_counter#13 < (byte) current_movedown_fast#0 from (bool~) play_move_down::$5 ← (byte) current_movedown_counter#13 >= (byte) current_movedown_fast#0 Inversing boolean not (bool~) play_move_down::$10 ← (byte) play_move_down::movedown#6 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_move_down::$9 ← (byte) play_move_down::movedown#6 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) play_move_leftright::$10 ← (byte~) play_move_leftright::$8 != (byte) COLLISION_NONE#0 from (bool~) play_move_leftright::$9 ← (byte~) play_move_leftright::$8 == (byte) COLLISION_NONE#0 Inversing boolean not (bool~) play_move_leftright::$2 ← (byte) play_move_leftright::key_event#2 != (byte) KEY_DOT#0 from (bool~) play_move_leftright::$1 ← (byte) play_move_leftright::key_event#2 == (byte) KEY_DOT#0 @@ -6428,31 +7040,34 @@ Inversing boolean not (bool~) play_collision::$6 ← (byte) play_collision::ypos Inversing boolean not (bool~) play_collision::$9 ← (byte~) play_collision::$7 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_collision::$8 ← (byte~) play_collision::$7 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) play_collision::$11 ← (byte) play_collision::col#4 < (byte) PLAYFIELD_COLS#0 from (bool~) play_collision::$10 ← (byte) play_collision::col#4 >= (byte) PLAYFIELD_COLS#0 Inversing boolean not (bool~) play_collision::$13 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::col#5) == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_collision::$12 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::col#5) != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) play_lock_current::$2 ← *((byte*) current_piece_gfx#15 + (byte) play_lock_current::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_lock_current::$1 ← *((byte*) current_piece_gfx#15 + (byte) play_lock_current::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) play_lock_current::$2 ← *((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_lock_current::$1 ← *((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) play_spawn_current::$7 ← (byte~) play_spawn_current::$5 != (byte) COLLISION_PLAYFIELD#0 from (bool~) play_spawn_current::$6 ← (byte~) play_spawn_current::$5 == (byte) COLLISION_PLAYFIELD#0 Inversing boolean not (bool~) play_remove_lines::$7 ← (byte) play_remove_lines::c#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_remove_lines::$6 ← (byte) play_remove_lines::c#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) play_remove_lines::$10 ← (byte) play_remove_lines::full#2 != (byte/signed byte/word/signed word/dword/signed dword) 1 from (bool~) play_remove_lines::$9 ← (byte) play_remove_lines::full#2 == (byte/signed byte/word/signed word/dword/signed dword) 1 Inversing boolean not (bool~) play_update_score::$1 ← (byte) play_update_score::removed#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_update_score::$0 ← (byte) play_update_score::removed#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) play_update_score::$8 ← (byte) play_update_score::lines_before#0 == (byte) play_update_score::lines_after#0 from (bool~) play_update_score::$7 ← (byte) play_update_score::lines_before#0 != (byte) play_update_score::lines_after#0 Inversing boolean not (bool~) play_increase_level::$3 ← (byte~) play_increase_level::$1 != (byte/signed byte/word/signed word/dword/signed dword) 10 from (bool~) play_increase_level::$2 ← (byte~) play_increase_level::$1 == (byte/signed byte/word/signed word/dword/signed dword) 10 -Inversing boolean not (bool~) main::$16 ← (byte) main::render#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$15 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) main::$16 ← (byte) main::render#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$15 ← (byte) main::render#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias candidate removed (volatile)(byte) render_screen_showing#1 = (byte) render_screen_show#11 (byte) render_screen_showing#6 (byte) render_screen_showing#2 -Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#23 (byte) irq_raster_next#22 (byte) irq_raster_next#21 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 -Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $4 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#16 (byte) irq_sprite_ptr#15 -Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$3 (byte) irq_sprite_ptr#1 -Alias (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#97 (byte*) current_piece_gfx#98 (byte*) current_piece_gfx#96 (byte*) current_piece_gfx#95 (byte*) current_piece_gfx#94 (byte*) current_piece_gfx#93 (byte*) current_piece_gfx#92 (byte*) current_piece_gfx#86 (byte*) current_piece_gfx#80 (byte*) current_piece_gfx#70 (byte*) current_piece_gfx#62 (byte*) current_piece_gfx#52 -Alias (byte) current_xpos#102 = (byte) current_xpos#107 (byte) current_xpos#108 (byte) current_xpos#106 (byte) current_xpos#105 (byte) current_xpos#104 (byte) current_xpos#103 (byte) current_xpos#98 (byte) current_xpos#93 (byte) current_xpos#85 (byte) current_xpos#75 (byte) current_xpos#65 (byte) current_xpos#46 -Alias (byte) current_ypos#38 = (byte) current_ypos#81 (byte) current_ypos#82 (byte) current_ypos#80 (byte) current_ypos#79 (byte) current_ypos#78 (byte) current_ypos#77 (byte) current_ypos#76 (byte) current_ypos#72 (byte) current_ypos#67 (byte) current_ypos#61 (byte) current_ypos#56 (byte) current_ypos#50 -Alias (byte) current_piece_char#25 = (byte) current_piece_char#85 (byte) current_piece_char#86 (byte) current_piece_char#84 (byte) current_piece_char#83 (byte) current_piece_char#82 (byte) current_piece_char#81 (byte) current_piece_char#80 (byte) current_piece_char#73 (byte) current_piece_char#66 (byte) current_piece_char#54 (byte) current_piece_char#44 (byte) current_piece_char#37 +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte/signed word/word/dword/signed dword~) $4 (byte) irq_raster_next#0 (byte) irq_raster_next#24 (byte) irq_raster_next#23 (byte) irq_raster_next#22 (byte) irq_raster_next#20 (byte) irq_raster_next#17 (byte) irq_raster_next#10 +Alias candidate removed (volatile)(byte) irq_sprite_ypos#0 = (byte/signed word/word/dword/signed dword~) $5 (byte) irq_sprite_ypos#24 (byte) irq_sprite_ypos#22 (byte) irq_sprite_ypos#21 (byte) irq_sprite_ypos#18 (byte) irq_sprite_ypos#14 (byte) irq_sprite_ypos#9 +Alias candidate removed (volatile)(byte) irq_sprite_ptr#0 = (byte/signed word/word/dword/signed dword~) $7 (byte) irq_sprite_ptr#18 (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#14 +Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0 +Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$5 (byte) irq_sprite_ptr#1 +Alias (byte) current_piece_char#100 = (byte) current_piece_char#99 (byte) current_piece_char#98 (byte) current_piece_char#97 (byte) current_piece_char#96 (byte) current_piece_char#95 (byte) current_piece_char#91 (byte) current_piece_char#86 (byte) current_piece_char#77 (byte) current_piece_char#65 (byte) current_piece_char#55 (byte) current_piece_char#47 (byte) current_piece_char#34 +Alias (byte*) current_piece_gfx#104 = (byte*) current_piece_gfx#111 (byte*) current_piece_gfx#112 (byte*) current_piece_gfx#110 (byte*) current_piece_gfx#109 (byte*) current_piece_gfx#108 (byte*) current_piece_gfx#107 (byte*) current_piece_gfx#99 (byte*) current_piece_gfx#91 (byte*) current_piece_gfx#80 (byte*) current_piece_gfx#71 (byte*) current_piece_gfx#61 (byte*) current_piece_gfx#43 +Alias (byte) current_xpos#104 = (byte) current_xpos#121 (byte) current_xpos#122 (byte) current_xpos#120 (byte) current_xpos#119 (byte) current_xpos#118 (byte) current_xpos#117 (byte) current_xpos#114 (byte) current_xpos#111 (byte) current_xpos#95 (byte) current_xpos#85 (byte) current_xpos#75 (byte) current_xpos#56 +Alias (byte) current_ypos#47 = (byte) current_ypos#95 (byte) current_ypos#96 (byte) current_ypos#94 (byte) current_ypos#93 (byte) current_ypos#92 (byte) current_ypos#91 (byte) current_ypos#88 (byte) current_ypos#85 (byte) current_ypos#78 (byte) current_ypos#71 (byte) current_ypos#66 (byte) current_ypos#61 Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1 Alias (byte) KEY_MODIFIER_SHIFT#0 = (byte~) $0 Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 Alias (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#3 (byte) keyboard_event_scan::row#8 (byte) keyboard_event_scan::row#7 Alias (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#7 (byte) keyboard_event_scan::keycode#12 (byte) keyboard_event_scan::keycode#3 -Alias (byte) keyboard_events_size#29 = (byte) keyboard_events_size#37 (byte) keyboard_events_size#45 (byte) keyboard_events_size#61 +Alias (byte) keyboard_events_size#29 = (byte) keyboard_events_size#36 (byte) keyboard_events_size#44 (byte) keyboard_events_size#62 Alias (byte) keyboard_event_scan::row_scan#0 = (byte~) keyboard_event_scan::$0 (byte) keyboard_event_scan::row_scan#4 Alias (byte) keyboard_event_scan::keycode#1 = (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$2 -Alias (byte) keyboard_events_size#10 = (byte) keyboard_events_size#21 (byte) keyboard_events_size#38 (byte) keyboard_events_size#22 (byte) keyboard_events_size#11 (byte) keyboard_events_size#12 +Alias (byte) keyboard_events_size#10 = (byte) keyboard_events_size#21 (byte) keyboard_events_size#37 (byte) keyboard_events_size#22 (byte) keyboard_events_size#11 (byte) keyboard_events_size#12 Alias (byte) keyboard_event_scan::row_scan#1 = (byte) keyboard_event_scan::row_scan#6 (byte) keyboard_event_scan::row_scan#8 (byte) keyboard_event_scan::row_scan#2 (byte) keyboard_event_scan::row_scan#9 (byte) keyboard_event_scan::row_scan#7 Alias (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#8 (byte) keyboard_event_scan::col#6 (byte) keyboard_event_scan::col#4 (byte) keyboard_event_scan::col#7 (byte) keyboard_event_scan::col#5 Alias (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#13 (byte) keyboard_event_scan::keycode#8 (byte) keyboard_event_scan::keycode#9 (byte) keyboard_event_scan::keycode#5 (byte) keyboard_event_scan::keycode#6 @@ -6461,21 +7076,21 @@ Alias (byte) keyboard_event_scan::event_type#0 = (byte~) keyboard_event_scan::$9 Alias (byte) keyboard_event_scan::row_scan#3 = (byte) keyboard_event_scan::row_scan#5 Alias (byte) keyboard_event_scan::row#6 = (byte) keyboard_event_scan::row#9 Alias (byte) keyboard_event_scan::keycode#15 = (byte) keyboard_event_scan::keycode#2 -Alias (byte) keyboard_events_size#30 = (byte) keyboard_events_size#62 -Alias (byte) keyboard_events_size#55 = (byte) keyboard_events_size#75 (byte) keyboard_events_size#72 (byte) keyboard_events_size#71 +Alias (byte) keyboard_events_size#30 = (byte) keyboard_events_size#63 +Alias (byte) keyboard_events_size#55 = (byte) keyboard_events_size#77 (byte) keyboard_events_size#74 (byte) keyboard_events_size#73 Alias (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#7 Alias (byte) keyboard_modifiers#1 = (byte) keyboard_modifiers#18 (byte) keyboard_modifiers#10 Alias (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#8 Alias (byte) keyboard_modifiers#11 = (byte) keyboard_modifiers#19 (byte) keyboard_modifiers#26 -Alias (byte) keyboard_events_size#63 = (byte) keyboard_events_size#64 (byte) keyboard_events_size#68 +Alias (byte) keyboard_events_size#64 = (byte) keyboard_events_size#65 (byte) keyboard_events_size#69 Alias (byte) keyboard_modifiers#2 = (byte~) keyboard_event_scan::$17 Alias (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#9 Alias (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#20 (byte) keyboard_modifiers#27 -Alias (byte) keyboard_events_size#46 = (byte) keyboard_events_size#47 (byte) keyboard_events_size#56 +Alias (byte) keyboard_events_size#45 = (byte) keyboard_events_size#46 (byte) keyboard_events_size#56 Alias (byte) keyboard_modifiers#3 = (byte~) keyboard_event_scan::$21 Alias (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#3 Alias (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#21 (byte) keyboard_modifiers#28 (byte) keyboard_modifiers#22 -Alias (byte) keyboard_events_size#23 = (byte) keyboard_events_size#31 (byte) keyboard_events_size#39 (byte) keyboard_events_size#24 +Alias (byte) keyboard_events_size#23 = (byte) keyboard_events_size#31 (byte) keyboard_events_size#38 (byte) keyboard_events_size#24 Alias (byte) keyboard_modifiers#4 = (byte~) keyboard_event_scan::$25 Alias (byte) keyboard_modifiers#5 = (byte~) keyboard_event_scan::$29 Alias (byte) keyboard_events_size#13 = (byte) keyboard_events_size#3 @@ -6484,8 +7099,8 @@ Alias (byte) keyboard_event_pressed::return#11 = (byte) keyboard_event_pressed:: Alias (byte) keyboard_events_size#14 = (byte) keyboard_events_size#25 (byte) keyboard_events_size#15 Alias (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#4 Alias (byte) keyboard_events_size#16 = (byte) keyboard_events_size#5 -Alias (byte) keyboard_events_size#0 = (byte) keyboard_events_size#78 (byte) keyboard_events_size#76 (byte) keyboard_events_size#73 (byte) keyboard_events_size#69 (byte) keyboard_events_size#65 (byte) keyboard_events_size#57 (byte) keyboard_events_size#48 (byte) keyboard_events_size#40 (byte) keyboard_events_size#36 (byte) keyboard_events_size#28 -Alias (byte) keyboard_modifiers#0 = (byte) keyboard_modifiers#59 (byte) keyboard_modifiers#57 (byte) keyboard_modifiers#55 (byte) keyboard_modifiers#53 (byte) keyboard_modifiers#49 (byte) keyboard_modifiers#45 (byte) keyboard_modifiers#39 (byte) keyboard_modifiers#34 (byte) keyboard_modifiers#33 (byte) keyboard_modifiers#25 +Alias (byte) keyboard_events_size#0 = (byte) keyboard_events_size#80 (byte) keyboard_events_size#78 (byte) keyboard_events_size#75 (byte) keyboard_events_size#70 (byte) keyboard_events_size#66 (byte) keyboard_events_size#57 (byte) keyboard_events_size#47 (byte) keyboard_events_size#39 (byte) keyboard_events_size#35 (byte) keyboard_events_size#28 +Alias (byte) keyboard_modifiers#0 = (byte) keyboard_modifiers#61 (byte) keyboard_modifiers#59 (byte) keyboard_modifiers#57 (byte) keyboard_modifiers#54 (byte) keyboard_modifiers#51 (byte) keyboard_modifiers#45 (byte) keyboard_modifiers#38 (byte) keyboard_modifiers#33 (byte) keyboard_modifiers#32 (byte) keyboard_modifiers#25 Alias (byte) sid_rnd::return#0 = (byte) sid_rnd::return#3 (byte) sid_rnd::return#1 Alias (byte*) PLAYFIELD_SPRITE_PTRS_1#0 = (byte*~) $1 Alias (byte*) PLAYFIELD_SPRITE_PTRS_2#0 = (byte*~) $2 @@ -6495,7 +7110,7 @@ Alias (byte*) render_init::li_1#0 = (byte*~) render_init::$8 Alias (byte*) render_init::li_2#0 = (byte*~) render_init::$11 Alias (byte) render_screen_show#1 = (byte) render_screen_show#9 (byte) render_screen_show#2 Alias (byte) render_screen_render#1 = (byte) render_screen_render#9 (byte) render_screen_render#2 -Alias (byte) render_screen_show#10 = (byte) render_screen_show#41 (byte) render_screen_show#33 (byte) render_screen_show#25 (byte) render_screen_show#19 (byte) render_screen_show#42 (byte) render_screen_show#34 (byte) render_screen_show#26 (byte) render_screen_show#20 +Alias (byte) render_screen_show#10 = (byte) render_screen_show#41 (byte) render_screen_show#35 (byte) render_screen_show#26 (byte) render_screen_show#19 (byte) render_screen_show#42 (byte) render_screen_show#36 (byte) render_screen_show#27 (byte) render_screen_show#20 Alias (byte*) render_show::toD0181_screen#0 = (byte*) render_show::toD0181_screen#1 Alias (byte*) render_show::toD0181_gfx#0 = (byte*) render_show::toD0181_gfx#1 Alias (byte) render_show::toD0181_return#0 = (byte) render_show::toD0181_$8#0 (byte) render_show::toD0181_return#2 (byte) render_show::toD0181_return#1 (byte) render_show::toD0181_return#3 (byte~) render_show::$2 (byte) render_show::d018val#1 @@ -6504,14 +7119,14 @@ Alias (byte*) render_show::toD0182_gfx#0 = (byte*) render_show::toD0182_gfx#1 Alias (byte) render_show::toD0182_return#0 = (byte) render_show::toD0182_$8#0 (byte) render_show::toD0182_return#2 (byte) render_show::toD0182_return#1 (byte) render_show::toD0182_return#3 (byte~) render_show::$1 (byte) render_show::d018val#2 Alias (byte) render_screen_render#11 = (byte) render_screen_render#3 (byte) render_screen_render#4 Alias (byte) render_screen_show#13 = (byte) render_screen_show#3 (byte) render_screen_show#4 -Alias (dword) score_bcd#16 = (dword) score_bcd#28 (dword) score_bcd#17 -Alias (word) lines_bcd#49 = (word) lines_bcd#60 (word) lines_bcd#50 -Alias (byte) level_bcd#77 = (byte) level_bcd#86 (byte) level_bcd#78 +Alias (dword) score_bcd#20 = (dword) score_bcd#35 (dword) score_bcd#21 +Alias (word) lines_bcd#57 = (word) lines_bcd#68 (word) lines_bcd#58 +Alias (byte) level_bcd#86 = (byte) level_bcd#94 (byte) level_bcd#87 Alias (byte*) render_score::score_bytes#0 = (byte*~) render_score::$2 (byte*) render_score::score_bytes#1 (byte*) render_score::score_bytes#2 Alias (word) render_score::score_offset#0 = (byte/signed word/word/dword/signed dword~) render_score::$4 (word) render_score::score_offset#1 (word) render_score::score_offset#2 Alias (byte*) render_score::screen#2 = (byte*) render_score::screen#3 (byte*) render_score::screen#4 (byte*) render_score::screen#5 (byte*) render_score::screen#6 (byte*) render_score::screen#7 -Alias (word) lines_bcd#17 = (word) lines_bcd#28 (word) lines_bcd#39 (word) lines_bcd#8 (word) lines_bcd#9 -Alias (byte) level_bcd#11 = (byte) level_bcd#60 (byte) level_bcd#70 (byte) level_bcd#49 (byte) level_bcd#35 (byte) level_bcd#22 +Alias (word) lines_bcd#10 = (word) lines_bcd#35 (word) lines_bcd#46 (word) lines_bcd#21 (word) lines_bcd#11 +Alias (byte) level_bcd#13 = (byte) level_bcd#68 (byte) level_bcd#78 (byte) level_bcd#56 (byte) level_bcd#42 (byte) level_bcd#26 Alias (word) render_bcd::offset#1 = (word/signed dword/dword~) render_score::$6 Alias (word) render_bcd::offset#2 = (word/signed dword/dword~) render_score::$8 Alias (word) render_score::lines_offset#0 = (byte/signed word/word/dword/signed dword/signed byte~) render_score::$11 (word) render_score::lines_offset#1 @@ -6536,175 +7151,214 @@ Alias (byte) render_playfield::i#1 = (byte) render_playfield::i#4 Alias (byte) render_moving::ypos2#0 = (byte~) render_moving::$0 Alias (byte) render_screen_render#14 = (byte) render_screen_render#23 (byte) render_screen_render#39 Alias (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#3 (byte) render_moving::ypos2#6 -Alias (byte) current_xpos#12 = (byte) current_xpos#29 (byte) current_xpos#69 -Alias (byte*) current_piece_gfx#22 = (byte*) current_piece_gfx#36 (byte*) current_piece_gfx#69 +Alias (byte) current_xpos#14 = (byte) current_xpos#33 (byte) current_xpos#79 +Alias (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#44 (byte*) current_piece_gfx#79 Alias (byte) render_moving::i#3 = (byte) render_moving::i#6 (byte) render_moving::i#5 Alias (byte) render_moving::l#4 = (byte) render_moving::l#9 (byte) render_moving::l#5 -Alias (byte) current_piece_char#38 = (byte) current_piece_char#52 (byte) current_piece_char#72 +Alias (byte) current_piece_char#48 = (byte) current_piece_char#63 (byte) current_piece_char#85 Alias (byte) render_moving::xpos#3 = (byte) render_moving::xpos#5 (byte) render_moving::xpos#6 (byte) render_moving::xpos#4 -Alias (byte) current_piece_char#17 = (byte) current_piece_char#26 (byte) current_piece_char#53 (byte) current_piece_char#8 +Alias (byte) current_piece_char#10 = (byte) current_piece_char#21 (byte) current_piece_char#35 (byte) current_piece_char#64 Alias (byte*) render_moving::screen_line#1 = (byte*) render_moving::screen_line#2 (byte*) render_moving::screen_line#3 (byte*) render_moving::screen_line#5 Alias (byte) render_moving::c#3 = (byte) render_moving::c#6 (byte) render_moving::c#4 (byte) render_moving::c#5 Alias (byte) render_moving::ypos2#10 = (byte) render_moving::ypos2#8 (byte) render_moving::ypos2#9 (byte) render_moving::ypos2#7 Alias (byte) render_moving::l#10 = (byte) render_moving::l#7 (byte) render_moving::l#8 (byte) render_moving::l#6 -Alias (byte*) current_piece_gfx#11 = (byte*) current_piece_gfx#55 (byte*) current_piece_gfx#38 (byte*) current_piece_gfx#37 +Alias (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#64 (byte*) current_piece_gfx#46 (byte*) current_piece_gfx#45 Alias (byte) render_moving::i#10 = (byte) render_moving::i#11 (byte) render_moving::i#2 (byte) render_moving::i#9 -Alias (byte) render_screen_render#43 = (byte) render_screen_render#49 (byte) render_screen_render#44 (byte) render_screen_render#45 -Alias (byte) current_xpos#82 = (byte) current_xpos#92 (byte) current_xpos#83 (byte) current_xpos#84 -Alias (byte) render_screen_show#0 = (byte) render_screen_show#56 (byte) render_screen_show#53 (byte) render_screen_show#50 (byte) render_screen_show#47 (byte) render_screen_show#43 (byte) render_screen_show#35 (byte) render_screen_show#32 (byte) render_screen_show#24 -Alias (byte) render_screen_render#0 = (byte) render_screen_render#57 (byte) render_screen_render#55 (byte) render_screen_render#53 (byte) render_screen_render#50 (byte) render_screen_render#46 (byte) render_screen_render#40 (byte) render_screen_render#36 (byte) render_screen_render#26 -Alias (byte) render_screen_showing#0 = (byte) render_screen_showing#42 (byte) render_screen_showing#39 (byte) render_screen_showing#35 (byte) render_screen_showing#31 (byte) render_screen_showing#27 (byte) render_screen_showing#21 (byte) render_screen_showing#20 (byte) render_screen_showing#14 -Alias (word) lines_bcd#0 = (word) lines_bcd#76 (word) lines_bcd#74 (word) lines_bcd#67 (word) lines_bcd#61 (word) lines_bcd#51 (word) lines_bcd#44 (word) lines_bcd#38 (word) lines_bcd#27 -Alias (dword) score_bcd#0 = (dword) score_bcd#72 (dword) score_bcd#70 (dword) score_bcd#64 (dword) score_bcd#58 (dword) score_bcd#49 (dword) score_bcd#44 (dword) score_bcd#38 (dword) score_bcd#27 -Alias (byte) level#0 = (byte) level#85 (byte) level#83 (byte) level#76 (byte) level#68 (byte) level#56 (byte) level#50 (byte) level#44 (byte) level#31 -Alias (byte) level_bcd#0 = (byte) level_bcd#89 (byte) level_bcd#87 (byte) level_bcd#79 (byte) level_bcd#71 (byte) level_bcd#61 (byte) level_bcd#54 (byte) level_bcd#48 (byte) level_bcd#34 +Alias (byte) render_screen_render#43 = (byte) render_screen_render#50 (byte) render_screen_render#44 (byte) render_screen_render#45 +Alias (byte) current_xpos#103 = (byte) current_xpos#93 (byte) current_xpos#94 (byte) current_xpos#92 +Alias (byte) render_screen_show#0 = (byte) render_screen_show#59 (byte) render_screen_show#56 (byte) render_screen_show#53 (byte) render_screen_show#48 (byte) render_screen_show#43 (byte) render_screen_show#37 (byte) render_screen_show#34 (byte) render_screen_show#25 +Alias (byte) render_screen_render#0 = (byte) render_screen_render#60 (byte) render_screen_render#58 (byte) render_screen_render#56 (byte) render_screen_render#51 (byte) render_screen_render#46 (byte) render_screen_render#40 (byte) render_screen_render#36 (byte) render_screen_render#26 +Alias (byte) game_over#0 = (byte) game_over#84 (byte) game_over#82 (byte) game_over#76 (byte) game_over#66 (byte) game_over#55 (byte) game_over#48 (byte) game_over#42 (byte) game_over#32 +Alias (byte) render_screen_showing#0 = (byte) render_screen_showing#44 (byte) render_screen_showing#41 (byte) render_screen_showing#37 (byte) render_screen_showing#31 (byte) render_screen_showing#26 (byte) render_screen_showing#20 (byte) render_screen_showing#19 (byte) render_screen_showing#14 +Alias (word) lines_bcd#0 = (word) lines_bcd#87 (word) lines_bcd#82 (word) lines_bcd#76 (word) lines_bcd#69 (word) lines_bcd#59 (word) lines_bcd#52 (word) lines_bcd#45 (word) lines_bcd#34 +Alias (dword) score_bcd#0 = (dword) score_bcd#83 (dword) score_bcd#79 (dword) score_bcd#74 (dword) score_bcd#67 (dword) score_bcd#57 (dword) score_bcd#52 (dword) score_bcd#45 (dword) score_bcd#34 +Alias (byte) level#0 = (byte) level#96 (byte) level#91 (byte) level#85 (byte) level#76 (byte) level#64 (byte) level#58 (byte) level#51 (byte) level#38 +Alias (byte) level_bcd#0 = (byte) level_bcd#100 (byte) level_bcd#95 (byte) level_bcd#88 (byte) level_bcd#79 (byte) level_bcd#69 (byte) level_bcd#62 (byte) level_bcd#55 (byte) level_bcd#41 Alias (byte) sprites_init::xpos#0 = (byte/signed word/word/dword/signed dword/signed byte~) sprites_init::$1 Alias (byte) sprites_init::s2#0 = (byte~) sprites_init::$2 Alias (byte) sprites_init::xpos#1 = (byte/signed word/word/dword/signed dword~) sprites_init::$3 Alias (byte*) PLAYFIELD_SPRITES#0 = (byte*) toSpritePtr1_sprite#0 (byte*) toSpritePtr1_sprite#1 -Alias (byte) irq_sprite_ypos#0 = (byte) irq_sprite_ypos#23 (byte) irq_sprite_ypos#21 (byte) irq_sprite_ypos#20 (byte) irq_sprite_ypos#18 (byte) irq_sprite_ypos#15 (byte) irq_sprite_ypos#8 -Alias (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#4 (byte) irq_sprite_ptr#7 (byte) irq_sprite_ptr#12 +Alias (byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $6 +Alias (byte) irq_sprite_ptr#15 = (byte) irq_sprite_ptr#5 (byte) irq_sprite_ptr#9 (byte) irq_sprite_ptr#16 Alias (byte) render_screen_showing#11 = (byte) render_screen_showing#7 -Alias (byte) irq_cnt#12 = (byte) irq_cnt#9 (byte) irq_cnt#6 (byte) irq_cnt#7 -Alias (byte) irq_raster_next#10 = (byte) irq_raster_next#14 (byte) irq_raster_next#16 (byte) irq_raster_next#11 -Alias (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#16 (byte) irq_sprite_ypos#5 (byte) irq_sprite_ypos#12 +Alias (byte) irq_cnt#10 = (byte) irq_cnt#13 (byte) irq_cnt#7 (byte) irq_cnt#8 +Alias (byte) irq_raster_next#14 = (byte) irq_raster_next#18 (byte) irq_raster_next#21 (byte) irq_raster_next#15 +Alias (byte) irq_sprite_ypos#15 = (byte) irq_sprite_ypos#19 (byte) irq_sprite_ypos#23 (byte) irq_sprite_ypos#16 Alias (byte) sprites_irq::ptr#0 = (byte) sprites_irq::ptr#5 (byte) sprites_irq::ptr#6 +Alias (byte) irq_raster_next#11 = (byte) irq_raster_next#6 (byte) irq_raster_next#12 (byte) irq_raster_next#7 +Alias (byte) irq_cnt#1 = (byte) irq_cnt#18 (byte) irq_cnt#16 (byte) irq_cnt#14 (byte) irq_cnt#12 (byte) irq_cnt#5 (byte) irq_cnt#11 Alias (byte*) sprites_irq::toSpritePtr2_sprite#0 = (byte*) sprites_irq::toSpritePtr2_sprite#1 -Alias (byte) irq_raster_next#1 = (byte) irq_raster_next#15 (byte) irq_raster_next#12 (byte) irq_raster_next#8 -Alias (byte) irq_cnt#14 = (byte) irq_cnt#18 (byte) irq_cnt#2 (byte) irq_cnt#16 -Alias (byte) irq_sprite_ypos#1 = (byte) irq_sprite_ypos#22 (byte) irq_sprite_ypos#19 (byte) irq_sprite_ypos#17 -Alias (byte) irq_raster_next#4 = (byte) irq_raster_next#7 -Alias (byte) irq_sprite_ypos#6 = (byte) irq_sprite_ypos#9 -Alias (byte) irq_sprite_ptr#5 = (byte) irq_sprite_ptr#8 -Alias (byte) irq_cnt#1 = (byte) irq_cnt#13 -Alias (byte) sprites_irq::raster_next#0 = (byte) sprites_irq::raster_next#3 -Alias (byte) irq_cnt#10 = (byte) irq_cnt#11 -Alias (byte) irq_raster_next#13 = (byte) irq_raster_next#5 -Alias (byte) irq_sprite_ypos#13 = (byte) irq_sprite_ypos#14 -Alias (byte) irq_sprite_ptr#13 = (byte) irq_sprite_ptr#14 -Alias (byte) irq_cnt#3 = (byte) irq_cnt#5 (byte) irq_cnt#8 -Alias (byte) irq_raster_next#3 = (byte) irq_raster_next#6 (byte) irq_raster_next#9 -Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#7 (byte) irq_sprite_ypos#3 -Alias (byte) irq_sprite_ptr#3 = (byte) irq_sprite_ptr#6 (byte) irq_sprite_ptr#9 +Alias (byte) irq_raster_next#1 = (byte) irq_raster_next#19 (byte) irq_raster_next#16 (byte) irq_raster_next#13 +Alias (byte) irq_sprite_ypos#1 = (byte) irq_sprite_ypos#20 (byte) irq_sprite_ypos#17 (byte) irq_sprite_ypos#13 +Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#12 (byte) irq_sprite_ypos#6 (byte) irq_sprite_ypos#7 +Alias (byte) irq_sprite_ptr#10 = (byte) irq_sprite_ptr#13 (byte) irq_sprite_ptr#6 (byte) irq_sprite_ptr#7 +Alias (byte) irq_cnt#3 = (byte) irq_cnt#6 (byte) irq_cnt#9 +Alias (byte) irq_raster_next#4 = (byte) irq_raster_next#9 (byte) irq_raster_next#8 +Alias (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#8 (byte) irq_sprite_ypos#4 +Alias (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#8 (byte) irq_sprite_ptr#4 Alias (byte) irq_cnt#0 = (byte) irq_cnt#20 (byte) irq_cnt#19 (byte) irq_cnt#17 -Alias (byte) level#10 = (byte) level#21 +Alias (byte) level#12 = (byte) level#25 Alias (byte) play_init::b4#0 = (byte~) play_init::$4 -Alias (byte) current_movedown_slow#14 = (byte) current_movedown_slow#25 (byte) current_movedown_slow#2 +Alias (byte) current_movedown_slow#16 = (byte) current_movedown_slow#29 (byte) current_movedown_slow#2 +Alias (byte) play_move_down::return#0 = (byte) play_move_down::return#4 +Alias (byte) play_movement::render#0 = (byte) play_movement::render#4 +Alias (byte) play_movement::key_event#1 = (byte) play_movement::key_event#4 (byte) play_movement::key_event#2 (byte) play_movement::key_event#3 +Alias (byte) current_movedown_counter#1 = (byte) current_movedown_counter#9 (byte) current_movedown_counter#35 (byte) current_movedown_counter#28 (byte) current_movedown_counter#20 (byte) current_movedown_counter#19 +Alias (byte) current_ypos#0 = (byte) current_ypos#12 (byte) current_ypos#52 (byte) current_ypos#48 (byte) current_ypos#31 (byte) current_ypos#30 +Alias (word) lines_bcd#1 = (word) lines_bcd#12 (word) lines_bcd#47 (word) lines_bcd#36 (word) lines_bcd#24 (word) lines_bcd#23 +Alias (dword) score_bcd#1 = (dword) score_bcd#11 (dword) score_bcd#47 (dword) score_bcd#36 (dword) score_bcd#24 (dword) score_bcd#23 +Alias (byte) level#1 = (byte) level#13 (byte) level#53 (byte) level#40 (byte) level#28 (byte) level#27 +Alias (byte) current_movedown_slow#17 = (byte) current_movedown_slow#3 (byte) current_movedown_slow#62 (byte) current_movedown_slow#47 (byte) current_movedown_slow#32 (byte) current_movedown_slow#31 +Alias (byte) level_bcd#1 = (byte) level_bcd#14 (byte) level_bcd#57 (byte) level_bcd#43 (byte) level_bcd#29 (byte) level_bcd#28 +Alias (byte*) current_piece#1 = (byte*) current_piece#11 (byte*) current_piece#53 (byte*) current_piece#39 (byte*) current_piece#24 (byte*) current_piece#23 +Alias (byte) current_piece_char#0 = (byte) current_piece_char#11 (byte) current_piece_char#50 (byte) current_piece_char#36 (byte) current_piece_char#24 (byte) current_piece_char#23 +Alias (byte) current_orientation#1 = (byte) current_orientation#14 (byte) current_orientation#49 (byte) current_orientation#31 (byte) current_orientation#32 +Alias (byte*) current_piece_gfx#0 = (byte*) current_piece_gfx#14 (byte*) current_piece_gfx#47 (byte*) current_piece_gfx#29 (byte*) current_piece_gfx#30 +Alias (byte) current_xpos#0 = (byte) current_xpos#15 (byte) current_xpos#35 (byte) current_xpos#36 +Alias (byte) game_over#1 = (byte) game_over#11 (byte) game_over#43 (byte) game_over#33 (byte) game_over#23 (byte) game_over#22 +Alias (byte) play_movement::render#1 = (byte) play_movement::render#8 (byte) play_movement::render#5 (byte) play_movement::render#7 (byte) play_movement::return#1 +Alias (byte) play_move_leftright::return#0 = (byte) play_move_leftright::return#5 +Alias (byte) current_xpos#1 = (byte) current_xpos#16 (byte) current_xpos#37 +Alias (byte) play_move_rotate::return#0 = (byte) play_move_rotate::return#5 +Alias (byte) play_movement::render#2 = (byte) play_movement::render#6 +Alias (byte) current_orientation#15 = (byte) current_orientation#2 +Alias (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#15 +Alias (byte) play_movement::return#0 = (byte) play_movement::render#3 +Alias (byte) play_movement::return#2 = (byte) play_movement::return#4 +Alias (byte) current_movedown_counter#10 = (byte) current_movedown_counter#2 +Alias (byte) current_ypos#1 = (byte) current_ypos#13 +Alias (word) lines_bcd#13 = (word) lines_bcd#2 +Alias (dword) score_bcd#12 = (dword) score_bcd#2 +Alias (byte) level#14 = (byte) level#2 +Alias (byte) current_movedown_slow#18 = (byte) current_movedown_slow#4 +Alias (byte) level_bcd#15 = (byte) level_bcd#2 +Alias (byte*) current_piece#12 = (byte*) current_piece#2 +Alias (byte) current_piece_char#1 = (byte) current_piece_char#12 +Alias (byte) current_orientation#16 = (byte) current_orientation#3 +Alias (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#2 +Alias (byte) current_xpos#17 = (byte) current_xpos#2 +Alias (byte) game_over#12 = (byte) game_over#2 Alias (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#6 -Alias (byte) current_movedown_counter#15 = (byte) current_movedown_counter#16 (byte) current_movedown_counter#21 (byte) current_movedown_counter#9 (byte) current_movedown_counter#17 -Alias (byte) current_movedown_slow#26 = (byte) current_movedown_slow#27 (byte) current_movedown_slow#40 (byte) current_movedown_slow#41 (byte) current_movedown_slow#28 +Alias (byte) current_movedown_counter#13 = (byte) current_movedown_counter#22 (byte) current_movedown_counter#29 (byte) current_movedown_counter#23 (byte) current_movedown_counter#21 +Alias (byte) current_movedown_slow#33 = (byte) current_movedown_slow#34 (byte) current_movedown_slow#48 (byte) current_movedown_slow#49 (byte) current_movedown_slow#35 Alias (byte) play_move_down::movedown#10 = (byte) play_move_down::movedown#12 (byte) play_move_down::movedown#8 (byte) play_move_down::movedown#11 (byte) play_move_down::movedown#5 -Alias (byte) current_ypos#51 = (byte) current_ypos#52 (byte) current_ypos#62 (byte) current_ypos#63 (byte) current_ypos#53 -Alias (byte) current_xpos#70 = (byte) current_xpos#71 (byte) current_xpos#86 (byte) current_xpos#87 (byte) current_xpos#72 -Alias (byte) current_orientation#52 = (byte) current_orientation#53 (byte) current_orientation#62 (byte) current_orientation#63 (byte) current_orientation#54 -Alias (word) lines_bcd#52 = (word) lines_bcd#53 (word) lines_bcd#62 (word) lines_bcd#63 (word) lines_bcd#54 -Alias (dword) score_bcd#50 = (dword) score_bcd#51 (dword) score_bcd#59 (dword) score_bcd#60 (dword) score_bcd#52 -Alias (byte) level#57 = (byte) level#58 (byte) level#69 (byte) level#70 (byte) level#59 -Alias (byte) level_bcd#62 = (byte) level_bcd#63 (byte) level_bcd#72 (byte) level_bcd#73 (byte) level_bcd#64 -Alias (byte*) current_piece#54 = (byte*) current_piece#55 (byte*) current_piece#62 (byte*) current_piece#63 (byte*) current_piece#56 -Alias (byte*) current_piece_gfx#71 = (byte*) current_piece_gfx#72 (byte*) current_piece_gfx#81 (byte*) current_piece_gfx#82 (byte*) current_piece_gfx#73 -Alias (byte) current_piece_char#55 = (byte) current_piece_char#56 (byte) current_piece_char#67 (byte) current_piece_char#68 (byte) current_piece_char#57 +Alias (byte) current_ypos#62 = (byte) current_ypos#63 (byte) current_ypos#72 (byte) current_ypos#73 (byte) current_ypos#64 +Alias (byte) current_xpos#80 = (byte) current_xpos#81 (byte) current_xpos#96 (byte) current_xpos#97 (byte) current_xpos#82 +Alias (byte) current_orientation#61 = (byte) current_orientation#62 (byte) current_orientation#72 (byte) current_orientation#73 (byte) current_orientation#63 +Alias (word) lines_bcd#60 = (word) lines_bcd#61 (word) lines_bcd#70 (word) lines_bcd#71 (word) lines_bcd#62 +Alias (dword) score_bcd#58 = (dword) score_bcd#59 (dword) score_bcd#68 (dword) score_bcd#69 (dword) score_bcd#60 +Alias (byte) level#65 = (byte) level#66 (byte) level#77 (byte) level#78 (byte) level#67 +Alias (byte) level_bcd#70 = (byte) level_bcd#71 (byte) level_bcd#80 (byte) level_bcd#81 (byte) level_bcd#72 +Alias (byte*) current_piece#65 = (byte*) current_piece#66 (byte*) current_piece#73 (byte*) current_piece#74 (byte*) current_piece#67 +Alias (byte) current_piece_char#66 = (byte) current_piece_char#67 (byte) current_piece_char#78 (byte) current_piece_char#79 (byte) current_piece_char#68 +Alias (byte*) current_piece_gfx#81 = (byte*) current_piece_gfx#82 (byte*) current_piece_gfx#92 (byte*) current_piece_gfx#93 (byte*) current_piece_gfx#83 +Alias (byte) game_over#56 = (byte) game_over#57 (byte) game_over#67 (byte) game_over#68 (byte) game_over#58 Alias (byte) play_move_down::movedown#0 = (byte) play_move_down::movedown#4 -Alias (byte) current_movedown_counter#1 = (byte) current_movedown_counter#28 -Alias (byte) current_movedown_slow#55 = (byte) current_movedown_slow#56 -Alias (byte) current_ypos#68 = (byte) current_ypos#69 -Alias (byte) current_xpos#94 = (byte) current_xpos#95 -Alias (byte) current_orientation#68 = (byte) current_orientation#69 -Alias (word) lines_bcd#68 = (word) lines_bcd#69 -Alias (dword) score_bcd#65 = (dword) score_bcd#66 -Alias (byte) level#77 = (byte) level#78 -Alias (byte) level_bcd#80 = (byte) level_bcd#81 -Alias (byte*) current_piece#67 = (byte*) current_piece#68 -Alias (byte*) current_piece_gfx#87 = (byte*) current_piece_gfx#88 -Alias (byte) current_piece_char#74 = (byte) current_piece_char#75 +Alias (byte) current_movedown_counter#3 = (byte) current_movedown_counter#36 +Alias (byte) current_movedown_slow#63 = (byte) current_movedown_slow#64 +Alias (byte) current_ypos#79 = (byte) current_ypos#80 +Alias (byte) current_xpos#105 = (byte) current_xpos#106 +Alias (byte) current_orientation#79 = (byte) current_orientation#80 +Alias (word) lines_bcd#77 = (word) lines_bcd#78 +Alias (dword) score_bcd#75 = (dword) score_bcd#76 +Alias (byte) level#86 = (byte) level#87 +Alias (byte) level_bcd#89 = (byte) level_bcd#90 +Alias (byte*) current_piece#79 = (byte*) current_piece#80 +Alias (byte) current_piece_char#87 = (byte) current_piece_char#88 +Alias (byte*) current_piece_gfx#100 = (byte*) current_piece_gfx#101 +Alias (byte) game_over#77 = (byte) game_over#78 Alias (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#9 -Alias (byte) current_ypos#39 = (byte) current_ypos#40 -Alias (byte) current_xpos#49 = (byte) current_xpos#50 -Alias (byte) current_orientation#41 = (byte) current_orientation#42 -Alias (byte) current_movedown_counter#29 = (byte) current_movedown_counter#8 -Alias (word) lines_bcd#40 = (word) lines_bcd#41 -Alias (dword) score_bcd#40 = (dword) score_bcd#41 -Alias (byte) level#46 = (byte) level#47 -Alias (byte) current_movedown_slow#15 = (byte) current_movedown_slow#57 -Alias (byte) level_bcd#50 = (byte) level_bcd#51 -Alias (byte*) current_piece#43 = (byte*) current_piece#44 -Alias (byte*) current_piece_gfx#56 = (byte*) current_piece_gfx#57 -Alias (byte) current_piece_char#40 = (byte) current_piece_char#41 -Alias (byte) current_movedown_counter#18 = (byte) current_movedown_counter#22 -Alias (byte) current_ypos#10 = (byte) current_ypos#28 (byte) current_ypos#25 (byte) current_ypos#26 (byte) current_ypos#11 (byte) current_ypos#34 (byte) current_ypos#54 (byte) current_ypos#41 (byte) current_ypos#27 -Alias (word) lines_bcd#18 = (word) lines_bcd#19 (word) lines_bcd#29 (word) lines_bcd#55 (word) lines_bcd#42 (word) lines_bcd#32 (word) lines_bcd#43 (word) lines_bcd#30 -Alias (dword) score_bcd#18 = (dword) score_bcd#19 (dword) score_bcd#29 (dword) score_bcd#53 (dword) score_bcd#42 (dword) score_bcd#32 (dword) score_bcd#43 (dword) score_bcd#30 -Alias (byte) level#22 = (byte) level#23 (byte) level#33 (byte) level#60 (byte) level#48 (byte) level#36 (byte) level#49 (byte) level#34 -Alias (byte) current_movedown_slow#29 = (byte) current_movedown_slow#30 (byte) current_movedown_slow#42 (byte) current_movedown_slow#66 (byte) current_movedown_slow#58 (byte) current_movedown_slow#45 (byte) current_movedown_slow#59 (byte) current_movedown_slow#43 -Alias (byte) level_bcd#23 = (byte) level_bcd#24 (byte) level_bcd#36 (byte) level_bcd#65 (byte) level_bcd#52 (byte) level_bcd#39 (byte) level_bcd#53 (byte) level_bcd#37 -Alias (byte*) current_piece#18 = (byte*) current_piece#19 (byte*) current_piece#30 (byte*) current_piece#22 (byte*) current_piece#45 (byte*) current_piece#32 (byte*) current_piece#57 (byte*) current_piece#46 (byte*) current_piece#31 -Alias (byte) current_orientation#12 = (byte) current_orientation#28 (byte) current_orientation#26 (byte) current_orientation#55 (byte) current_orientation#44 (byte) current_orientation#64 (byte) current_orientation#56 (byte) current_orientation#43 (byte) current_orientation#27 -Alias (byte*) current_piece_gfx#24 = (byte*) current_piece_gfx#25 (byte*) current_piece_gfx#39 (byte*) current_piece_gfx#74 (byte*) current_piece_gfx#58 (byte*) current_piece_gfx#41 (byte*) current_piece_gfx#63 (byte*) current_piece_gfx#59 (byte*) current_piece_gfx#40 -Alias (byte) current_xpos#13 = (byte) current_xpos#32 (byte) current_xpos#30 (byte) current_xpos#73 (byte) current_xpos#52 (byte) current_xpos#58 (byte) current_xpos#74 (byte) current_xpos#51 (byte) current_xpos#31 -Alias (byte) current_piece_char#18 = (byte) current_piece_char#19 (byte) current_piece_char#27 (byte) current_piece_char#58 (byte) current_piece_char#42 (byte) current_piece_char#29 (byte) current_piece_char#59 (byte) current_piece_char#43 (byte) current_piece_char#28 +Alias (byte) current_ypos#49 = (byte) current_ypos#50 +Alias (byte) current_xpos#59 = (byte) current_xpos#60 +Alias (byte) current_orientation#50 = (byte) current_orientation#51 +Alias (byte) current_movedown_counter#12 = (byte) current_movedown_counter#37 +Alias (word) lines_bcd#48 = (word) lines_bcd#49 +Alias (dword) score_bcd#48 = (dword) score_bcd#49 +Alias (byte) level#54 = (byte) level#55 +Alias (byte) current_movedown_slow#19 = (byte) current_movedown_slow#65 +Alias (byte) level_bcd#58 = (byte) level_bcd#59 +Alias (byte*) current_piece#54 = (byte*) current_piece#55 +Alias (byte) current_piece_char#51 = (byte) current_piece_char#52 +Alias (byte*) current_piece_gfx#65 = (byte*) current_piece_gfx#66 +Alias (byte) game_over#44 = (byte) game_over#45 +Alias (byte) current_movedown_counter#24 = (byte) current_movedown_counter#30 +Alias (byte) current_ypos#14 = (byte) current_ypos#35 (byte) current_ypos#32 (byte) current_ypos#33 (byte) current_ypos#15 (byte) current_ypos#41 (byte) current_ypos#65 (byte) current_ypos#51 (byte) current_ypos#34 +Alias (word) lines_bcd#25 = (word) lines_bcd#26 (word) lines_bcd#37 (word) lines_bcd#63 (word) lines_bcd#50 (word) lines_bcd#40 (word) lines_bcd#51 (word) lines_bcd#38 +Alias (dword) score_bcd#25 = (dword) score_bcd#26 (dword) score_bcd#37 (dword) score_bcd#61 (dword) score_bcd#50 (dword) score_bcd#40 (dword) score_bcd#51 (dword) score_bcd#38 +Alias (byte) level#29 = (byte) level#30 (byte) level#41 (byte) level#68 (byte) level#56 (byte) level#44 (byte) level#57 (byte) level#42 +Alias (byte) current_movedown_slow#36 = (byte) current_movedown_slow#37 (byte) current_movedown_slow#50 (byte) current_movedown_slow#74 (byte) current_movedown_slow#66 (byte) current_movedown_slow#53 (byte) current_movedown_slow#67 (byte) current_movedown_slow#51 +Alias (byte) level_bcd#30 = (byte) level_bcd#31 (byte) level_bcd#44 (byte) level_bcd#73 (byte) level_bcd#60 (byte) level_bcd#47 (byte) level_bcd#61 (byte) level_bcd#45 +Alias (byte*) current_piece#25 = (byte*) current_piece#26 (byte*) current_piece#40 (byte*) current_piece#29 (byte*) current_piece#56 (byte*) current_piece#42 (byte*) current_piece#68 (byte*) current_piece#57 (byte*) current_piece#41 +Alias (byte) current_piece_char#25 = (byte) current_piece_char#26 (byte) current_piece_char#37 (byte) current_piece_char#69 (byte) current_piece_char#53 (byte) current_piece_char#39 (byte) current_piece_char#70 (byte) current_piece_char#54 (byte) current_piece_char#38 +Alias (byte) current_orientation#17 = (byte) current_orientation#35 (byte) current_orientation#33 (byte) current_orientation#64 (byte) current_orientation#53 (byte) current_orientation#74 (byte) current_orientation#65 (byte) current_orientation#52 (byte) current_orientation#34 +Alias (byte*) current_piece_gfx#31 = (byte*) current_piece_gfx#32 (byte*) current_piece_gfx#48 (byte*) current_piece_gfx#84 (byte*) current_piece_gfx#67 (byte*) current_piece_gfx#50 (byte*) current_piece_gfx#72 (byte*) current_piece_gfx#68 (byte*) current_piece_gfx#49 +Alias (byte) current_xpos#18 = (byte) current_xpos#40 (byte) current_xpos#38 (byte) current_xpos#83 (byte) current_xpos#62 (byte) current_xpos#68 (byte) current_xpos#84 (byte) current_xpos#61 (byte) current_xpos#39 +Alias (byte) game_over#24 = (byte) game_over#25 (byte) game_over#34 (byte) game_over#59 (byte) game_over#46 (byte) game_over#36 (byte) game_over#60 (byte) game_over#47 (byte) game_over#35 Alias (byte) play_collision::ypos#0 = (byte/signed word/word/dword/signed dword~) play_move_down::$11 -Alias (byte) play_collision::return#0 = (byte) play_collision::return#10 +Alias (byte) play_collision::return#0 = (byte) play_collision::return#11 Alias (byte) play_remove_lines::return#0 = (byte) play_remove_lines::return#3 Alias (byte) play_move_down::removed#0 = (byte~) play_move_down::$15 -Alias (word) lines_bcd#1 = (word) lines_bcd#10 (word) lines_bcd#31 -Alias (dword) score_bcd#1 = (dword) score_bcd#9 (dword) score_bcd#31 -Alias (byte) level#1 = (byte) level#11 (byte) level#35 -Alias (byte) current_movedown_slow#16 = (byte) current_movedown_slow#3 (byte) current_movedown_slow#44 -Alias (byte) level_bcd#1 = (byte) level_bcd#12 (byte) level_bcd#38 -Alias (byte*) current_piece#1 = (byte*) current_piece#9 -Alias (byte) current_orientation#1 = (byte) current_orientation#13 -Alias (byte*) current_piece_gfx#0 = (byte*) current_piece_gfx#12 -Alias (byte) current_xpos#0 = (byte) current_xpos#14 -Alias (byte) current_ypos#1 = (byte) current_ypos#12 -Alias (byte) current_piece_char#0 = (byte) current_piece_char#9 -Alias (byte) play_move_down::return#2 = (byte) play_move_down::return#4 -Alias (byte) current_movedown_counter#10 = (byte) current_movedown_counter#3 -Alias (byte) current_ypos#13 = (byte) current_ypos#2 -Alias (word) lines_bcd#11 = (word) lines_bcd#2 -Alias (dword) score_bcd#10 = (dword) score_bcd#2 -Alias (byte) level#12 = (byte) level#2 -Alias (byte) current_movedown_slow#17 = (byte) current_movedown_slow#4 -Alias (byte) level_bcd#13 = (byte) level_bcd#2 -Alias (byte*) current_piece#10 = (byte*) current_piece#2 -Alias (byte) current_orientation#14 = (byte) current_orientation#2 -Alias (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#13 -Alias (byte) current_xpos#1 = (byte) current_xpos#15 -Alias (byte) current_piece_char#1 = (byte) current_piece_char#10 -Alias (byte) current_xpos#16 = (byte) current_xpos#34 (byte) current_xpos#38 (byte) current_xpos#35 (byte) current_xpos#53 (byte) current_xpos#17 (byte) current_xpos#36 (byte) current_xpos#54 (byte) current_xpos#18 (byte) current_xpos#55 (byte) current_xpos#20 -Alias (byte) current_ypos#14 = (byte) current_ypos#30 (byte) current_ypos#31 (byte) current_ypos#15 -Alias (byte) current_orientation#15 = (byte) current_orientation#30 (byte) current_orientation#31 (byte) current_orientation#16 -Alias (byte*) current_piece#23 = (byte*) current_piece#33 (byte*) current_piece#34 (byte*) current_piece#24 +Alias (word) lines_bcd#14 = (word) lines_bcd#3 (word) lines_bcd#39 +Alias (dword) score_bcd#13 = (dword) score_bcd#3 (dword) score_bcd#39 +Alias (byte) level#15 = (byte) level#3 (byte) level#43 +Alias (byte) current_movedown_slow#20 = (byte) current_movedown_slow#5 (byte) current_movedown_slow#52 +Alias (byte) level_bcd#16 = (byte) level_bcd#3 (byte) level_bcd#46 +Alias (byte*) current_piece#13 = (byte*) current_piece#3 +Alias (byte) current_piece_char#13 = (byte) current_piece_char#2 +Alias (byte) current_orientation#18 = (byte) current_orientation#4 +Alias (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#3 +Alias (byte) current_xpos#19 = (byte) current_xpos#3 +Alias (byte) current_ypos#16 = (byte) current_ypos#3 +Alias (byte) game_over#13 = (byte) game_over#3 +Alias (byte) play_move_down::return#3 = (byte) play_move_down::return#5 +Alias (byte) current_movedown_counter#14 = (byte) current_movedown_counter#5 +Alias (byte) current_ypos#17 = (byte) current_ypos#4 +Alias (word) lines_bcd#15 = (word) lines_bcd#4 +Alias (dword) score_bcd#14 = (dword) score_bcd#4 +Alias (byte) level#16 = (byte) level#4 +Alias (byte) current_movedown_slow#21 = (byte) current_movedown_slow#6 +Alias (byte) level_bcd#17 = (byte) level_bcd#4 +Alias (byte*) current_piece#14 = (byte*) current_piece#4 +Alias (byte) current_piece_char#14 = (byte) current_piece_char#3 +Alias (byte) current_orientation#19 = (byte) current_orientation#5 +Alias (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#4 +Alias (byte) current_xpos#20 = (byte) current_xpos#4 +Alias (byte) game_over#14 = (byte) game_over#4 +Alias (byte) current_xpos#21 = (byte) current_xpos#42 (byte) current_xpos#46 (byte) current_xpos#43 (byte) current_xpos#63 (byte) current_xpos#22 (byte) current_xpos#44 (byte) current_xpos#64 (byte) current_xpos#23 (byte) current_xpos#65 (byte) current_xpos#25 +Alias (byte) current_ypos#18 = (byte) current_ypos#37 (byte) current_ypos#38 (byte) current_ypos#19 +Alias (byte) current_orientation#20 = (byte) current_orientation#37 (byte) current_orientation#38 (byte) current_orientation#21 +Alias (byte*) current_piece#30 = (byte*) current_piece#43 (byte*) current_piece#44 (byte*) current_piece#31 Alias (byte) play_collision::xpos#1 = (byte/signed word/word/dword/signed dword~) play_move_leftright::$7 -Alias (byte) play_collision::return#1 = (byte) play_collision::return#11 +Alias (byte) play_collision::return#1 = (byte) play_collision::return#12 Alias (byte) play_move_leftright::key_event#1 = (byte) play_move_leftright::key_event#2 Alias (byte) play_collision::xpos#2 = (byte/signed word/word/dword/signed dword~) play_move_leftright::$3 -Alias (byte) play_collision::return#12 = (byte) play_collision::return#2 -Alias (byte) play_move_leftright::return#1 = (byte) play_move_leftright::return#5 -Alias (byte) current_xpos#19 = (byte) current_xpos#3 -Alias (byte) current_orientation#17 = (byte) current_orientation#32 (byte) current_orientation#33 (byte) current_orientation#18 (byte) current_orientation#35 -Alias (byte) current_xpos#39 = (byte) current_xpos#56 (byte) current_xpos#57 (byte) current_xpos#40 -Alias (byte) current_ypos#32 = (byte) current_ypos#42 (byte) current_ypos#43 (byte) current_ypos#33 -Alias (byte*) current_piece#35 = (byte*) current_piece#47 (byte*) current_piece#48 (byte*) current_piece#36 -Alias (byte*) current_piece_gfx#28 = (byte*) current_piece_gfx#75 (byte*) current_piece_gfx#60 (byte*) current_piece_gfx#42 (byte*) current_piece_gfx#76 +Alias (byte) play_collision::return#13 = (byte) play_collision::return#2 +Alias (byte) play_move_leftright::return#2 = (byte) play_move_leftright::return#6 +Alias (byte) current_xpos#24 = (byte) current_xpos#6 +Alias (byte) current_orientation#22 = (byte) current_orientation#39 (byte) current_orientation#40 (byte) current_orientation#23 (byte) current_orientation#42 +Alias (byte) current_xpos#47 = (byte) current_xpos#66 (byte) current_xpos#67 (byte) current_xpos#48 +Alias (byte) current_ypos#39 = (byte) current_ypos#53 (byte) current_ypos#54 (byte) current_ypos#40 +Alias (byte*) current_piece#45 = (byte*) current_piece#58 (byte*) current_piece#59 (byte*) current_piece#46 +Alias (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#85 (byte*) current_piece_gfx#69 (byte*) current_piece_gfx#51 (byte*) current_piece_gfx#86 Alias (byte) play_move_rotate::orientation#1 = (byte/word/dword~) play_move_rotate::$5 Alias (byte) play_move_rotate::key_event#1 = (byte) play_move_rotate::key_event#2 Alias (byte) play_move_rotate::orientation#2 = (byte/word/dword~) play_move_rotate::$3 -Alias (byte) play_move_rotate::return#1 = (byte) play_move_rotate::return#5 -Alias (byte) current_orientation#19 = (byte) current_orientation#3 -Alias (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#2 -Alias (byte) play_collision::return#13 = (byte) play_collision::return#3 +Alias (byte) play_move_rotate::return#2 = (byte) play_move_rotate::return#6 +Alias (byte) current_orientation#24 = (byte) current_orientation#6 +Alias (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#5 +Alias (byte) play_collision::return#14 = (byte) play_collision::return#3 Alias (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#5 (byte) play_move_rotate::orientation#4 -Alias (byte*) current_piece#11 = (byte*) current_piece#21 (byte*) current_piece#25 -Alias (byte) current_orientation#34 = (byte) current_orientation#45 (byte) current_orientation#57 -Alias (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#43 (byte*) current_piece_gfx#61 -Alias (byte*) current_piece_gfx#3 = (byte*~) play_move_rotate::$9 -Alias (byte) current_movedown_slow#0 = (byte) current_movedown_slow#54 (byte) current_movedown_slow#39 -Alias (byte*) current_piece#0 = (byte*) current_piece#42 (byte*) current_piece#29 -Alias (byte) current_orientation#0 = (byte) current_orientation#51 (byte) current_orientation#40 -Alias (byte) current_movedown_counter#0 = (byte) current_movedown_counter#27 (byte) current_movedown_counter#20 +Alias (byte*) current_piece#15 = (byte*) current_piece#28 (byte*) current_piece#32 +Alias (byte) current_orientation#41 = (byte) current_orientation#54 (byte) current_orientation#66 +Alias (byte*) current_piece_gfx#34 = (byte*) current_piece_gfx#52 (byte*) current_piece_gfx#70 +Alias (byte*) current_piece_gfx#6 = (byte*~) play_move_rotate::$9 +Alias (byte) current_movedown_slow#0 = (byte) current_movedown_slow#61 (byte) current_movedown_slow#46 +Alias (byte*) current_piece#0 = (byte*) current_piece#52 (byte*) current_piece#38 +Alias (byte) current_orientation#0 = (byte) current_orientation#60 (byte) current_orientation#48 +Alias (byte) current_movedown_counter#0 = (byte) current_movedown_counter#34 (byte) current_movedown_counter#27 Alias (byte*) play_collision::piece_gfx#0 = (byte*~) play_collision::$0 Alias (byte) play_collision::ypos2#0 = (byte~) play_collision::$1 -Alias (byte) play_collision::col#0 = (byte) play_collision::xpos#4 +Alias (byte) play_collision::col#0 = (byte) play_collision::xpos#5 Alias (byte) play_collision::ypos2#10 = (byte) play_collision::ypos2#3 (byte) play_collision::ypos2#5 (byte) play_collision::ypos2#9 (byte) play_collision::ypos2#8 (byte) play_collision::ypos2#7 Alias (byte) play_collision::col#3 = (byte) play_collision::col#8 (byte) play_collision::col#6 (byte) play_collision::col#4 (byte) play_collision::col#5 (byte) play_collision::col#7 Alias (byte*) play_collision::playfield_line#1 = (byte*) play_collision::playfield_line#4 (byte*) play_collision::playfield_line#5 (byte*) play_collision::playfield_line#3 (byte*) play_collision::playfield_line#2 (byte*) play_collision::playfield_line#7 @@ -6712,38 +7366,47 @@ Alias (byte) play_collision::c#3 = (byte) play_collision::c#8 (byte) play_collis Alias (byte*) play_collision::piece_gfx#1 = (byte*) play_collision::piece_gfx#9 (byte*) play_collision::piece_gfx#8 (byte*) play_collision::piece_gfx#7 (byte*) play_collision::piece_gfx#6 (byte*) play_collision::piece_gfx#5 Alias (byte) play_collision::i#1 = (byte) play_collision::i#10 (byte) play_collision::i#9 (byte) play_collision::i#8 (byte) play_collision::i#7 (byte) play_collision::i#6 Alias (byte) play_collision::l#10 = (byte) play_collision::l#4 (byte) play_collision::l#9 (byte) play_collision::l#8 (byte) play_collision::l#7 (byte) play_collision::l#5 -Alias (byte) play_collision::xpos#10 = (byte) play_collision::xpos#13 (byte) play_collision::xpos#8 (byte) play_collision::xpos#12 (byte) play_collision::xpos#11 (byte) play_collision::xpos#9 -Alias (byte) play_collision::return#14 = (byte) play_collision::return#5 +Alias (byte) play_collision::xpos#10 = (byte) play_collision::xpos#14 (byte) play_collision::xpos#9 (byte) play_collision::xpos#13 (byte) play_collision::xpos#12 (byte) play_collision::xpos#11 +Alias (byte) play_collision::return#15 = (byte) play_collision::return#5 Alias (byte) play_collision::ypos2#4 = (byte) play_collision::ypos2#6 Alias (byte) play_collision::l#2 = (byte) play_collision::l#3 -Alias (byte) play_collision::xpos#6 = (byte) play_collision::xpos#7 +Alias (byte) play_collision::xpos#7 = (byte) play_collision::xpos#8 Alias (byte*) play_collision::piece_gfx#3 = (byte*) play_collision::piece_gfx#4 Alias (byte) play_collision::i#4 = (byte) play_collision::i#5 Alias (byte) play_lock_current::ypos2#0 = (byte~) play_lock_current::$0 -Alias (byte) current_piece_char#11 = (byte) current_piece_char#21 +Alias (byte) current_piece_char#15 = (byte) current_piece_char#28 Alias (byte*) play_lock_current::playfield_line#1 = (byte*) play_lock_current::playfield_line#2 Alias (byte) play_lock_current::col#3 = (byte) play_lock_current::col#4 Alias (byte) play_lock_current::c#3 = (byte) play_lock_current::c#4 -Alias (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#46 +Alias (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#55 Alias (byte) play_lock_current::i#1 = (byte) play_lock_current::i#6 Alias (byte) play_lock_current::ypos2#5 = (byte) play_lock_current::ypos2#6 Alias (byte) play_lock_current::l#4 = (byte) play_lock_current::l#5 -Alias (byte) current_xpos#76 = (byte) current_xpos#77 +Alias (byte) current_xpos#86 = (byte) current_xpos#87 Alias (byte) play_lock_current::ypos2#3 = (byte) play_lock_current::ypos2#4 Alias (byte) play_lock_current::l#2 = (byte) play_lock_current::l#3 -Alias (byte) current_xpos#42 = (byte) current_xpos#59 -Alias (byte*) current_piece_gfx#30 = (byte*) current_piece_gfx#45 +Alias (byte) current_xpos#50 = (byte) current_xpos#69 +Alias (byte*) current_piece_gfx#37 = (byte*) current_piece_gfx#54 Alias (byte) play_lock_current::i#4 = (byte) play_lock_current::i#5 -Alias (byte) current_piece_char#31 = (byte) current_piece_char#46 +Alias (byte) current_piece_char#41 = (byte) current_piece_char#57 +Alias (byte) game_over#27 = (byte) game_over#79 (byte) game_over#61 (byte) game_over#70 (byte) game_over#49 (byte) game_over#37 Alias (byte) sid_rnd::return#2 = (byte) sid_rnd::return#4 Alias (byte) play_spawn_current::piece_idx#1 = (byte~) play_spawn_current::$2 Alias (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#3 -Alias (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#4 (byte*~) play_spawn_current::$4 (byte*) current_piece_gfx#5 -Alias (byte*) current_piece#13 = (byte*) current_piece#3 (byte*) current_piece#4 -Alias (byte) current_orientation#20 = (byte) current_orientation#5 (byte) current_orientation#6 -Alias (byte) current_xpos#23 = (byte) current_xpos#5 (byte) current_xpos#6 -Alias (byte) current_ypos#18 = (byte) current_ypos#3 (byte) current_ypos#4 -Alias (byte) current_piece_char#12 = (byte) current_piece_char#2 (byte) current_piece_char#3 +Alias (byte*) current_piece_gfx#38 = (byte*) current_piece_gfx#7 (byte*~) play_spawn_current::$4 (byte*) current_piece_gfx#56 (byte*) current_piece_gfx#39 +Alias (byte) play_collision::return#10 = (byte) play_collision::return#16 +Alias (byte*) current_piece#33 = (byte*) current_piece#47 (byte*) current_piece#5 (byte*) current_piece#34 +Alias (byte) current_piece_char#29 = (byte) current_piece_char#42 (byte) current_piece_char#4 (byte) current_piece_char#30 +Alias (byte) current_orientation#43 = (byte) current_orientation#55 (byte) current_orientation#8 (byte) current_orientation#44 +Alias (byte) current_xpos#51 = (byte) current_xpos#70 (byte) current_xpos#8 (byte) current_xpos#52 +Alias (byte) current_ypos#42 = (byte) current_ypos#55 (byte) current_ypos#5 (byte) current_ypos#43 +Alias (byte*) current_piece#17 = (byte*) current_piece#6 +Alias (byte) current_piece_char#16 = (byte) current_piece_char#5 +Alias (byte) current_orientation#25 = (byte) current_orientation#9 +Alias (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#8 +Alias (byte) current_xpos#28 = (byte) current_xpos#9 +Alias (byte) current_ypos#22 = (byte) current_ypos#6 +Alias (byte) game_over#15 = (byte) game_over#6 Alias (byte) play_remove_lines::r#0 = (byte/signed word/word/dword/signed dword~) play_remove_lines::$1 Alias (byte) play_remove_lines::w#0 = (byte/signed word/word/dword/signed dword~) play_remove_lines::$3 Alias (byte) play_remove_lines::c#0 = (byte) play_remove_lines::c#2 @@ -6760,220 +7423,289 @@ Alias (byte) play_remove_lines::r#4 = (byte) play_remove_lines::r#8 (byte) play_ Alias (byte) play_remove_lines::w#2 = (byte~) play_remove_lines::$11 Alias (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#7 Alias (byte) play_remove_lines::removed#3 = (byte) play_remove_lines::removed#8 (byte) play_remove_lines::removed#5 (byte) play_remove_lines::return#1 (byte) play_remove_lines::return#4 (byte) play_remove_lines::return#2 -Alias (word) lines_bcd#12 = (word) lines_bcd#22 (word) lines_bcd#21 -Alias (dword) score_bcd#11 = (dword) score_bcd#22 (dword) score_bcd#21 -Alias (byte) level#25 = (byte) level#26 (byte) level#37 (byte) level#38 (byte) level#27 -Alias (byte) current_movedown_slow#32 = (byte) current_movedown_slow#33 (byte) current_movedown_slow#46 (byte) current_movedown_slow#47 (byte) current_movedown_slow#34 -Alias (byte) level_bcd#26 = (byte) level_bcd#27 (byte) level_bcd#40 (byte) level_bcd#41 (byte) level_bcd#28 +Alias (word) lines_bcd#16 = (word) lines_bcd#29 (word) lines_bcd#28 +Alias (dword) score_bcd#15 = (dword) score_bcd#29 (dword) score_bcd#28 +Alias (byte) level#32 = (byte) level#33 (byte) level#45 (byte) level#46 (byte) level#34 +Alias (byte) current_movedown_slow#39 = (byte) current_movedown_slow#40 (byte) current_movedown_slow#54 (byte) current_movedown_slow#55 (byte) current_movedown_slow#41 +Alias (byte) level_bcd#33 = (byte) level_bcd#34 (byte) level_bcd#48 (byte) level_bcd#49 (byte) level_bcd#35 Alias (byte) play_update_score::removed#1 = (byte) play_update_score::removed#2 Alias (byte) play_update_score::lines_before#0 = (byte~) play_update_score::$3 Alias (byte) play_update_score::lines_after#0 = (byte~) play_update_score::$6 -Alias (word) lines_bcd#23 = (word) lines_bcd#3 (word) lines_bcd#33 (word) lines_bcd#24 -Alias (dword) score_bcd#23 = (dword) score_bcd#3 (dword) score_bcd#33 (dword) score_bcd#24 -Alias (byte) level#13 = (byte) level#3 -Alias (byte) current_movedown_slow#18 = (byte) current_movedown_slow#5 -Alias (byte) level_bcd#14 = (byte) level_bcd#3 -Alias (word) lines_bcd#13 = (word) lines_bcd#4 -Alias (dword) score_bcd#12 = (dword) score_bcd#4 -Alias (byte) level#14 = (byte) level#4 -Alias (byte) current_movedown_slow#19 = (byte) current_movedown_slow#6 -Alias (byte) level_bcd#15 = (byte) level_bcd#4 -Alias (byte) level_bcd#29 = (byte) level_bcd#42 (byte) level_bcd#30 -Alias (byte) level#16 = (byte) level#71 (byte) level#5 -Alias (byte) level_bcd#17 = (byte) level_bcd#5 -Alias (byte) level#61 = (byte) level#62 -Alias (byte) current_movedown_slow#67 = (byte) current_movedown_slow#68 +Alias (word) lines_bcd#30 = (word) lines_bcd#5 (word) lines_bcd#41 (word) lines_bcd#31 +Alias (dword) score_bcd#30 = (dword) score_bcd#5 (dword) score_bcd#41 (dword) score_bcd#31 +Alias (byte) level#17 = (byte) level#5 +Alias (byte) current_movedown_slow#22 = (byte) current_movedown_slow#7 +Alias (byte) level_bcd#18 = (byte) level_bcd#5 +Alias (word) lines_bcd#17 = (word) lines_bcd#6 +Alias (dword) score_bcd#16 = (dword) score_bcd#6 +Alias (byte) level#18 = (byte) level#6 +Alias (byte) current_movedown_slow#23 = (byte) current_movedown_slow#8 +Alias (byte) level_bcd#19 = (byte) level_bcd#6 +Alias (byte) level_bcd#36 = (byte) level_bcd#50 (byte) level_bcd#37 +Alias (byte) level#20 = (byte) level#79 (byte) level#7 +Alias (byte) level_bcd#21 = (byte) level_bcd#7 +Alias (byte) level#69 = (byte) level#70 +Alias (byte) current_movedown_slow#75 = (byte) current_movedown_slow#76 Alias (byte) play_increase_level::b4#0 = (byte~) play_increase_level::$4 -Alias (byte) level#17 = (byte) level#28 (byte) level#39 (byte) level#6 -Alias (byte) current_movedown_slow#20 = (byte) current_movedown_slow#35 (byte) current_movedown_slow#48 (byte) current_movedown_slow#9 -Alias (byte) level_bcd#18 = (byte) level_bcd#31 (byte) level_bcd#43 (byte) level_bcd#7 -Alias (byte) render_screen_show#22 = (byte) render_screen_show#27 +Alias (byte) level#21 = (byte) level#35 (byte) level#47 (byte) level#8 +Alias (byte) current_movedown_slow#11 = (byte) current_movedown_slow#42 (byte) current_movedown_slow#56 (byte) current_movedown_slow#24 +Alias (byte) level_bcd#22 = (byte) level_bcd#38 (byte) level_bcd#51 (byte) level_bcd#9 +Alias (byte) render_screen_show#22 = (byte) render_screen_show#28 Alias (byte) render_screen_render#24 = (byte) render_screen_render#32 -Alias (byte) current_movedown_slow#36 = (byte) current_movedown_slow#69 (byte) current_movedown_slow#74 (byte) current_movedown_slow#61 (byte) current_movedown_slow#49 -Alias (byte*) current_piece#26 = (byte*) current_piece#64 (byte*) current_piece#69 (byte*) current_piece#59 (byte*) current_piece#49 (byte*) current_piece#37 -Alias (byte) current_orientation#36 = (byte) current_orientation#70 (byte) current_orientation#73 (byte) current_orientation#65 (byte) current_orientation#58 (byte) current_orientation#46 -Alias (byte*) current_piece_gfx#31 = (byte*) current_piece_gfx#83 (byte*) current_piece_gfx#89 (byte*) current_piece_gfx#77 (byte*) current_piece_gfx#64 (byte*) current_piece_gfx#47 -Alias (byte) current_xpos#43 = (byte) current_xpos#96 (byte) current_xpos#99 (byte) current_xpos#88 (byte) current_xpos#78 (byte) current_xpos#60 -Alias (byte) current_ypos#35 = (byte) current_ypos#70 (byte) current_ypos#73 (byte) current_ypos#64 (byte) current_ypos#57 (byte) current_ypos#44 -Alias (byte) current_piece_char#22 = (byte) current_piece_char#69 (byte) current_piece_char#76 (byte) current_piece_char#60 (byte) current_piece_char#47 (byte) current_piece_char#32 -Alias (byte) level#40 = (byte) level#79 (byte) level#84 (byte) level#72 (byte) level#63 (byte) level#45 (byte) level#73 (byte) level#64 (byte) level#52 -Alias (byte) render_screen_showing#16 = (byte) render_screen_showing#44 (byte) render_screen_showing#45 (byte) render_screen_showing#43 (byte) render_screen_showing#40 (byte) render_screen_showing#36 (byte) render_screen_showing#32 (byte) render_screen_showing#28 (byte) render_screen_showing#22 -Alias (byte) keyboard_events_size#32 = (byte) keyboard_events_size#77 (byte) keyboard_events_size#79 (byte) keyboard_events_size#74 (byte) keyboard_events_size#70 (byte) keyboard_events_size#66 (byte) keyboard_events_size#58 (byte) keyboard_events_size#49 (byte) keyboard_events_size#41 -Alias (byte) keyboard_modifiers#29 = (byte) keyboard_modifiers#58 (byte) keyboard_modifiers#60 (byte) keyboard_modifiers#56 (byte) keyboard_modifiers#54 (byte) keyboard_modifiers#50 (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#40 (byte) keyboard_modifiers#35 -Alias (byte) current_movedown_counter#23 = (byte) current_movedown_counter#47 (byte) current_movedown_counter#48 (byte) current_movedown_counter#46 (byte) current_movedown_counter#45 (byte) current_movedown_counter#41 (byte) current_movedown_counter#38 (byte) current_movedown_counter#34 (byte) current_movedown_counter#30 -Alias (word) lines_bcd#34 = (word) lines_bcd#78 (word) lines_bcd#79 (word) lines_bcd#77 (word) lines_bcd#75 (word) lines_bcd#70 (word) lines_bcd#64 (word) lines_bcd#56 (word) lines_bcd#45 -Alias (dword) score_bcd#34 = (dword) score_bcd#74 (dword) score_bcd#75 (dword) score_bcd#73 (dword) score_bcd#71 (dword) score_bcd#67 (dword) score_bcd#61 (dword) score_bcd#54 (dword) score_bcd#45 -Alias (byte) level_bcd#44 = (byte) level_bcd#91 (byte) level_bcd#92 (byte) level_bcd#90 (byte) level_bcd#88 (byte) level_bcd#82 (byte) level_bcd#74 (byte) level_bcd#66 (byte) level_bcd#56 -Alias (byte) render_screen_show#14 = (byte) render_screen_show#5 (byte) render_screen_show#54 (byte) render_screen_show#51 (byte) render_screen_show#48 (byte) render_screen_show#44 (byte) render_screen_show#36 (byte) render_screen_show#28 -Alias (byte) render_screen_render#15 = (byte) render_screen_render#5 (byte) render_screen_render#51 (byte) render_screen_render#47 (byte) render_screen_render#41 (byte) render_screen_render#28 (byte) render_screen_render#37 (byte) render_screen_render#33 -Alias (byte) current_movedown_slow#10 = (byte) current_movedown_slow#21 (byte) current_movedown_slow#70 (byte) current_movedown_slow#62 (byte) current_movedown_slow#50 -Alias (byte*) current_piece#14 = (byte*) current_piece#5 (byte*) current_piece#50 (byte*) current_piece#38 -Alias (byte) current_orientation#21 = (byte) current_orientation#7 (byte) current_orientation#59 (byte) current_orientation#47 -Alias (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#6 (byte*) current_piece_gfx#65 (byte*) current_piece_gfx#48 -Alias (byte) current_xpos#24 = (byte) current_xpos#7 (byte) current_xpos#66 (byte) current_xpos#61 -Alias (byte) current_ypos#19 = (byte) current_ypos#5 (byte) current_ypos#23 (byte) current_ypos#45 -Alias (byte) current_piece_char#13 = (byte) current_piece_char#4 (byte) current_piece_char#48 (byte) current_piece_char#33 -Alias (byte) render_screen_show#16 = (byte) render_screen_show#37 (byte) render_screen_show#23 (byte) render_screen_show#7 -Alias (byte) render_screen_showing#13 = (byte) render_screen_showing#23 (byte) render_screen_showing#9 (byte) render_screen_showing#4 -Alias (byte) keyboard_events_size#19 = (byte) keyboard_events_size#50 (byte) keyboard_events_size#27 (byte) keyboard_events_size#8 -Alias (byte) keyboard_modifiers#16 = (byte) keyboard_modifiers#41 (byte) keyboard_modifiers#24 (byte) keyboard_modifiers#8 -Alias (byte) current_movedown_counter#12 = (byte) current_movedown_counter#42 (byte) current_movedown_counter#19 (byte) current_movedown_counter#5 -Alias (byte) current_ypos#21 = (byte) current_ypos#74 (byte) current_ypos#37 (byte) current_ypos#7 -Alias (word) lines_bcd#15 = (word) lines_bcd#71 (word) lines_bcd#26 (word) lines_bcd#6 -Alias (dword) score_bcd#14 = (dword) score_bcd#68 (dword) score_bcd#26 (dword) score_bcd#6 -Alias (byte) level#19 = (byte) level#80 (byte) level#30 (byte) level#8 -Alias (byte) current_movedown_slow#12 = (byte) current_movedown_slow#77 (byte) current_movedown_slow#38 (byte) current_movedown_slow#23 -Alias (byte) level_bcd#20 = (byte) level_bcd#83 (byte) level_bcd#33 (byte) level_bcd#9 -Alias (byte*) current_piece#16 = (byte*) current_piece#70 (byte*) current_piece#28 (byte*) current_piece#7 -Alias (byte) current_orientation#10 = (byte) current_orientation#74 (byte) current_orientation#39 (byte) current_orientation#24 -Alias (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#90 (byte*) current_piece_gfx#34 (byte*) current_piece_gfx#9 -Alias (byte) current_xpos#10 = (byte) current_xpos#100 (byte) current_xpos#45 (byte) current_xpos#27 -Alias (byte) current_piece_char#15 = (byte) current_piece_char#77 (byte) current_piece_char#24 (byte) current_piece_char#6 -Alias (byte) render_screen_render#17 = (byte) render_screen_render#61 (byte) render_screen_render#25 (byte) render_screen_render#7 -Alias (byte) render_screen_show#18 = (byte) render_screen_show#38 (byte) render_screen_show#30 (byte) render_screen_show#57 (byte) render_screen_show#55 (byte) render_screen_show#52 (byte) render_screen_show#49 (byte) render_screen_show#45 (byte) render_screen_show#39 (byte) render_screen_show#29 (byte) render_screen_show#46 (byte) render_screen_show#40 (byte) render_screen_show#31 (byte) render_screen_show#21 -Alias (byte) render_screen_showing#12 = (byte) render_screen_showing#24 (byte) render_screen_showing#19 -Alias (byte) keyboard_events_size#26 = (byte) keyboard_events_size#51 (byte) keyboard_events_size#42 (byte) keyboard_events_size#35 -Alias (byte) keyboard_modifiers#23 = (byte) keyboard_modifiers#42 (byte) keyboard_modifiers#36 (byte) keyboard_modifiers#32 -Alias (byte) current_movedown_counter#14 = (byte) current_movedown_counter#43 (byte) current_movedown_counter#39 (byte) current_movedown_counter#35 (byte) current_movedown_counter#31 (byte) current_movedown_counter#26 -Alias (byte) current_ypos#36 = (byte) current_ypos#75 (byte) current_ypos#71 (byte) current_ypos#65 (byte) current_ypos#58 (byte) current_ypos#48 -Alias (word) lines_bcd#25 = (word) lines_bcd#72 (word) lines_bcd#65 (word) lines_bcd#57 (word) lines_bcd#46 (word) lines_bcd#37 -Alias (dword) score_bcd#25 = (dword) score_bcd#69 (dword) score_bcd#62 (dword) score_bcd#55 (dword) score_bcd#46 (dword) score_bcd#37 -Alias (byte) level#29 = (byte) level#81 (byte) level#74 (byte) level#65 (byte) level#53 (byte) level#43 -Alias (byte) current_movedown_slow#37 = (byte) current_movedown_slow#78 (byte) current_movedown_slow#75 (byte) current_movedown_slow#71 (byte) current_movedown_slow#63 (byte) current_movedown_slow#53 -Alias (byte) level_bcd#32 = (byte) level_bcd#84 (byte) level_bcd#75 (byte) level_bcd#67 (byte) level_bcd#57 (byte) level_bcd#47 -Alias (byte*) current_piece#27 = (byte*) current_piece#71 (byte*) current_piece#65 (byte*) current_piece#60 (byte*) current_piece#51 (byte*) current_piece#41 -Alias (byte) current_orientation#37 = (byte) current_orientation#75 (byte) current_orientation#71 (byte) current_orientation#66 (byte) current_orientation#60 (byte) current_orientation#50 -Alias (byte*) current_piece_gfx#32 = (byte*) current_piece_gfx#91 (byte*) current_piece_gfx#84 (byte*) current_piece_gfx#78 (byte*) current_piece_gfx#66 (byte*) current_piece_gfx#51 -Alias (byte) current_xpos#101 = (byte) current_xpos#97 (byte) current_xpos#89 (byte) current_xpos#79 (byte) current_xpos#64 (byte) current_xpos#44 -Alias (byte) current_piece_char#23 = (byte) current_piece_char#78 (byte) current_piece_char#70 (byte) current_piece_char#61 (byte) current_piece_char#49 (byte) current_piece_char#36 -Alias (byte) render_screen_render#19 = (byte) render_screen_render#62 (byte) render_screen_render#60 (byte) render_screen_render#59 (byte) render_screen_render#58 (byte) render_screen_render#56 (byte) render_screen_render#54 (byte) render_screen_render#52 (byte) render_screen_render#48 (byte) render_screen_render#42 (byte) render_screen_render#34 (byte) render_screen_render#27 (byte) render_screen_render#35 (byte) render_screen_render#20 -Alias (byte) render_screen_showing#17 = (byte) render_screen_showing#3 (byte) render_screen_showing#8 (byte) render_screen_showing#41 (byte) render_screen_showing#37 (byte) render_screen_showing#33 (byte) render_screen_showing#29 (byte) render_screen_showing#25 (byte) render_screen_showing#18 (byte) render_screen_showing#38 (byte) render_screen_showing#34 (byte) render_screen_showing#30 (byte) render_screen_showing#26 +Alias (byte) current_movedown_slow#43 = (byte) current_movedown_slow#77 (byte) current_movedown_slow#82 (byte) current_movedown_slow#69 (byte) current_movedown_slow#57 +Alias (byte*) current_piece#35 = (byte*) current_piece#75 (byte*) current_piece#81 (byte*) current_piece#69 (byte*) current_piece#60 (byte*) current_piece#48 +Alias (byte) current_piece_char#31 = (byte) current_piece_char#80 (byte) current_piece_char#89 (byte) current_piece_char#71 (byte) current_piece_char#58 (byte) current_piece_char#43 +Alias (byte) current_orientation#45 = (byte) current_orientation#81 (byte) current_orientation#85 (byte) current_orientation#75 (byte) current_orientation#67 (byte) current_orientation#56 +Alias (byte*) current_piece_gfx#102 = (byte*) current_piece_gfx#94 (byte*) current_piece_gfx#87 (byte*) current_piece_gfx#73 (byte*) current_piece_gfx#57 (byte*) current_piece_gfx#40 +Alias (byte) current_xpos#107 = (byte) current_xpos#112 (byte) current_xpos#98 (byte) current_xpos#88 (byte) current_xpos#71 (byte) current_xpos#53 +Alias (byte) current_ypos#44 = (byte) current_ypos#81 (byte) current_ypos#86 (byte) current_ypos#74 (byte) current_ypos#67 (byte) current_ypos#56 +Alias (byte) game_over#28 = (byte) game_over#71 (byte) game_over#80 (byte) game_over#62 (byte) game_over#50 (byte) game_over#38 +Alias (byte) level#49 = (byte) level#88 (byte) level#92 (byte) level#80 (byte) level#71 (byte) level#52 (byte) level#81 (byte) level#72 (byte) level#60 +Alias (byte) render_screen_showing#17 = (byte) render_screen_showing#46 (byte) render_screen_showing#47 (byte) render_screen_showing#45 (byte) render_screen_showing#42 (byte) render_screen_showing#38 (byte) render_screen_showing#32 (byte) render_screen_showing#27 (byte) render_screen_showing#21 +Alias (byte) keyboard_events_size#33 = (byte) keyboard_events_size#79 (byte) keyboard_events_size#81 (byte) keyboard_events_size#76 (byte) keyboard_events_size#71 (byte) keyboard_events_size#67 (byte) keyboard_events_size#58 (byte) keyboard_events_size#48 (byte) keyboard_events_size#40 +Alias (byte) keyboard_modifiers#30 = (byte) keyboard_modifiers#60 (byte) keyboard_modifiers#62 (byte) keyboard_modifiers#58 (byte) keyboard_modifiers#55 (byte) keyboard_modifiers#52 (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#39 (byte) keyboard_modifiers#34 +Alias (byte) current_movedown_counter#32 = (byte) current_movedown_counter#58 (byte) current_movedown_counter#59 (byte) current_movedown_counter#57 (byte) current_movedown_counter#53 (byte) current_movedown_counter#50 (byte) current_movedown_counter#46 (byte) current_movedown_counter#42 (byte) current_movedown_counter#38 +Alias (word) lines_bcd#43 = (word) lines_bcd#89 (word) lines_bcd#90 (word) lines_bcd#88 (word) lines_bcd#83 (word) lines_bcd#79 (word) lines_bcd#72 (word) lines_bcd#64 (word) lines_bcd#53 +Alias (dword) score_bcd#43 = (dword) score_bcd#85 (dword) score_bcd#86 (dword) score_bcd#84 (dword) score_bcd#80 (dword) score_bcd#77 (dword) score_bcd#70 (dword) score_bcd#62 (dword) score_bcd#53 +Alias (byte) level_bcd#101 = (byte) level_bcd#102 (byte) level_bcd#103 (byte) level_bcd#96 (byte) level_bcd#91 (byte) level_bcd#82 (byte) level_bcd#74 (byte) level_bcd#64 (byte) level_bcd#53 +Alias (byte) render_screen_show#14 = (byte) render_screen_show#5 (byte) render_screen_show#57 (byte) render_screen_show#54 (byte) render_screen_show#49 (byte) render_screen_show#44 (byte) render_screen_show#38 (byte) render_screen_show#30 +Alias (byte) render_screen_render#15 = (byte) render_screen_render#5 (byte) render_screen_render#52 (byte) render_screen_render#47 (byte) render_screen_render#41 (byte) render_screen_render#28 (byte) render_screen_render#37 (byte) render_screen_render#34 +Alias (byte) current_movedown_slow#12 = (byte) current_movedown_slow#25 (byte) current_movedown_slow#78 (byte) current_movedown_slow#70 (byte) current_movedown_slow#59 +Alias (byte*) current_piece#18 = (byte*) current_piece#7 (byte*) current_piece#61 (byte*) current_piece#50 +Alias (byte) current_piece_char#17 = (byte) current_piece_char#6 (byte) current_piece_char#59 (byte) current_piece_char#45 +Alias (byte) current_orientation#10 = (byte) current_orientation#26 (byte) current_orientation#68 (byte) current_orientation#58 +Alias (byte*) current_piece_gfx#22 = (byte*) current_piece_gfx#9 (byte*) current_piece_gfx#74 (byte*) current_piece_gfx#59 +Alias (byte) current_xpos#10 = (byte) current_xpos#29 (byte) current_xpos#76 (byte) current_xpos#73 +Alias (byte) current_ypos#23 = (byte) current_ypos#7 (byte) current_ypos#27 (byte) current_ypos#58 +Alias (byte) game_over#16 = (byte) game_over#7 (byte) game_over#51 (byte) game_over#40 +Alias (byte) render_screen_show#17 = (byte) render_screen_show#31 (byte) render_screen_show#24 (byte) render_screen_show#7 +Alias (byte) render_screen_showing#13 = (byte) render_screen_showing#22 (byte) render_screen_showing#9 (byte) render_screen_showing#4 +Alias (byte) keyboard_events_size#19 = (byte) keyboard_events_size#49 (byte) keyboard_events_size#27 (byte) keyboard_events_size#8 +Alias (byte) keyboard_modifiers#16 = (byte) keyboard_modifiers#40 (byte) keyboard_modifiers#24 (byte) keyboard_modifiers#8 +Alias (byte) game_over#19 = (byte) game_over#72 (byte) game_over#31 (byte) game_over#9 +Alias (byte) current_movedown_counter#16 = (byte) current_movedown_counter#54 (byte) current_movedown_counter#26 (byte) current_movedown_counter#7 +Alias (byte) current_ypos#25 = (byte) current_ypos#89 (byte) current_ypos#46 (byte) current_ypos#9 +Alias (word) lines_bcd#19 = (word) lines_bcd#84 (word) lines_bcd#33 (word) lines_bcd#8 +Alias (dword) score_bcd#18 = (dword) score_bcd#81 (dword) score_bcd#33 (dword) score_bcd#8 +Alias (byte) level#10 = (byte) level#93 (byte) level#37 (byte) level#23 +Alias (byte) current_movedown_slow#14 = (byte) current_movedown_slow#88 (byte) current_movedown_slow#45 (byte) current_movedown_slow#27 +Alias (byte) level_bcd#11 = (byte) level_bcd#97 (byte) level_bcd#40 (byte) level_bcd#24 +Alias (byte*) current_piece#20 = (byte*) current_piece#84 (byte*) current_piece#37 (byte*) current_piece#9 +Alias (byte) current_piece_char#19 = (byte) current_piece_char#92 (byte) current_piece_char#33 (byte) current_piece_char#8 +Alias (byte) current_orientation#12 = (byte) current_orientation#88 (byte) current_orientation#47 (byte) current_orientation#28 +Alias (byte*) current_piece_gfx#105 = (byte*) current_piece_gfx#42 (byte*) current_piece_gfx#24 (byte*) current_piece_gfx#11 +Alias (byte) current_xpos#115 = (byte) current_xpos#55 (byte) current_xpos#31 (byte) current_xpos#12 +Alias (byte) render_screen_render#17 = (byte) render_screen_render#63 (byte) render_screen_render#25 (byte) render_screen_render#7 +Alias (byte) render_screen_show#15 = (byte) render_screen_show#32 (byte) render_screen_show#23 (byte) render_screen_show#58 (byte) render_screen_show#55 (byte) render_screen_show#51 (byte) render_screen_show#50 (byte) render_screen_show#45 +Alias (byte) render_screen_showing#12 = (byte) render_screen_showing#23 (byte) render_screen_showing#18 +Alias (byte) keyboard_events_size#26 = (byte) keyboard_events_size#50 (byte) keyboard_events_size#41 (byte) keyboard_events_size#34 +Alias (byte) keyboard_modifiers#23 = (byte) keyboard_modifiers#41 (byte) keyboard_modifiers#35 (byte) keyboard_modifiers#31 +Alias (byte) game_over#17 = (byte) game_over#73 (byte) game_over#63 (byte) game_over#52 (byte) game_over#41 (byte) game_over#29 (byte) game_over#30 +Alias (byte) current_movedown_counter#25 = (byte) current_movedown_counter#55 (byte) current_movedown_counter#51 (byte) current_movedown_counter#47 (byte) current_movedown_counter#43 (byte) current_movedown_counter#39 (byte) current_movedown_counter#33 +Alias (byte) current_ypos#45 = (byte) current_ypos#90 (byte) current_ypos#87 (byte) current_ypos#82 (byte) current_ypos#75 (byte) current_ypos#68 (byte) current_ypos#59 +Alias (word) lines_bcd#32 = (word) lines_bcd#85 (word) lines_bcd#80 (word) lines_bcd#73 (word) lines_bcd#65 (word) lines_bcd#54 (word) lines_bcd#44 +Alias (dword) score_bcd#32 = (dword) score_bcd#82 (dword) score_bcd#78 (dword) score_bcd#71 (dword) score_bcd#63 (dword) score_bcd#54 (dword) score_bcd#44 +Alias (byte) level#36 = (byte) level#94 (byte) level#89 (byte) level#82 (byte) level#73 (byte) level#61 (byte) level#50 +Alias (byte) current_movedown_slow#44 = (byte) current_movedown_slow#89 (byte) current_movedown_slow#86 (byte) current_movedown_slow#83 (byte) current_movedown_slow#79 (byte) current_movedown_slow#71 (byte) current_movedown_slow#60 +Alias (byte) level_bcd#39 = (byte) level_bcd#98 (byte) level_bcd#92 (byte) level_bcd#83 (byte) level_bcd#75 (byte) level_bcd#65 (byte) level_bcd#54 +Alias (byte*) current_piece#36 = (byte*) current_piece#85 (byte*) current_piece#82 (byte*) current_piece#76 (byte*) current_piece#70 (byte*) current_piece#62 (byte*) current_piece#51 +Alias (byte) current_piece_char#32 = (byte) current_piece_char#93 (byte) current_piece_char#90 (byte) current_piece_char#81 (byte) current_piece_char#72 (byte) current_piece_char#60 (byte) current_piece_char#46 +Alias (byte) current_orientation#46 = (byte) current_orientation#89 (byte) current_orientation#86 (byte) current_orientation#82 (byte) current_orientation#76 (byte) current_orientation#69 (byte) current_orientation#59 +Alias (byte*) current_piece_gfx#103 = (byte*) current_piece_gfx#106 (byte*) current_piece_gfx#95 (byte*) current_piece_gfx#88 (byte*) current_piece_gfx#75 (byte*) current_piece_gfx#60 (byte*) current_piece_gfx#41 +Alias (byte) current_xpos#108 = (byte) current_xpos#116 (byte) current_xpos#113 (byte) current_xpos#99 (byte) current_xpos#89 (byte) current_xpos#74 (byte) current_xpos#54 +Alias (byte) render_screen_render#48 = (byte) render_screen_render#64 (byte) render_screen_render#62 (byte) render_screen_render#61 (byte) render_screen_render#59 (byte) render_screen_render#57 (byte) render_screen_render#54 (byte) render_screen_render#53 +Alias (byte) render_screen_showing#28 = (byte) render_screen_showing#3 (byte) render_screen_showing#8 (byte) render_screen_showing#39 (byte) render_screen_showing#34 (byte) render_screen_showing#33 Alias (byte) keyboard_events_size#17 = (byte) keyboard_events_size#6 -Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#7 (byte) keyboard_modifiers#51 (byte) keyboard_modifiers#47 (byte) keyboard_modifiers#43 (byte) keyboard_modifiers#37 (byte) keyboard_modifiers#31 (byte) keyboard_modifiers#52 (byte) keyboard_modifiers#48 (byte) keyboard_modifiers#44 (byte) keyboard_modifiers#38 (byte) keyboard_modifiers#30 +Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#7 (byte) keyboard_modifiers#48 (byte) keyboard_modifiers#47 (byte) keyboard_modifiers#42 Alias (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#5 -Alias (byte) keyboard_events_size#18 = (byte) keyboard_events_size#7 (byte) keyboard_events_size#59 (byte) keyboard_events_size#52 (byte) keyboard_events_size#43 (byte) keyboard_events_size#34 (byte) keyboard_events_size#67 (byte) keyboard_events_size#60 (byte) keyboard_events_size#53 (byte) keyboard_events_size#44 (byte) keyboard_events_size#33 -Alias (byte) main::key_event#0 = (byte~) main::$11 (byte) main::key_event#1 (byte) main::key_event#2 -Alias (byte) play_move_down::return#3 = (byte) play_move_down::return#5 -Alias (byte) main::render#0 = (byte) main::render#4 -Alias (byte) current_movedown_counter#11 = (byte) current_movedown_counter#4 (byte) current_movedown_counter#36 (byte) current_movedown_counter#32 (byte) current_movedown_counter#25 (byte) current_movedown_counter#44 (byte) current_movedown_counter#40 (byte) current_movedown_counter#37 (byte) current_movedown_counter#33 (byte) current_movedown_counter#24 -Alias (byte) current_ypos#20 = (byte) current_ypos#6 (byte) current_ypos#55 (byte) current_ypos#59 (byte) current_ypos#47 (byte) current_ypos#49 (byte) current_ypos#24 (byte) current_ypos#66 (byte) current_ypos#60 (byte) current_ypos#46 -Alias (word) lines_bcd#14 = (word) lines_bcd#5 (word) lines_bcd#58 (word) lines_bcd#47 (word) lines_bcd#36 (word) lines_bcd#73 (word) lines_bcd#66 (word) lines_bcd#59 (word) lines_bcd#48 (word) lines_bcd#35 -Alias (dword) score_bcd#13 = (dword) score_bcd#5 (dword) score_bcd#56 (dword) score_bcd#47 (dword) score_bcd#36 (dword) score_bcd#63 (dword) score_bcd#57 (dword) score_bcd#39 (dword) score_bcd#48 (dword) score_bcd#35 -Alias (byte) level#18 = (byte) level#7 (byte) level#66 (byte) level#54 (byte) level#42 (byte) level#82 (byte) level#75 (byte) level#67 (byte) level#55 (byte) level#41 -Alias (byte) current_movedown_slow#11 = (byte) current_movedown_slow#22 (byte) current_movedown_slow#72 (byte) current_movedown_slow#64 (byte) current_movedown_slow#52 (byte) current_movedown_slow#79 (byte) current_movedown_slow#76 (byte) current_movedown_slow#73 (byte) current_movedown_slow#65 (byte) current_movedown_slow#51 -Alias (byte) level_bcd#19 = (byte) level_bcd#8 (byte) level_bcd#68 (byte) level_bcd#58 (byte) level_bcd#46 (byte) level_bcd#85 (byte) level_bcd#76 (byte) level_bcd#69 (byte) level_bcd#59 (byte) level_bcd#45 -Alias (byte*) current_piece#15 = (byte*) current_piece#6 (byte*) current_piece#58 (byte*) current_piece#52 (byte*) current_piece#40 (byte*) current_piece#72 (byte*) current_piece#66 (byte*) current_piece#61 (byte*) current_piece#53 (byte*) current_piece#39 -Alias (byte) current_orientation#22 = (byte) current_orientation#8 (byte) current_orientation#38 -Alias (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#7 (byte*) current_piece_gfx#33 -Alias (byte) current_xpos#25 = (byte) current_xpos#8 -Alias (byte) current_piece_char#14 = (byte) current_piece_char#5 (byte) current_piece_char#62 (byte) current_piece_char#50 (byte) current_piece_char#35 (byte) current_piece_char#79 (byte) current_piece_char#71 (byte) current_piece_char#63 (byte) current_piece_char#51 (byte) current_piece_char#34 -Alias (byte) play_move_leftright::return#4 = (byte) play_move_leftright::return#6 -Alias (byte) main::render#1 = (byte) main::render#5 -Alias (byte) current_xpos#26 = (byte) current_xpos#9 (byte) current_xpos#80 (byte) current_xpos#63 (byte) current_xpos#90 (byte) current_xpos#67 (byte) current_xpos#91 (byte) current_xpos#81 (byte) current_xpos#62 -Alias (byte) play_move_rotate::return#4 = (byte) play_move_rotate::return#6 -Alias (byte) main::render#2 = (byte) main::render#6 -Alias (byte) current_orientation#23 = (byte) current_orientation#9 (byte) current_orientation#49 (byte) current_orientation#76 (byte) current_orientation#72 (byte) current_orientation#67 (byte) current_orientation#61 (byte) current_orientation#48 -Alias (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#8 (byte*) current_piece_gfx#50 (byte*) current_piece_gfx#85 (byte*) current_piece_gfx#68 (byte*) current_piece_gfx#79 (byte*) current_piece_gfx#67 (byte*) current_piece_gfx#49 +Alias (byte) keyboard_events_size#18 = (byte) keyboard_events_size#7 (byte) keyboard_events_size#59 (byte) keyboard_events_size#51 +Alias (byte) main::key_event#0 = (byte~) main::$12 (byte) main::key_event#1 +Alias (byte) play_movement::return#3 = (byte) play_movement::return#5 +Alias (byte) current_movedown_counter#15 = (byte) current_movedown_counter#6 +Alias (byte) current_ypos#24 = (byte) current_ypos#8 +Alias (word) lines_bcd#18 = (word) lines_bcd#7 +Alias (dword) score_bcd#17 = (dword) score_bcd#7 +Alias (byte) level#22 = (byte) level#9 +Alias (byte) current_movedown_slow#13 = (byte) current_movedown_slow#26 +Alias (byte) level_bcd#10 = (byte) level_bcd#23 +Alias (byte*) current_piece#19 = (byte*) current_piece#8 +Alias (byte) current_piece_char#18 = (byte) current_piece_char#7 +Alias (byte) current_orientation#11 = (byte) current_orientation#27 +Alias (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#23 +Alias (byte) current_xpos#11 = (byte) current_xpos#30 +Alias (byte) game_over#18 = (byte) game_over#8 +Alias (byte) main::render#1 = (byte~) main::$14 +Alias (byte) main::render#3 = (byte) main::render#4 +Alias (byte) render_screen_show#46 = (byte) render_screen_show#52 +Alias (byte) render_screen_render#49 = (byte) render_screen_render#55 +Alias (byte) current_movedown_slow#80 = (byte) current_movedown_slow#84 +Alias (byte*) current_piece#71 = (byte*) current_piece#77 +Alias (byte) current_piece_char#73 = (byte) current_piece_char#82 +Alias (byte) current_orientation#77 = (byte) current_orientation#83 +Alias (byte*) current_piece_gfx#89 = (byte*) current_piece_gfx#96 +Alias (byte) current_xpos#100 = (byte) current_xpos#109 +Alias (byte) current_ypos#76 = (byte) current_ypos#83 +Alias (byte) game_over#64 = (byte) game_over#74 +Alias (byte) render_screen_showing#29 = (byte) render_screen_showing#35 +Alias (byte) keyboard_events_size#52 = (byte) keyboard_events_size#60 +Alias (byte) keyboard_modifiers#43 = (byte) keyboard_modifiers#49 +Alias (byte) current_movedown_counter#44 = (byte) current_movedown_counter#48 +Alias (word) lines_bcd#66 = (word) lines_bcd#74 +Alias (dword) score_bcd#64 = (dword) score_bcd#72 +Alias (byte) level#74 = (byte) level#83 +Alias (byte) level_bcd#76 = (byte) level_bcd#84 +Alias (byte) render_screen_render#19 = (byte) render_screen_render#27 (byte) render_screen_render#42 (byte) render_screen_render#35 (byte) render_screen_render#20 +Alias (byte) current_ypos#28 = (byte) current_ypos#60 (byte) current_ypos#69 (byte) current_ypos#84 (byte) current_ypos#77 (byte) current_ypos#70 +Alias (byte) current_xpos#101 = (byte) current_xpos#90 (byte) current_xpos#77 (byte) current_xpos#110 (byte) current_xpos#102 (byte) current_xpos#91 +Alias (byte) render_screen_show#21 = (byte) render_screen_show#47 (byte) render_screen_show#39 (byte) render_screen_show#40 (byte) render_screen_show#33 +Alias (byte*) current_piece_gfx#76 = (byte*) current_piece_gfx#97 (byte*) current_piece_gfx#78 (byte*) current_piece_gfx#98 (byte*) current_piece_gfx#90 (byte*) current_piece_gfx#77 +Alias (dword) score_bcd#46 = (dword) score_bcd#73 (dword) score_bcd#55 (dword) score_bcd#65 (dword) score_bcd#66 (dword) score_bcd#56 +Alias (byte) current_piece_char#61 = (byte) current_piece_char#94 (byte) current_piece_char#84 (byte) current_piece_char#83 (byte) current_piece_char#74 (byte) current_piece_char#62 +Alias (byte) current_movedown_slow#72 = (byte) current_movedown_slow#90 (byte) current_movedown_slow#87 (byte) current_movedown_slow#85 (byte) current_movedown_slow#81 (byte) current_movedown_slow#73 +Alias (byte*) current_piece#63 = (byte*) current_piece#86 (byte*) current_piece#83 (byte*) current_piece#78 (byte*) current_piece#72 (byte*) current_piece#64 +Alias (byte) current_orientation#70 = (byte) current_orientation#90 (byte) current_orientation#87 (byte) current_orientation#84 (byte) current_orientation#78 (byte) current_orientation#71 +Alias (byte) game_over#53 = (byte) game_over#83 (byte) game_over#81 (byte) game_over#75 (byte) game_over#65 (byte) game_over#54 +Alias (byte) render_screen_showing#24 = (byte) render_screen_showing#43 (byte) render_screen_showing#40 (byte) render_screen_showing#36 (byte) render_screen_showing#30 (byte) render_screen_showing#25 +Alias (byte) keyboard_events_size#42 = (byte) keyboard_events_size#72 (byte) keyboard_events_size#68 (byte) keyboard_events_size#61 (byte) keyboard_events_size#53 (byte) keyboard_events_size#43 +Alias (byte) keyboard_modifiers#36 = (byte) keyboard_modifiers#56 (byte) keyboard_modifiers#53 (byte) keyboard_modifiers#50 (byte) keyboard_modifiers#44 (byte) keyboard_modifiers#37 +Alias (byte) current_movedown_counter#40 = (byte) current_movedown_counter#56 (byte) current_movedown_counter#52 (byte) current_movedown_counter#49 (byte) current_movedown_counter#45 (byte) current_movedown_counter#41 +Alias (word) lines_bcd#55 = (word) lines_bcd#86 (word) lines_bcd#81 (word) lines_bcd#75 (word) lines_bcd#67 (word) lines_bcd#56 +Alias (byte) level#62 = (byte) level#95 (byte) level#90 (byte) level#84 (byte) level#75 (byte) level#63 +Alias (byte) level_bcd#66 = (byte) level_bcd#99 (byte) level_bcd#93 (byte) level_bcd#85 (byte) level_bcd#77 (byte) level_bcd#67 Alias (byte) render_screen_render#16 = (byte) render_screen_render#6 -Alias (byte) render_screen_show#15 = (byte) render_screen_show#6 -Alias (byte) render_screen_show#17 = (byte) render_screen_show#8 +Alias (byte) render_screen_show#16 = (byte) render_screen_show#6 +Alias (byte) render_screen_show#18 = (byte) render_screen_show#8 Alias (byte) render_screen_render#18 = (byte) render_screen_render#8 -Alias (byte) current_movedown_slow#13 = (byte) current_movedown_slow#24 -Alias (byte*) current_piece#17 = (byte*) current_piece#8 -Alias (byte) current_orientation#11 = (byte) current_orientation#25 -Alias (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#21 -Alias (byte) current_xpos#11 = (byte) current_xpos#28 -Alias (byte) current_ypos#22 = (byte) current_ypos#8 -Alias (byte) current_piece_char#16 = (byte) current_piece_char#7 +Alias (byte) current_movedown_slow#15 = (byte) current_movedown_slow#28 +Alias (byte*) current_piece#10 = (byte*) current_piece#21 +Alias (byte) current_piece_char#20 = (byte) current_piece_char#9 +Alias (byte) current_orientation#13 = (byte) current_orientation#29 +Alias (byte*) current_piece_gfx#12 = (byte*) current_piece_gfx#25 +Alias (byte) current_xpos#13 = (byte) current_xpos#32 +Alias (byte) current_ypos#10 = (byte) current_ypos#26 +Alias (byte) game_over#10 = (byte) game_over#20 Alias (byte) render_screen_showing#10 = (byte) render_screen_showing#5 Alias (byte) keyboard_events_size#20 = (byte) keyboard_events_size#9 Alias (byte) keyboard_modifiers#17 = (byte) keyboard_modifiers#9 -Alias (byte) current_movedown_counter#13 = (byte) current_movedown_counter#6 -Alias (word) lines_bcd#16 = (word) lines_bcd#7 -Alias (dword) score_bcd#15 = (dword) score_bcd#7 -Alias (byte) level#20 = (byte) level#9 -Alias (byte) level_bcd#10 = (byte) level_bcd#21 +Alias (byte) current_movedown_counter#17 = (byte) current_movedown_counter#8 +Alias (word) lines_bcd#20 = (word) lines_bcd#9 +Alias (dword) score_bcd#19 = (dword) score_bcd#9 +Alias (byte) level#11 = (byte) level#24 +Alias (byte) level_bcd#12 = (byte) level_bcd#25 Successful SSA optimization Pass2AliasElimination Alias candidate removed (volatile)(byte) render_screen_showing#1 = (byte) render_screen_show#11 (byte) render_screen_show#10 (byte) render_screen_showing#6 (byte) render_screen_showing#2 -Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#23 (byte) irq_raster_next#22 (byte) irq_raster_next#21 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 -Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $4 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#16 (byte) irq_sprite_ptr#15 -Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$3 (byte) irq_sprite_ptr#1 +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte/signed word/word/dword/signed dword~) $4 (byte) irq_raster_next#0 (byte) irq_raster_next#24 (byte) irq_raster_next#23 (byte) irq_raster_next#22 (byte) irq_raster_next#20 (byte) irq_raster_next#17 (byte) irq_raster_next#10 +Alias candidate removed (volatile)(byte) irq_sprite_ypos#0 = (byte/signed word/word/dword/signed dword~) $5 (byte) irq_sprite_ypos#24 (byte) irq_sprite_ypos#22 (byte) irq_sprite_ypos#21 (byte) irq_sprite_ypos#18 (byte) irq_sprite_ypos#14 (byte) irq_sprite_ypos#9 +Alias candidate removed (volatile)(byte) irq_sprite_ptr#0 = (byte/signed word/word/dword/signed dword~) $7 (byte) irq_sprite_ptr#18 (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#14 +Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0 +Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$5 (byte) irq_sprite_ptr#1 Alias (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#4 Alias (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#3 Alias (byte) keyboard_event_scan::row_scan#1 = (byte) keyboard_event_scan::row_scan#3 Alias (byte) keyboard_event_scan::row#10 = (byte) keyboard_event_scan::row#6 -Alias (byte) keyboard_events_size#13 = (byte) keyboard_events_size#63 (byte) keyboard_events_size#55 (byte) keyboard_events_size#46 (byte) keyboard_events_size#23 -Alias (dword) score_bcd#16 = (dword) score_bcd#8 -Alias (word) lines_bcd#17 = (word) lines_bcd#49 -Alias (byte) level_bcd#11 = (byte) level_bcd#77 +Alias (byte) keyboard_events_size#13 = (byte) keyboard_events_size#64 (byte) keyboard_events_size#55 (byte) keyboard_events_size#45 (byte) keyboard_events_size#23 +Alias (dword) score_bcd#10 = (dword) score_bcd#20 +Alias (word) lines_bcd#10 = (word) lines_bcd#57 +Alias (byte) level_bcd#13 = (byte) level_bcd#86 Alias (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#7 Alias (byte) render_moving::xpos#2 = (byte) render_moving::xpos#3 Alias (byte) render_moving::c#2 = (byte) render_moving::c#3 Alias (byte) render_moving::ypos2#10 = (byte) render_moving::ypos2#5 Alias (byte) render_moving::l#10 = (byte) render_moving::l#3 -Alias (byte*) current_piece_gfx#11 = (byte*) current_piece_gfx#23 +Alias (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#27 Alias (byte) render_moving::i#10 = (byte) render_moving::i#7 Alias (byte) render_screen_render#38 = (byte) render_screen_render#43 -Alias (byte) current_xpos#68 = (byte) current_xpos#82 -Alias (byte) current_piece_char#17 = (byte) current_piece_char#39 +Alias (byte) current_xpos#103 = (byte) current_xpos#78 +Alias (byte) current_piece_char#10 = (byte) current_piece_char#49 Alias (byte*) render_moving::screen_line#1 = (byte*) render_moving::screen_line#4 -Alias (byte) irq_cnt#12 = (byte) irq_cnt#4 -Alias (byte) irq_raster_next#10 = (byte) irq_raster_next#4 -Alias (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#6 -Alias (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#5 -Alias (byte) irq_cnt#10 = (byte) irq_cnt#3 -Alias (byte) irq_raster_next#13 = (byte) irq_raster_next#3 -Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#13 -Alias (byte) irq_sprite_ptr#13 = (byte) irq_sprite_ptr#3 -Alias (byte) current_movedown_counter#1 = (byte) current_movedown_counter#15 (byte) current_movedown_counter#29 (byte) current_movedown_counter#18 -Alias (byte) current_movedown_slow#15 = (byte) current_movedown_slow#26 (byte) current_movedown_slow#55 (byte) current_movedown_slow#29 -Alias (byte) current_ypos#10 = (byte) current_ypos#51 (byte) current_ypos#68 (byte) current_ypos#39 -Alias (byte) current_xpos#13 = (byte) current_xpos#70 (byte) current_xpos#94 (byte) current_xpos#49 -Alias (byte) current_orientation#12 = (byte) current_orientation#52 (byte) current_orientation#68 (byte) current_orientation#41 -Alias (word) lines_bcd#18 = (word) lines_bcd#52 (word) lines_bcd#68 (word) lines_bcd#40 -Alias (dword) score_bcd#18 = (dword) score_bcd#50 (dword) score_bcd#65 (dword) score_bcd#40 -Alias (byte) level#22 = (byte) level#57 (byte) level#77 (byte) level#46 -Alias (byte) level_bcd#23 = (byte) level_bcd#62 (byte) level_bcd#80 (byte) level_bcd#50 -Alias (byte*) current_piece#18 = (byte*) current_piece#54 (byte*) current_piece#67 (byte*) current_piece#43 -Alias (byte*) current_piece_gfx#24 = (byte*) current_piece_gfx#71 (byte*) current_piece_gfx#87 (byte*) current_piece_gfx#56 -Alias (byte) current_piece_char#18 = (byte) current_piece_char#55 (byte) current_piece_char#74 (byte) current_piece_char#40 -Alias (byte) current_xpos#16 = (byte) current_xpos#37 -Alias (byte) current_xpos#21 = (byte) current_xpos#39 -Alias (byte) current_ypos#16 = (byte) current_ypos#32 -Alias (byte*) current_piece#11 = (byte*) current_piece#35 -Alias (byte) current_orientation#17 = (byte) current_orientation#34 -Alias (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#28 +Alias (byte) irq_cnt#10 = (byte) irq_cnt#4 +Alias (byte) irq_raster_next#11 = (byte) irq_raster_next#14 +Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#15 +Alias (byte) irq_sprite_ptr#10 = (byte) irq_sprite_ptr#15 +Alias (byte) current_movedown_counter#1 = (byte) current_movedown_counter#10 +Alias (byte) current_ypos#0 = (byte) current_ypos#1 +Alias (word) lines_bcd#1 = (word) lines_bcd#13 +Alias (dword) score_bcd#1 = (dword) score_bcd#12 +Alias (byte) level#1 = (byte) level#14 +Alias (byte) current_movedown_slow#17 = (byte) current_movedown_slow#18 +Alias (byte) level_bcd#1 = (byte) level_bcd#15 +Alias (byte*) current_piece#1 = (byte*) current_piece#12 +Alias (byte) current_piece_char#0 = (byte) current_piece_char#1 +Alias (byte) game_over#1 = (byte) game_over#12 +Alias (byte) current_movedown_counter#12 = (byte) current_movedown_counter#13 (byte) current_movedown_counter#3 (byte) current_movedown_counter#24 +Alias (byte) current_movedown_slow#19 = (byte) current_movedown_slow#33 (byte) current_movedown_slow#63 (byte) current_movedown_slow#36 +Alias (byte) current_ypos#14 = (byte) current_ypos#62 (byte) current_ypos#79 (byte) current_ypos#49 +Alias (byte) current_xpos#105 = (byte) current_xpos#80 (byte) current_xpos#59 (byte) current_xpos#18 +Alias (byte) current_orientation#17 = (byte) current_orientation#61 (byte) current_orientation#79 (byte) current_orientation#50 +Alias (word) lines_bcd#25 = (word) lines_bcd#60 (word) lines_bcd#77 (word) lines_bcd#48 +Alias (dword) score_bcd#25 = (dword) score_bcd#58 (dword) score_bcd#75 (dword) score_bcd#48 +Alias (byte) level#29 = (byte) level#65 (byte) level#86 (byte) level#54 +Alias (byte) level_bcd#30 = (byte) level_bcd#70 (byte) level_bcd#89 (byte) level_bcd#58 +Alias (byte*) current_piece#25 = (byte*) current_piece#65 (byte*) current_piece#79 (byte*) current_piece#54 +Alias (byte) current_piece_char#25 = (byte) current_piece_char#66 (byte) current_piece_char#87 (byte) current_piece_char#51 +Alias (byte*) current_piece_gfx#100 = (byte*) current_piece_gfx#81 (byte*) current_piece_gfx#65 (byte*) current_piece_gfx#31 +Alias (byte) game_over#24 = (byte) game_over#56 (byte) game_over#77 (byte) game_over#44 +Alias (byte) current_xpos#21 = (byte) current_xpos#45 +Alias (byte) current_xpos#26 = (byte) current_xpos#47 +Alias (byte) current_ypos#20 = (byte) current_ypos#39 +Alias (byte*) current_piece#15 = (byte*) current_piece#45 +Alias (byte) current_orientation#22 = (byte) current_orientation#41 +Alias (byte*) current_piece_gfx#34 = (byte*) current_piece_gfx#35 Alias (byte) play_collision::col#2 = (byte) play_collision::col#3 Alias (byte) play_collision::c#2 = (byte) play_collision::c#3 Alias (byte*) play_collision::piece_gfx#1 = (byte*) play_collision::piece_gfx#3 Alias (byte) play_collision::i#1 = (byte) play_collision::i#4 Alias (byte) play_collision::ypos2#10 = (byte) play_collision::ypos2#4 Alias (byte) play_collision::l#10 = (byte) play_collision::l#2 -Alias (byte) play_collision::xpos#10 = (byte) play_collision::xpos#6 +Alias (byte) play_collision::xpos#10 = (byte) play_collision::xpos#7 Alias (byte*) play_collision::playfield_line#1 = (byte*) play_collision::playfield_line#6 Alias (byte) play_lock_current::col#2 = (byte) play_lock_current::col#3 Alias (byte) play_lock_current::c#2 = (byte) play_lock_current::c#3 -Alias (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#30 +Alias (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#37 Alias (byte) play_lock_current::i#1 = (byte) play_lock_current::i#4 Alias (byte) play_lock_current::ypos2#3 = (byte) play_lock_current::ypos2#5 Alias (byte) play_lock_current::l#2 = (byte) play_lock_current::l#4 -Alias (byte) current_piece_char#11 = (byte) current_piece_char#31 +Alias (byte) current_piece_char#15 = (byte) current_piece_char#41 Alias (byte*) play_lock_current::playfield_line#1 = (byte*) play_lock_current::playfield_line#3 -Alias (byte) current_xpos#42 = (byte) current_xpos#76 +Alias (byte) current_xpos#50 = (byte) current_xpos#86 +Alias (byte*) current_piece#17 = (byte*) current_piece#33 +Alias (byte) current_piece_char#16 = (byte) current_piece_char#29 +Alias (byte) current_orientation#25 = (byte) current_orientation#43 +Alias (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#38 +Alias (byte) current_xpos#28 = (byte) current_xpos#51 +Alias (byte) current_ypos#22 = (byte) current_ypos#42 Alias (byte) play_remove_lines::c#0 = (byte) play_remove_lines::c#1 Alias (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#8 Alias (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#3 Alias (byte) play_remove_lines::r#1 = (byte) play_remove_lines::r#4 (byte) play_remove_lines::r#5 Alias (byte) play_remove_lines::y#2 = (byte) play_remove_lines::y#3 (byte) play_remove_lines::y#6 Alias (byte) play_remove_lines::removed#10 = (byte) play_remove_lines::removed#2 -Alias (byte) level_bcd#16 = (byte) level_bcd#29 -Alias (byte) level#16 = (byte) level#61 (byte) level#51 -Alias (byte) current_movedown_slow#60 = (byte) current_movedown_slow#67 +Alias (byte) level_bcd#20 = (byte) level_bcd#36 +Alias (byte) level#20 = (byte) level#69 (byte) level#59 +Alias (byte) current_movedown_slow#68 = (byte) current_movedown_slow#75 +Alias (byte) current_movedown_slow#58 = (byte) current_movedown_slow#72 +Alias (byte*) current_piece#49 = (byte*) current_piece#63 +Alias (byte) current_piece_char#44 = (byte) current_piece_char#61 +Alias (byte) current_orientation#57 = (byte) current_orientation#70 +Alias (byte*) current_piece_gfx#58 = (byte*) current_piece_gfx#76 +Alias (byte) current_xpos#101 = (byte) current_xpos#72 +Alias (byte) current_ypos#28 = (byte) current_ypos#57 +Alias (byte) game_over#39 = (byte) game_over#53 +Alias (byte) render_screen_showing#16 = (byte) render_screen_showing#24 +Alias (byte) keyboard_events_size#32 = (byte) keyboard_events_size#42 +Alias (byte) keyboard_modifiers#29 = (byte) keyboard_modifiers#36 +Alias (byte) current_movedown_counter#31 = (byte) current_movedown_counter#40 +Alias (word) lines_bcd#42 = (word) lines_bcd#55 +Alias (dword) score_bcd#42 = (dword) score_bcd#46 +Alias (byte) level#48 = (byte) level#62 +Alias (byte) level_bcd#52 = (byte) level_bcd#66 Successful SSA optimization Pass2AliasElimination Alias candidate removed (volatile)(byte) render_screen_showing#1 = (byte) render_screen_show#11 (byte) render_screen_show#10 (byte) render_screen_showing#6 (byte) render_screen_showing#2 -Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#23 (byte) irq_raster_next#22 (byte) irq_raster_next#21 (byte) irq_raster_next#20 (byte) irq_raster_next#19 (byte) irq_raster_next#18 -Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $4 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#16 (byte) irq_sprite_ptr#15 -Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$3 (byte) irq_sprite_ptr#1 +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte/signed word/word/dword/signed dword~) $4 (byte) irq_raster_next#0 (byte) irq_raster_next#24 (byte) irq_raster_next#23 (byte) irq_raster_next#22 (byte) irq_raster_next#20 (byte) irq_raster_next#17 (byte) irq_raster_next#10 +Alias candidate removed (volatile)(byte) irq_sprite_ypos#0 = (byte/signed word/word/dword/signed dword~) $5 (byte) irq_sprite_ypos#24 (byte) irq_sprite_ypos#22 (byte) irq_sprite_ypos#21 (byte) irq_sprite_ypos#18 (byte) irq_sprite_ypos#14 (byte) irq_sprite_ypos#9 +Alias candidate removed (volatile)(byte) irq_sprite_ptr#0 = (byte/signed word/word/dword/signed dword~) $7 (byte) irq_sprite_ptr#18 (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#14 +Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0 +Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$5 (byte) irq_sprite_ptr#1 Self Phi Eliminated (byte) keyboard_event_scan::row_scan#1 Self Phi Eliminated (byte) keyboard_event_scan::row#10 Self Phi Eliminated (byte) render_screen_original::SPACE#1 @@ -6988,73 +7720,95 @@ Self Phi Eliminated (byte*) render_screen_original::oscr#5 Self Phi Eliminated (byte*) render_screen_original::ocols#5 Self Phi Eliminated (byte) render_playfield::l#3 Self Phi Eliminated (byte) render_screen_render#22 -Self Phi Eliminated (byte*) current_piece_gfx#11 +Self Phi Eliminated (byte*) current_piece_gfx#13 Self Phi Eliminated (byte) render_moving::ypos2#10 Self Phi Eliminated (byte) render_moving::l#10 -Self Phi Eliminated (byte) current_piece_char#17 +Self Phi Eliminated (byte) current_piece_char#10 Self Phi Eliminated (byte*) render_moving::screen_line#1 Self Phi Eliminated (byte) render_screen_render#38 -Self Phi Eliminated (byte) current_xpos#68 -Self Phi Eliminated (byte) irq_sprite_ypos#11 -Self Phi Eliminated (byte) irq_sprite_ptr#11 +Self Phi Eliminated (byte) current_xpos#103 +Self Phi Eliminated (byte) sprites_irq::raster_sprite_gfx_modify#1 +Self Phi Eliminated (byte) irq_sprite_ptr#10 Self Phi Eliminated (byte) render_screen_showing#11 -Self Phi Eliminated (byte) irq_cnt#12 -Self Phi Eliminated (byte) irq_raster_next#10 -Self Phi Eliminated (byte) level#10 -Self Phi Eliminated (byte) current_movedown_slow#14 +Self Phi Eliminated (byte) irq_cnt#10 +Self Phi Eliminated (byte) irq_raster_next#11 +Self Phi Eliminated (byte) irq_sprite_ypos#10 +Self Phi Eliminated (byte) level#12 +Self Phi Eliminated (byte) current_movedown_slow#16 Self Phi Eliminated (byte*) play_collision::piece_gfx#1 Self Phi Eliminated (byte) play_collision::ypos2#10 Self Phi Eliminated (byte) play_collision::l#10 Self Phi Eliminated (byte) play_collision::xpos#10 Self Phi Eliminated (byte*) play_collision::playfield_line#1 -Self Phi Eliminated (byte*) current_piece_gfx#15 -Self Phi Eliminated (byte) current_piece_char#11 +Self Phi Eliminated (byte*) current_piece_gfx#20 +Self Phi Eliminated (byte) current_piece_char#15 Self Phi Eliminated (byte*) play_lock_current::playfield_line#1 Self Phi Eliminated (byte) play_lock_current::ypos2#3 Self Phi Eliminated (byte) play_lock_current::l#2 -Self Phi Eliminated (byte) current_xpos#42 +Self Phi Eliminated (byte) current_xpos#50 +Self Phi Eliminated (byte) game_over#27 Self Phi Eliminated (byte) play_remove_lines::y#2 Self Phi Eliminated (byte) play_remove_lines::removed#10 Self Phi Eliminated (byte) play_remove_lines::removed#3 -Self Phi Eliminated (byte) level#17 -Self Phi Eliminated (byte) current_movedown_slow#20 -Self Phi Eliminated (byte) level_bcd#18 -Self Phi Eliminated (byte) render_screen_show#18 +Self Phi Eliminated (byte) level#21 +Self Phi Eliminated (byte) current_movedown_slow#11 +Self Phi Eliminated (byte) level_bcd#22 +Self Phi Eliminated (byte) render_screen_show#15 Self Phi Eliminated (byte) render_screen_showing#12 Self Phi Eliminated (byte) keyboard_events_size#26 Self Phi Eliminated (byte) keyboard_modifiers#23 -Self Phi Eliminated (byte) current_movedown_counter#14 -Self Phi Eliminated (byte) current_ypos#36 -Self Phi Eliminated (word) lines_bcd#25 -Self Phi Eliminated (dword) score_bcd#25 -Self Phi Eliminated (byte) level#29 -Self Phi Eliminated (byte) current_movedown_slow#37 -Self Phi Eliminated (byte) level_bcd#32 -Self Phi Eliminated (byte*) current_piece#27 -Self Phi Eliminated (byte) current_orientation#37 -Self Phi Eliminated (byte*) current_piece_gfx#32 -Self Phi Eliminated (byte) current_xpos#101 -Self Phi Eliminated (byte) current_piece_char#23 -Self Phi Eliminated (byte) render_screen_render#19 +Self Phi Eliminated (byte) game_over#17 +Self Phi Eliminated (byte) current_movedown_counter#25 +Self Phi Eliminated (byte) current_ypos#45 +Self Phi Eliminated (word) lines_bcd#32 +Self Phi Eliminated (dword) score_bcd#32 +Self Phi Eliminated (byte) level#36 +Self Phi Eliminated (byte) current_movedown_slow#44 +Self Phi Eliminated (byte) level_bcd#39 +Self Phi Eliminated (byte*) current_piece#36 +Self Phi Eliminated (byte) current_piece_char#32 +Self Phi Eliminated (byte) current_orientation#46 +Self Phi Eliminated (byte*) current_piece_gfx#103 +Self Phi Eliminated (byte) current_xpos#108 +Self Phi Eliminated (byte) render_screen_render#48 +Self Phi Eliminated (byte) main::render#3 +Self Phi Eliminated (byte) render_screen_show#46 +Self Phi Eliminated (byte) render_screen_render#49 +Self Phi Eliminated (byte) current_movedown_slow#80 +Self Phi Eliminated (byte*) current_piece#71 +Self Phi Eliminated (byte) current_piece_char#73 +Self Phi Eliminated (byte) current_orientation#77 +Self Phi Eliminated (byte*) current_piece_gfx#89 +Self Phi Eliminated (byte) current_xpos#100 +Self Phi Eliminated (byte) current_ypos#76 +Self Phi Eliminated (byte) game_over#64 +Self Phi Eliminated (byte) render_screen_showing#29 +Self Phi Eliminated (byte) keyboard_events_size#52 +Self Phi Eliminated (byte) keyboard_modifiers#43 +Self Phi Eliminated (byte) current_movedown_counter#44 +Self Phi Eliminated (word) lines_bcd#66 +Self Phi Eliminated (dword) score_bcd#64 +Self Phi Eliminated (byte) level#74 +Self Phi Eliminated (byte) level_bcd#76 Successful SSA optimization Pass2SelfPhiElimination -Redundant Phi (byte*) current_piece_gfx#35 VOID -Redundant Phi (byte) current_xpos#102 VOID -Redundant Phi (byte) current_ypos#38 VOID -Redundant Phi (byte) current_piece_char#25 VOID +Redundant Phi (byte) current_piece_char#100 VOID +Redundant Phi (byte*) current_piece_gfx#104 VOID +Redundant Phi (byte) current_xpos#104 VOID +Redundant Phi (byte) current_ypos#47 VOID Redundant Phi (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#0 Redundant Phi (byte) keyboard_events_size#54 (byte) keyboard_events_size#26 Redundant Phi (byte) keyboard_event_scan::row_scan#1 (byte) keyboard_event_scan::row_scan#0 Redundant Phi (byte) keyboard_event_scan::row#10 (byte) keyboard_event_scan::row#2 Redundant Phi (byte) keyboard_events_size#14 (byte) keyboard_events_size#17 -Redundant Phi (byte) render_screen_show#10 (byte) render_screen_show#18 +Redundant Phi (byte) render_screen_show#10 (byte) render_screen_show#15 Redundant Phi (byte) render_screen_show#11 (byte) render_screen_show#10 Redundant Phi (byte) render_screen_showing#6 (byte) render_screen_showing#1 Redundant Phi (byte) render_screen_render#10 (byte) render_screen_render#19 -Redundant Phi (byte) render_screen_show#12 (byte) render_screen_show#18 +Redundant Phi (byte) render_screen_show#12 (byte) render_screen_show#21 Redundant Phi (byte) render_screen_render#12 (byte) render_screen_render#19 -Redundant Phi (dword) score_bcd#16 (dword) score_bcd#13 -Redundant Phi (word) lines_bcd#17 (word) lines_bcd#14 -Redundant Phi (byte) level_bcd#11 (byte) level_bcd#19 +Redundant Phi (dword) score_bcd#10 (dword) score_bcd#42 +Redundant Phi (word) lines_bcd#10 (word) lines_bcd#42 +Redundant Phi (byte) level_bcd#13 (byte) level_bcd#52 Redundant Phi (byte) render_screen_original::SPACE#1 (byte) render_screen_original::SPACE#3 Redundant Phi (byte*) render_screen_original::oscr#3 (byte*) render_screen_original::oscr#4 Redundant Phi (byte*) render_screen_original::ocols#3 (byte*) render_screen_original::ocols#4 @@ -7067,195 +7821,259 @@ Redundant Phi (byte*) render_screen_original::oscr#5 (byte*) render_screen_origi Redundant Phi (byte*) render_screen_original::ocols#5 (byte*) render_screen_original::ocols#1 Redundant Phi (byte) render_playfield::l#3 (byte) render_playfield::l#2 Redundant Phi (byte) render_screen_render#22 (byte) render_screen_render#13 -Redundant Phi (byte*) current_piece_gfx#11 (byte*) current_piece_gfx#22 +Redundant Phi (byte*) current_piece_gfx#13 (byte*) current_piece_gfx#26 Redundant Phi (byte) render_moving::ypos2#10 (byte) render_moving::ypos2#2 Redundant Phi (byte) render_moving::l#10 (byte) render_moving::l#4 -Redundant Phi (byte) current_piece_char#17 (byte) current_piece_char#38 +Redundant Phi (byte) current_piece_char#10 (byte) current_piece_char#48 Redundant Phi (byte*) render_moving::screen_line#1 (byte*) render_moving::screen_line#0 Redundant Phi (byte) render_screen_render#38 (byte) render_screen_render#14 -Redundant Phi (byte) current_xpos#68 (byte) current_xpos#12 -Redundant Phi (byte) irq_raster_next#23 (byte) irq_raster_next#0 -Redundant Phi (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#0 +Redundant Phi (byte) current_xpos#103 (byte) current_xpos#14 +Redundant Phi (byte) irq_sprite_ypos#24 (byte) irq_sprite_ypos#0 +Redundant Phi (byte) irq_raster_next#24 (byte) irq_raster_next#0 +Redundant Phi (byte) irq_sprite_ypos#22 (byte) irq_sprite_ypos#24 +Redundant Phi (byte) irq_raster_next#23 (byte) irq_raster_next#24 +Redundant Phi (byte) irq_sprite_ypos#21 (byte) irq_sprite_ypos#22 Redundant Phi (byte) irq_raster_next#22 (byte) irq_raster_next#23 -Redundant Phi (byte) toSpritePtr1_return#3 (byte) toSpritePtr1_return#1 -Redundant Phi (byte) irq_raster_next#21 (byte) irq_raster_next#22 -Redundant Phi (byte) irq_sprite_ypos#4 (byte) irq_sprite_ypos#0 -Redundant Phi (byte) irq_sprite_ptr#10 (byte) irq_sprite_ptr#15 +Redundant Phi (byte) irq_sprite_ypos#5 (byte) irq_sprite_ypos#9 +Redundant Phi (byte) irq_raster_next#5 (byte) irq_raster_next#10 +Redundant Phi (byte) irq_sprite_ptr#12 (byte) irq_sprite_ptr#14 Redundant Phi (byte) render_screen_showing#15 (byte) render_screen_showing#0 Redundant Phi (byte) irq_cnt#15 (byte) irq_cnt#0 -Redundant Phi (byte) irq_raster_next#17 (byte) irq_raster_next#18 -Redundant Phi (byte) irq_sprite_ypos#11 (byte) irq_sprite_ypos#4 -Redundant Phi (byte) irq_sprite_ptr#11 (byte) irq_sprite_ptr#10 +Redundant Phi (byte) sprites_irq::raster_sprite_gfx_modify#1 (byte) sprites_irq::raster_sprite_gfx_modify#0 +Redundant Phi (byte) irq_sprite_ptr#10 (byte) irq_sprite_ptr#12 Redundant Phi (byte) render_screen_showing#11 (byte) render_screen_showing#15 -Redundant Phi (byte) irq_cnt#12 (byte) irq_cnt#15 -Redundant Phi (byte) irq_raster_next#10 (byte) irq_raster_next#17 +Redundant Phi (byte) irq_cnt#10 (byte) irq_cnt#15 +Redundant Phi (byte) irq_raster_next#11 (byte) irq_raster_next#5 +Redundant Phi (byte) irq_sprite_ypos#10 (byte) irq_sprite_ypos#5 Redundant Phi (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#0 Redundant Phi (byte) sprites_irq::toSpritePtr2_return#3 (byte) sprites_irq::toSpritePtr2_return#1 -Redundant Phi (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#0 -Redundant Phi (byte) irq_raster_next#20 (byte) irq_raster_next#21 -Redundant Phi (byte) level#32 (byte) level#40 -Redundant Phi (byte) level#10 (byte) level#32 -Redundant Phi (byte) current_movedown_slow#14 (byte) current_movedown_slow#1 -Redundant Phi (byte) current_movedown_counter#7 (byte) current_movedown_counter#14 +Redundant Phi (byte) irq_sprite_ypos#18 (byte) irq_sprite_ypos#21 +Redundant Phi (byte) irq_raster_next#20 (byte) irq_raster_next#22 +Redundant Phi (byte) irq_sprite_ptr#18 (byte) irq_sprite_ptr#0 +Redundant Phi (byte) level#39 (byte) level#49 +Redundant Phi (byte) level#12 (byte) level#39 +Redundant Phi (byte) current_movedown_slow#16 (byte) current_movedown_slow#1 +Redundant Phi (byte) play_movement::key_event#1 (byte) play_movement::key_event#0 +Redundant Phi (byte) current_movedown_counter#18 (byte) current_movedown_counter#25 +Redundant Phi (byte) current_ypos#29 (byte) current_ypos#45 +Redundant Phi (word) lines_bcd#22 (word) lines_bcd#32 +Redundant Phi (dword) score_bcd#22 (dword) score_bcd#32 +Redundant Phi (byte) level#26 (byte) level#36 +Redundant Phi (byte) current_movedown_slow#30 (byte) current_movedown_slow#44 +Redundant Phi (byte) level_bcd#27 (byte) level_bcd#39 +Redundant Phi (byte*) current_piece#22 (byte*) current_piece#36 +Redundant Phi (byte) current_piece_char#22 (byte) current_piece_char#32 +Redundant Phi (byte) current_orientation#30 (byte) current_orientation#46 +Redundant Phi (byte*) current_piece_gfx#28 (byte*) current_piece_gfx#103 +Redundant Phi (byte) current_xpos#34 (byte) current_xpos#108 +Redundant Phi (byte) game_over#21 (byte) game_over#17 +Redundant Phi (byte) current_movedown_counter#1 (byte) current_movedown_counter#14 +Redundant Phi (byte) current_ypos#0 (byte) current_ypos#17 +Redundant Phi (word) lines_bcd#1 (word) lines_bcd#15 +Redundant Phi (dword) score_bcd#1 (dword) score_bcd#14 +Redundant Phi (byte) level#1 (byte) level#16 +Redundant Phi (byte) current_movedown_slow#17 (byte) current_movedown_slow#21 +Redundant Phi (byte) level_bcd#1 (byte) level_bcd#17 +Redundant Phi (byte*) current_piece#1 (byte*) current_piece#14 +Redundant Phi (byte) current_piece_char#0 (byte) current_piece_char#14 +Redundant Phi (byte) current_orientation#1 (byte) current_orientation#19 +Redundant Phi (byte*) current_piece_gfx#0 (byte*) current_piece_gfx#18 +Redundant Phi (byte) current_xpos#0 (byte) current_xpos#20 +Redundant Phi (byte) game_over#1 (byte) game_over#14 +Redundant Phi (byte) current_xpos#1 (byte) current_xpos#24 +Redundant Phi (byte) current_orientation#15 (byte) current_orientation#24 +Redundant Phi (byte*) current_piece_gfx#1 (byte*) current_piece_gfx#19 +Redundant Phi (byte) current_movedown_counter#11 (byte) current_movedown_counter#18 Redundant Phi (byte) play_move_down::key_event#1 (byte) play_move_down::key_event#0 -Redundant Phi (byte) current_movedown_slow#15 (byte) current_movedown_slow#37 -Redundant Phi (byte) current_ypos#10 (byte) current_ypos#36 -Redundant Phi (byte) current_xpos#13 (byte) current_xpos#101 -Redundant Phi (byte) current_orientation#12 (byte) current_orientation#37 -Redundant Phi (word) lines_bcd#18 (word) lines_bcd#25 -Redundant Phi (dword) score_bcd#18 (dword) score_bcd#25 -Redundant Phi (byte) level#22 (byte) level#29 -Redundant Phi (byte) level_bcd#23 (byte) level_bcd#32 -Redundant Phi (byte*) current_piece#18 (byte*) current_piece#27 -Redundant Phi (byte*) current_piece_gfx#24 (byte*) current_piece_gfx#32 -Redundant Phi (byte) current_piece_char#18 (byte) current_piece_char#23 -Redundant Phi (word) lines_bcd#1 (word) lines_bcd#13 -Redundant Phi (dword) score_bcd#1 (dword) score_bcd#12 -Redundant Phi (byte) level#1 (byte) level#14 -Redundant Phi (byte) current_movedown_slow#16 (byte) current_movedown_slow#19 -Redundant Phi (byte) level_bcd#1 (byte) level_bcd#15 -Redundant Phi (byte*) current_piece#1 (byte*) current_piece#13 -Redundant Phi (byte) current_orientation#1 (byte) current_orientation#20 -Redundant Phi (byte*) current_piece_gfx#0 (byte*) current_piece_gfx#16 -Redundant Phi (byte) current_xpos#0 (byte) current_xpos#23 -Redundant Phi (byte) current_ypos#1 (byte) current_ypos#18 -Redundant Phi (byte) current_piece_char#0 (byte) current_piece_char#12 +Redundant Phi (byte) current_movedown_slow#19 (byte) current_movedown_slow#30 +Redundant Phi (byte) current_ypos#14 (byte) current_ypos#29 +Redundant Phi (byte) current_xpos#105 (byte) current_xpos#34 +Redundant Phi (byte) current_orientation#17 (byte) current_orientation#30 +Redundant Phi (word) lines_bcd#25 (word) lines_bcd#22 +Redundant Phi (dword) score_bcd#25 (dword) score_bcd#22 +Redundant Phi (byte) level#29 (byte) level#26 +Redundant Phi (byte) level_bcd#30 (byte) level_bcd#27 +Redundant Phi (byte*) current_piece#25 (byte*) current_piece#22 +Redundant Phi (byte) current_piece_char#25 (byte) current_piece_char#22 +Redundant Phi (byte*) current_piece_gfx#100 (byte*) current_piece_gfx#28 +Redundant Phi (byte) game_over#24 (byte) game_over#21 +Redundant Phi (word) lines_bcd#14 (word) lines_bcd#17 +Redundant Phi (dword) score_bcd#13 (dword) score_bcd#16 +Redundant Phi (byte) level#15 (byte) level#18 +Redundant Phi (byte) current_movedown_slow#20 (byte) current_movedown_slow#23 +Redundant Phi (byte) level_bcd#16 (byte) level_bcd#19 +Redundant Phi (byte*) current_piece#13 (byte*) current_piece#17 +Redundant Phi (byte) current_piece_char#13 (byte) current_piece_char#16 +Redundant Phi (byte) current_orientation#18 (byte) current_orientation#25 +Redundant Phi (byte*) current_piece_gfx#17 (byte*) current_piece_gfx#21 +Redundant Phi (byte) current_xpos#19 (byte) current_xpos#28 +Redundant Phi (byte) current_ypos#16 (byte) current_ypos#22 +Redundant Phi (byte) game_over#13 (byte) game_over#15 Redundant Phi (byte) play_move_leftright::key_event#1 (byte) play_move_leftright::key_event#0 -Redundant Phi (byte) current_xpos#16 (byte) current_xpos#25 -Redundant Phi (byte) current_ypos#14 (byte) current_ypos#20 -Redundant Phi (byte) current_orientation#15 (byte) current_orientation#22 -Redundant Phi (byte*) current_piece#23 (byte*) current_piece#15 +Redundant Phi (byte) current_xpos#21 (byte) current_xpos#0 +Redundant Phi (byte) current_ypos#18 (byte) current_ypos#0 +Redundant Phi (byte) current_orientation#20 (byte) current_orientation#1 +Redundant Phi (byte*) current_piece#30 (byte*) current_piece#1 Redundant Phi (byte) play_move_rotate::key_event#1 (byte) play_move_rotate::key_event#0 -Redundant Phi (byte) current_orientation#17 (byte) current_orientation#22 -Redundant Phi (byte) current_xpos#21 (byte) current_xpos#26 -Redundant Phi (byte) current_ypos#16 (byte) current_ypos#20 -Redundant Phi (byte*) current_piece#11 (byte*) current_piece#15 -Redundant Phi (byte*) current_piece_gfx#27 (byte*) current_piece_gfx#18 -Redundant Phi (byte) irq_sprite_ptr#16 (byte) irq_sprite_ptr#17 -Redundant Phi (byte) irq_raster_next#19 (byte) irq_raster_next#20 +Redundant Phi (byte) current_orientation#22 (byte) current_orientation#1 +Redundant Phi (byte) current_xpos#26 (byte) current_xpos#1 +Redundant Phi (byte) current_ypos#20 (byte) current_ypos#0 +Redundant Phi (byte*) current_piece#15 (byte*) current_piece#1 +Redundant Phi (byte*) current_piece_gfx#34 (byte*) current_piece_gfx#0 +Redundant Phi (byte) irq_sprite_ypos#14 (byte) irq_sprite_ypos#18 +Redundant Phi (byte) irq_raster_next#17 (byte) irq_raster_next#20 +Redundant Phi (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#18 Redundant Phi (byte*) play_collision::piece_gfx#1 (byte*) play_collision::piece_gfx#2 Redundant Phi (byte) play_collision::ypos2#10 (byte) play_collision::ypos2#2 Redundant Phi (byte) play_collision::l#10 (byte) play_collision::l#6 Redundant Phi (byte) play_collision::xpos#10 (byte) play_collision::col#0 Redundant Phi (byte*) play_collision::playfield_line#1 (byte*) play_collision::playfield_line#0 -Redundant Phi (byte) current_ypos#17 (byte) current_ypos#10 -Redundant Phi (byte) current_xpos#41 (byte) current_xpos#13 -Redundant Phi (byte*) current_piece_gfx#44 (byte*) current_piece_gfx#24 -Redundant Phi (byte) current_piece_char#45 (byte) current_piece_char#18 -Redundant Phi (byte*) current_piece_gfx#15 (byte*) current_piece_gfx#29 -Redundant Phi (byte) current_piece_char#11 (byte) current_piece_char#30 +Redundant Phi (byte) current_ypos#21 (byte) current_ypos#14 +Redundant Phi (byte) current_xpos#49 (byte) current_xpos#105 +Redundant Phi (byte*) current_piece_gfx#53 (byte*) current_piece_gfx#100 +Redundant Phi (byte) current_piece_char#56 (byte) current_piece_char#25 +Redundant Phi (byte*) current_piece_gfx#20 (byte*) current_piece_gfx#36 +Redundant Phi (byte) current_piece_char#15 (byte) current_piece_char#40 Redundant Phi (byte*) play_lock_current::playfield_line#1 (byte*) play_lock_current::playfield_line#0 Redundant Phi (byte) play_lock_current::ypos2#3 (byte) play_lock_current::ypos2#2 Redundant Phi (byte) play_lock_current::l#2 (byte) play_lock_current::l#6 -Redundant Phi (byte) current_xpos#42 (byte) current_xpos#22 +Redundant Phi (byte) current_xpos#50 (byte) current_xpos#27 +Redundant Phi (byte) game_over#27 (byte) game_over#69 Redundant Phi (byte) play_remove_lines::y#2 (byte) play_remove_lines::y#8 Redundant Phi (byte) play_remove_lines::removed#10 (byte) play_remove_lines::removed#11 Redundant Phi (byte) play_remove_lines::removed#3 (byte) play_remove_lines::removed#7 Redundant Phi (byte) play_update_score::removed#1 (byte) play_update_score::removed#0 -Redundant Phi (word) lines_bcd#12 (word) lines_bcd#18 -Redundant Phi (dword) score_bcd#11 (dword) score_bcd#18 -Redundant Phi (byte) level#25 (byte) level#22 -Redundant Phi (byte) current_movedown_slow#32 (byte) current_movedown_slow#15 -Redundant Phi (byte) level_bcd#26 (byte) level_bcd#23 -Redundant Phi (byte) level#13 (byte) level#17 -Redundant Phi (byte) current_movedown_slow#18 (byte) current_movedown_slow#20 -Redundant Phi (byte) level_bcd#14 (byte) level_bcd#18 -Redundant Phi (byte) level#15 (byte) level#25 -Redundant Phi (byte) level_bcd#16 (byte) level_bcd#26 -Redundant Phi (byte) level#17 (byte) level#16 -Redundant Phi (byte) current_movedown_slow#20 (byte) current_movedown_slow#60 -Redundant Phi (byte) level_bcd#18 (byte) level_bcd#55 +Redundant Phi (word) lines_bcd#16 (word) lines_bcd#25 +Redundant Phi (dword) score_bcd#15 (dword) score_bcd#25 +Redundant Phi (byte) level#32 (byte) level#29 +Redundant Phi (byte) current_movedown_slow#39 (byte) current_movedown_slow#19 +Redundant Phi (byte) level_bcd#33 (byte) level_bcd#30 +Redundant Phi (byte) level#17 (byte) level#21 +Redundant Phi (byte) current_movedown_slow#22 (byte) current_movedown_slow#11 +Redundant Phi (byte) level_bcd#18 (byte) level_bcd#22 +Redundant Phi (byte) level#19 (byte) level#32 +Redundant Phi (byte) level_bcd#20 (byte) level_bcd#33 +Redundant Phi (byte) level#21 (byte) level#20 +Redundant Phi (byte) current_movedown_slow#11 (byte) current_movedown_slow#68 +Redundant Phi (byte) level_bcd#22 (byte) level_bcd#63 Redundant Phi (byte) render_screen_show#22 (byte) render_screen_show#0 Redundant Phi (byte) render_screen_render#24 (byte) render_screen_render#0 -Redundant Phi (byte) current_movedown_slow#36 (byte) current_movedown_slow#0 -Redundant Phi (byte*) current_piece#26 (byte*) current_piece#0 -Redundant Phi (byte) current_orientation#36 (byte) current_orientation#0 -Redundant Phi (byte*) current_piece_gfx#31 (byte*) current_piece_gfx#35 -Redundant Phi (byte) current_xpos#43 (byte) current_xpos#102 -Redundant Phi (byte) current_ypos#35 (byte) current_ypos#38 -Redundant Phi (byte) current_piece_char#22 (byte) current_piece_char#25 -Redundant Phi (byte) level#40 (byte) level#0 -Redundant Phi (byte) render_screen_showing#16 (byte) render_screen_showing#0 -Redundant Phi (byte) keyboard_events_size#32 (byte) keyboard_events_size#0 -Redundant Phi (byte) keyboard_modifiers#29 (byte) keyboard_modifiers#0 -Redundant Phi (byte) current_movedown_counter#23 (byte) current_movedown_counter#0 -Redundant Phi (word) lines_bcd#34 (word) lines_bcd#0 -Redundant Phi (dword) score_bcd#34 (dword) score_bcd#0 -Redundant Phi (byte) level_bcd#44 (byte) level_bcd#0 +Redundant Phi (byte) current_movedown_slow#43 (byte) current_movedown_slow#0 +Redundant Phi (byte*) current_piece#35 (byte*) current_piece#0 +Redundant Phi (byte) current_piece_char#31 (byte) current_piece_char#100 +Redundant Phi (byte) current_orientation#45 (byte) current_orientation#0 +Redundant Phi (byte*) current_piece_gfx#102 (byte*) current_piece_gfx#104 +Redundant Phi (byte) current_xpos#107 (byte) current_xpos#104 +Redundant Phi (byte) current_ypos#44 (byte) current_ypos#47 +Redundant Phi (byte) game_over#28 (byte) game_over#0 +Redundant Phi (byte) level#49 (byte) level#0 +Redundant Phi (byte) render_screen_showing#17 (byte) render_screen_showing#0 +Redundant Phi (byte) keyboard_events_size#33 (byte) keyboard_events_size#0 +Redundant Phi (byte) keyboard_modifiers#30 (byte) keyboard_modifiers#0 +Redundant Phi (byte) current_movedown_counter#32 (byte) current_movedown_counter#0 +Redundant Phi (word) lines_bcd#43 (word) lines_bcd#0 +Redundant Phi (dword) score_bcd#43 (dword) score_bcd#0 +Redundant Phi (byte) level_bcd#101 (byte) level_bcd#0 Redundant Phi (byte) render_screen_show#14 (byte) render_screen_show#1 Redundant Phi (byte) render_screen_render#15 (byte) render_screen_render#1 -Redundant Phi (byte) current_movedown_slow#10 (byte) current_movedown_slow#14 -Redundant Phi (byte*) current_piece#14 (byte*) current_piece#13 -Redundant Phi (byte) current_orientation#21 (byte) current_orientation#20 -Redundant Phi (byte*) current_piece_gfx#17 (byte*) current_piece_gfx#16 -Redundant Phi (byte) current_xpos#24 (byte) current_xpos#23 -Redundant Phi (byte) current_ypos#19 (byte) current_ypos#18 -Redundant Phi (byte) current_piece_char#13 (byte) current_piece_char#12 -Redundant Phi (byte) render_screen_show#18 (byte) render_screen_show#16 +Redundant Phi (byte) current_movedown_slow#12 (byte) current_movedown_slow#16 +Redundant Phi (byte*) current_piece#18 (byte*) current_piece#17 +Redundant Phi (byte) current_piece_char#17 (byte) current_piece_char#16 +Redundant Phi (byte) current_orientation#10 (byte) current_orientation#25 +Redundant Phi (byte*) current_piece_gfx#22 (byte*) current_piece_gfx#21 +Redundant Phi (byte) current_xpos#10 (byte) current_xpos#28 +Redundant Phi (byte) current_ypos#23 (byte) current_ypos#22 +Redundant Phi (byte) game_over#16 (byte) game_over#15 +Redundant Phi (byte) render_screen_show#15 (byte) render_screen_show#17 Redundant Phi (byte) render_screen_showing#12 (byte) render_screen_showing#13 Redundant Phi (byte) keyboard_events_size#26 (byte) keyboard_events_size#19 Redundant Phi (byte) keyboard_modifiers#23 (byte) keyboard_modifiers#16 -Redundant Phi (byte) current_movedown_counter#14 (byte) current_movedown_counter#12 -Redundant Phi (byte) current_ypos#36 (byte) current_ypos#21 -Redundant Phi (word) lines_bcd#25 (word) lines_bcd#15 -Redundant Phi (dword) score_bcd#25 (dword) score_bcd#14 -Redundant Phi (byte) level#29 (byte) level#19 -Redundant Phi (byte) current_movedown_slow#37 (byte) current_movedown_slow#12 -Redundant Phi (byte) level_bcd#32 (byte) level_bcd#20 -Redundant Phi (byte*) current_piece#27 (byte*) current_piece#16 -Redundant Phi (byte) current_orientation#37 (byte) current_orientation#10 -Redundant Phi (byte*) current_piece_gfx#32 (byte*) current_piece_gfx#20 -Redundant Phi (byte) current_xpos#101 (byte) current_xpos#10 -Redundant Phi (byte) current_piece_char#23 (byte) current_piece_char#15 -Redundant Phi (byte) render_screen_render#19 (byte) render_screen_render#17 -Redundant Phi (byte) render_screen_showing#17 (byte) render_screen_showing#2 +Redundant Phi (byte) game_over#17 (byte) game_over#19 +Redundant Phi (byte) current_movedown_counter#25 (byte) current_movedown_counter#16 +Redundant Phi (byte) current_ypos#45 (byte) current_ypos#25 +Redundant Phi (word) lines_bcd#32 (word) lines_bcd#19 +Redundant Phi (dword) score_bcd#32 (dword) score_bcd#18 +Redundant Phi (byte) level#36 (byte) level#10 +Redundant Phi (byte) current_movedown_slow#44 (byte) current_movedown_slow#14 +Redundant Phi (byte) level_bcd#39 (byte) level_bcd#11 +Redundant Phi (byte*) current_piece#36 (byte*) current_piece#20 +Redundant Phi (byte) current_piece_char#32 (byte) current_piece_char#19 +Redundant Phi (byte) current_orientation#46 (byte) current_orientation#12 +Redundant Phi (byte*) current_piece_gfx#103 (byte*) current_piece_gfx#105 +Redundant Phi (byte) current_xpos#108 (byte) current_xpos#115 +Redundant Phi (byte) render_screen_render#48 (byte) render_screen_render#17 +Redundant Phi (byte) render_screen_showing#28 (byte) render_screen_showing#2 Redundant Phi (byte) keyboard_events_size#17 (byte) keyboard_events_size#13 Redundant Phi (byte) keyboard_modifiers#15 (byte) keyboard_modifiers#14 Redundant Phi (byte) keyboard_events_size#18 (byte) keyboard_events_size#16 -Redundant Phi (byte) current_movedown_counter#11 (byte) current_movedown_counter#10 -Redundant Phi (byte) current_ypos#20 (byte) current_ypos#13 -Redundant Phi (word) lines_bcd#14 (word) lines_bcd#11 -Redundant Phi (dword) score_bcd#13 (dword) score_bcd#10 -Redundant Phi (byte) level#18 (byte) level#12 -Redundant Phi (byte) current_movedown_slow#11 (byte) current_movedown_slow#17 -Redundant Phi (byte) level_bcd#19 (byte) level_bcd#13 -Redundant Phi (byte*) current_piece#15 (byte*) current_piece#10 -Redundant Phi (byte) current_orientation#22 (byte) current_orientation#14 -Redundant Phi (byte*) current_piece_gfx#18 (byte*) current_piece_gfx#1 -Redundant Phi (byte) current_xpos#25 (byte) current_xpos#1 -Redundant Phi (byte) current_piece_char#14 (byte) current_piece_char#1 -Redundant Phi (byte) current_xpos#26 (byte) current_xpos#19 -Redundant Phi (byte) current_orientation#23 (byte) current_orientation#19 -Redundant Phi (byte*) current_piece_gfx#19 (byte*) current_piece_gfx#14 +Redundant Phi (byte) current_movedown_counter#15 (byte) current_movedown_counter#1 +Redundant Phi (byte) current_ypos#24 (byte) current_ypos#0 +Redundant Phi (word) lines_bcd#18 (word) lines_bcd#1 +Redundant Phi (dword) score_bcd#17 (dword) score_bcd#1 +Redundant Phi (byte) level#22 (byte) level#1 +Redundant Phi (byte) current_movedown_slow#13 (byte) current_movedown_slow#17 +Redundant Phi (byte) level_bcd#10 (byte) level_bcd#1 +Redundant Phi (byte*) current_piece#19 (byte*) current_piece#1 +Redundant Phi (byte) current_piece_char#18 (byte) current_piece_char#0 +Redundant Phi (byte) current_orientation#11 (byte) current_orientation#16 +Redundant Phi (byte*) current_piece_gfx#10 (byte*) current_piece_gfx#16 +Redundant Phi (byte) current_xpos#11 (byte) current_xpos#17 +Redundant Phi (byte) game_over#18 (byte) game_over#1 +Redundant Phi (byte) main::render#3 (byte) main::render#0 +Redundant Phi (byte) render_screen_show#46 (byte) render_screen_show#15 +Redundant Phi (byte) render_screen_render#49 (byte) render_screen_render#48 +Redundant Phi (byte) current_movedown_slow#80 (byte) current_movedown_slow#44 +Redundant Phi (byte*) current_piece#71 (byte*) current_piece#36 +Redundant Phi (byte) current_piece_char#73 (byte) current_piece_char#32 +Redundant Phi (byte) current_orientation#77 (byte) current_orientation#46 +Redundant Phi (byte*) current_piece_gfx#89 (byte*) current_piece_gfx#103 +Redundant Phi (byte) current_xpos#100 (byte) current_xpos#108 +Redundant Phi (byte) current_ypos#76 (byte) current_ypos#45 +Redundant Phi (byte) game_over#64 (byte) game_over#17 +Redundant Phi (byte) render_screen_showing#29 (byte) render_screen_showing#28 +Redundant Phi (byte) keyboard_events_size#52 (byte) keyboard_events_size#18 +Redundant Phi (byte) keyboard_modifiers#43 (byte) keyboard_modifiers#15 +Redundant Phi (byte) current_movedown_counter#44 (byte) current_movedown_counter#25 +Redundant Phi (word) lines_bcd#66 (word) lines_bcd#32 +Redundant Phi (dword) score_bcd#64 (dword) score_bcd#32 +Redundant Phi (byte) level#74 (byte) level#36 +Redundant Phi (byte) level_bcd#76 (byte) level_bcd#39 Redundant Phi (byte) render_screen_render#16 (byte) render_screen_render#11 -Redundant Phi (byte) render_screen_show#15 (byte) render_screen_show#13 -Redundant Phi (byte) irq_sprite_ptr#15 (byte) irq_sprite_ptr#16 -Redundant Phi (byte) irq_raster_next#18 (byte) irq_raster_next#19 -Redundant Phi (byte) render_screen_show#17 (byte) render_screen_show#16 +Redundant Phi (byte) render_screen_show#16 (byte) render_screen_show#13 +Redundant Phi (byte) irq_sprite_ypos#9 (byte) irq_sprite_ypos#14 +Redundant Phi (byte) irq_raster_next#10 (byte) irq_raster_next#17 +Redundant Phi (byte) irq_sprite_ptr#14 (byte) irq_sprite_ptr#17 +Redundant Phi (byte) render_screen_show#18 (byte) render_screen_show#17 Redundant Phi (byte) render_screen_render#18 (byte) render_screen_render#17 -Redundant Phi (byte) current_movedown_slow#13 (byte) current_movedown_slow#12 -Redundant Phi (byte*) current_piece#17 (byte*) current_piece#16 -Redundant Phi (byte) current_orientation#11 (byte) current_orientation#10 -Redundant Phi (byte*) current_piece_gfx#10 (byte*) current_piece_gfx#20 -Redundant Phi (byte) current_xpos#11 (byte) current_xpos#10 -Redundant Phi (byte) current_ypos#22 (byte) current_ypos#21 -Redundant Phi (byte) current_piece_char#16 (byte) current_piece_char#15 +Redundant Phi (byte) current_movedown_slow#15 (byte) current_movedown_slow#14 +Redundant Phi (byte*) current_piece#10 (byte*) current_piece#20 +Redundant Phi (byte) current_piece_char#20 (byte) current_piece_char#19 +Redundant Phi (byte) current_orientation#13 (byte) current_orientation#12 +Redundant Phi (byte*) current_piece_gfx#12 (byte*) current_piece_gfx#105 +Redundant Phi (byte) current_xpos#13 (byte) current_xpos#115 +Redundant Phi (byte) current_ypos#10 (byte) current_ypos#25 +Redundant Phi (byte) game_over#10 (byte) game_over#19 Redundant Phi (byte) render_screen_showing#10 (byte) render_screen_showing#13 Redundant Phi (byte) keyboard_events_size#20 (byte) keyboard_events_size#19 Redundant Phi (byte) keyboard_modifiers#17 (byte) keyboard_modifiers#16 -Redundant Phi (byte) current_movedown_counter#13 (byte) current_movedown_counter#12 -Redundant Phi (word) lines_bcd#16 (word) lines_bcd#15 -Redundant Phi (dword) score_bcd#15 (dword) score_bcd#14 -Redundant Phi (byte) level#20 (byte) level#19 -Redundant Phi (byte) level_bcd#10 (byte) level_bcd#20 +Redundant Phi (byte) current_movedown_counter#17 (byte) current_movedown_counter#16 +Redundant Phi (word) lines_bcd#20 (word) lines_bcd#19 +Redundant Phi (dword) score_bcd#19 (dword) score_bcd#18 +Redundant Phi (byte) level#11 (byte) level#10 +Redundant Phi (byte) level_bcd#12 (byte) level_bcd#11 Successful SSA optimization Pass2RedundantPhiElimination Redundant Phi (byte) keyboard_event_scan::row#4 (byte) keyboard_event_scan::row#2 Redundant Phi (byte) render_moving::ypos2#4 (byte) render_moving::ypos2#2 Redundant Phi (byte) render_moving::l#2 (byte) render_moving::l#4 Redundant Phi (byte) render_screen_render#31 (byte) render_screen_render#14 -Redundant Phi (byte) current_xpos#48 (byte) current_xpos#12 -Redundant Phi (byte*) current_piece_gfx#54 (byte*) current_piece_gfx#22 -Redundant Phi (byte) current_piece_char#65 (byte) current_piece_char#38 +Redundant Phi (byte) current_xpos#58 (byte) current_xpos#14 +Redundant Phi (byte*) current_piece_gfx#63 (byte*) current_piece_gfx#26 +Redundant Phi (byte) current_piece_char#76 (byte) current_piece_char#48 +Redundant Phi (byte) render_screen_show#21 (byte) render_screen_show#17 +Redundant Phi (byte) render_screen_render#19 (byte) render_screen_render#17 +Redundant Phi (byte) render_screen_showing#16 (byte) render_screen_showing#2 +Redundant Phi (byte) keyboard_events_size#32 (byte) keyboard_events_size#16 +Redundant Phi (byte) keyboard_modifiers#29 (byte) keyboard_modifiers#14 Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) keyboard_event_scan::$1 if((byte) keyboard_event_scan::row_scan#0!=*((byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@2 Simple Condition (bool~) keyboard_event_scan::$13 if((byte) keyboard_event_scan::row#1!=rangelast(0,7)) goto keyboard_event_scan::@1 @@ -7269,7 +8087,7 @@ Simple Condition (bool~) keyboard_event_scan::$24 if((byte~) keyboard_event_scan Simple Condition (bool~) keyboard_event_scan::$28 if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@12 Simple Condition (bool~) keyboard_event_get::$0 if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@1 Simple Condition (bool~) render_init::$15 if((byte) render_init::i#1!=rangelast(0,render_init::$12)) goto render_init::@1 -Simple Condition (bool~) render_show::$0 if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::@1 +Simple Condition (bool~) render_show::$0 if((byte) render_screen_show#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::@1 Simple Condition (bool~) render_score::$0 if((byte) render_screen_render#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@1 Simple Condition (bool~) render_bcd::$2 if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 Simple Condition (bool~) render_screen_original::$4 if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 @@ -7283,16 +8101,17 @@ Simple Condition (bool~) render_moving::$7 if((byte) render_moving::current_cell Simple Condition (bool~) render_moving::$10 if((byte) render_moving::c#1!=rangelast(0,3)) goto render_moving::@4 Simple Condition (bool~) render_moving::$9 if((byte) render_moving::xpos#2>=(byte) PLAYFIELD_COLS#0) goto render_moving::@6 Simple Condition (bool~) sprites_init::$4 if((byte) sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1 -Simple Condition (bool~) sprites_irq::$0 if(*((byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 -Simple Condition (bool~) sprites_irq::$1 if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -Simple Condition (bool~) sprites_irq::$2 if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 -Simple Condition (bool~) sprites_irq::$6 if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 +Simple Condition (bool~) sprites_irq::$1 if(*((byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 +Simple Condition (bool~) sprites_irq::$2 if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 +Simple Condition (bool~) sprites_irq::$3 if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 +Simple Condition (bool~) sprites_irq::$4 if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 Simple Condition (bool~) play_init::$2 if((byte) play_init::j#1!=rangelast(0,play_init::$0)) goto play_init::@1 Simple Condition (bool~) play_init::$5 if((byte) play_init::b#1!=rangelast(0,4)) goto play_init::@2 +Simple Condition (bool~) play_movement::$2 if((byte) game_over#14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 Simple Condition (bool~) play_move_down::$1 if((byte) play_move_down::key_event#0!=(byte) KEY_SPACE#0) goto play_move_down::@1 Simple Condition (bool~) play_move_down::$4 if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -Simple Condition (bool~) play_move_down::$8 if((byte) current_movedown_counter#1<(byte) current_movedown_slow#12) goto play_move_down::@4 -Simple Condition (bool~) play_move_down::$6 if((byte) current_movedown_counter#1<(byte) current_movedown_fast#0) goto play_move_down::@3 +Simple Condition (bool~) play_move_down::$8 if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@4 +Simple Condition (bool~) play_move_down::$6 if((byte) current_movedown_counter#12<(byte) current_movedown_fast#0) goto play_move_down::@3 Simple Condition (bool~) play_move_down::$10 if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@5 Simple Condition (bool~) play_move_down::$13 if((byte~) play_move_down::$12==(byte) COLLISION_NONE#0) goto play_move_down::@6 Simple Condition (bool~) play_move_leftright::$0 if((byte) play_move_leftright::key_event#0==(byte) KEY_COMMA#0) goto play_move_leftright::@1 @@ -7309,10 +8128,11 @@ Simple Condition (bool~) play_collision::$9 if((byte~) play_collision::$7==(byte Simple Condition (bool~) play_collision::$11 if((byte) play_collision::col#2<(byte) PLAYFIELD_COLS#0) goto play_collision::@6 Simple Condition (bool~) play_collision::$13 if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@7 Simple Condition (bool~) play_collision::$15 if((byte) play_collision::l#1!=rangelast(0,3)) goto play_collision::@1 -Simple Condition (bool~) play_lock_current::$2 if(*((byte*) current_piece_gfx#29 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 +Simple Condition (bool~) play_lock_current::$2 if(*((byte*) current_piece_gfx#36 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 Simple Condition (bool~) play_lock_current::$3 if((byte) play_lock_current::c#1!=rangelast(0,3)) goto play_lock_current::@2 Simple Condition (bool~) play_lock_current::$4 if((byte) play_lock_current::l#1!=rangelast(0,3)) goto play_lock_current::@1 Simple Condition (bool~) play_spawn_current::$0 if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 +Simple Condition (bool~) play_spawn_current::$7 if((byte~) play_spawn_current::$5!=(byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@4 Simple Condition (bool~) play_remove_lines::$7 if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@3 Simple Condition (bool~) play_remove_lines::$8 if((byte) play_remove_lines::x#1!=rangelast(0,play_remove_lines::$5)) goto play_remove_lines::@2 Simple Condition (bool~) play_remove_lines::$10 if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 @@ -7320,11 +8140,12 @@ Simple Condition (bool~) play_remove_lines::$12 if((byte) play_remove_lines::y#1 Simple Condition (bool~) play_remove_lines::$13 if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 Simple Condition (bool~) play_update_score::$1 if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@1 Simple Condition (bool~) play_update_score::$8 if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@2 -Simple Condition (bool~) play_increase_level::$0 if((byte) level#16>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@1 +Simple Condition (bool~) play_increase_level::$0 if((byte) level#20>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@1 Simple Condition (bool~) play_increase_level::$3 if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 Simple Condition (bool~) play_increase_level::$5 if((byte) play_increase_level::b#1!=rangelast(0,4)) goto play_increase_level::@4 Simple Condition (bool~) main::$8 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -Simple Condition (bool~) main::$16 if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 +Simple Condition (bool~) main::$13 if((byte) game_over#19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 +Simple Condition (bool~) main::$16 if((byte) main::render#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12 Successful SSA optimization Pass2ConditionalJumpSimplification Rewriting && if()-condition to two if()s (bool~) render_moving::$4 ← (bool~) render_moving::$1 && (bool~) render_moving::$3 Successful SSA optimization Pass2ConditionalAndOrRewriting @@ -7513,6 +8334,7 @@ Constant (const dword) score_bcd#0 = 0 Constant (const word) lines_bcd#0 = 0 Constant (const byte) level_bcd#0 = 0 Constant (const byte) level#0 = 0 +Constant (const byte) game_over#0 = 0 Constant (const byte) PLAYFIELD_SCREEN_ORIGINAL_WIDTH#0 = 32 Constant (const byte/signed byte/word/signed word/dword/signed dword) render_init::$6 = 2*40 Constant (const byte/signed byte/word/signed word/dword/signed dword) render_init::$9 = 2*40 @@ -7520,7 +8342,7 @@ Constant (const byte) render_init::i#0 = 0 Constant (const byte) render_screen_show#1 = 0 Constant (const byte) render_screen_render#1 = 64 Constant (const byte) render_show::d018val#0 = 0 -Constant (const dword*) render_score::$1 = &score_bcd#10 +Constant (const dword*) render_score::$1 = &score_bcd#42 Constant (const byte/word/signed word/dword/signed dword) render_score::$3 = 40*5 Constant (const byte) render_bcd::only_low#0 = 0 Constant (const byte) render_bcd::only_low#1 = 0 @@ -7530,7 +8352,7 @@ Constant (const byte) render_bcd::only_low#3 = 1 Constant (const byte) render_bcd::only_low#4 = 0 Constant (const word/signed word/dword/signed dword) render_score::$17 = 40*19 Constant (const byte) render_bcd::only_low#5 = 0 -Constant (const byte) render_bcd::ZERO_CHAR#0 = 51 +Constant (const byte) render_bcd::ZERO_CHAR#0 = 53 Constant (const byte) render_screen_original::SPACE#0 = 0 Constant (const byte/signed byte/word/signed word/dword/signed dword) render_screen_original::$0 = 32*2 Constant (const byte/signed byte/word/signed word/dword/signed dword) render_screen_original::$2 = 32*2 @@ -7543,47 +8365,48 @@ Constant (const byte) render_moving::l#0 = 0 Constant (const byte) render_moving::c#0 = 0 Constant (const byte/signed byte/word/signed word/dword/signed dword) sprites_init::$0 = 15*8 Constant (const byte) sprites_init::s#0 = 0 -Constant (const byte) IRQ_RASTER_FIRST#0 = 49 +Constant (const byte) SPRITES_FIRST_YPOS#0 = 49 Constant (const void()*) sprites_irq_init::$0 = &sprites_irq -Constant (const byte/signed byte/word/signed word/dword/signed dword) $5 = 4*4 -Constant (const byte[$6]) PIECE_T#0 = { 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 } -Constant (const byte/signed byte/word/signed word/dword/signed dword) $7 = 4*4 -Constant (const byte[$8]) PIECE_S#0 = { 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 } -Constant (const byte/signed byte/word/signed word/dword/signed dword) $9 = 4*4 -Constant (const byte[$10]) PIECE_Z#0 = { 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 } -Constant (const byte/signed byte/word/signed word/dword/signed dword) $11 = 4*4 -Constant (const byte[$12]) PIECE_L#0 = { 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 } -Constant (const byte/signed byte/word/signed word/dword/signed dword) $13 = 4*4 -Constant (const byte[$14]) PIECE_J#0 = { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } -Constant (const byte/signed byte/word/signed word/dword/signed dword) $15 = 4*4 -Constant (const byte[$16]) PIECE_O#0 = { 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0 } -Constant (const byte/signed byte/word/signed word/dword/signed dword) $17 = 4*4 -Constant (const byte[$18]) PIECE_I#0 = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 } +Constant (const byte/signed byte/word/signed word/dword/signed dword) $8 = 4*4 +Constant (const byte[$9]) PIECE_T#0 = { 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 } +Constant (const byte/signed byte/word/signed word/dword/signed dword) $10 = 4*4 +Constant (const byte[$11]) PIECE_S#0 = { 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 } +Constant (const byte/signed byte/word/signed word/dword/signed dword) $12 = 4*4 +Constant (const byte[$13]) PIECE_Z#0 = { 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 } +Constant (const byte/signed byte/word/signed word/dword/signed dword) $14 = 4*4 +Constant (const byte[$15]) PIECE_L#0 = { 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 } +Constant (const byte/signed byte/word/signed word/dword/signed dword) $16 = 4*4 +Constant (const byte[$17]) PIECE_J#0 = { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } +Constant (const byte/signed byte/word/signed word/dword/signed dword) $18 = 4*4 +Constant (const byte[$19]) PIECE_O#0 = { 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0 } +Constant (const byte/signed byte/word/signed word/dword/signed dword) $20 = 4*4 +Constant (const byte[$21]) PIECE_I#0 = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 } Constant (const byte[]) PIECES_CHARS#0 = { 100, 101, 165, 101, 100, 100, 165 } Constant (const byte[]) PIECES_START_X#0 = { 4, 4, 4, 4, 4, 4, 4 } Constant (const byte[]) PIECES_START_Y#0 = { 1, 1, 1, 1, 1, 0, 1 } Constant (const byte*) current_piece#0 = ((byte*))0 Constant (const byte) current_orientation#0 = 0 +Constant (const byte[]) MOVEDOWN_SLOW_SPEEDS#0 = { 48, 43, 38, 33, 28, 23, 18, 13, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 } Constant (const byte) current_movedown_slow#0 = 48 Constant (const byte) current_movedown_fast#0 = 2 Constant (const byte) current_movedown_counter#0 = 0 Constant (const dword[]) SCORE_BASE_BCD#0 = { 0, 64, 256, 768, 4608 } Constant (const dword[5]) score_add_bcd#0 = { fill( 5, 0) } -Constant (const byte[]) MOVEDOWN_SLOW_SPEEDS#0 = { 48, 43, 38, 33, 28, 23, 18, 13, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 } Constant (const byte) play_init::idx#0 = 0 Constant (const byte) play_init::j#0 = 0 Constant (const byte) play_init::b#0 = 0 +Constant (const byte) play_movement::render#0 = 0 Constant (const byte) play_move_down::movedown#0 = 0 -Constant (const byte) play_move_down::return#0 = 0 -Constant (const byte) current_movedown_counter#2 = 0 -Constant (const byte) play_move_down::return#1 = 1 -Constant (const byte) play_move_leftright::return#0 = 1 -Constant (const byte) play_move_leftright::return#2 = 0 -Constant (const byte) play_move_leftright::return#3 = 1 +Constant (const byte) play_move_down::return#1 = 0 +Constant (const byte) current_movedown_counter#4 = 0 +Constant (const byte) play_move_down::return#2 = 1 +Constant (const byte) play_move_leftright::return#1 = 1 +Constant (const byte) play_move_leftright::return#3 = 0 +Constant (const byte) play_move_leftright::return#4 = 1 Constant (const byte) play_move_rotate::orientation#0 = 128 -Constant (const byte) play_move_rotate::return#0 = 0 -Constant (const byte) play_move_rotate::return#2 = 0 -Constant (const byte) play_move_rotate::return#3 = 1 +Constant (const byte) play_move_rotate::return#1 = 0 +Constant (const byte) play_move_rotate::return#3 = 0 +Constant (const byte) play_move_rotate::return#4 = 1 Constant (const byte) COLLISION_NONE#0 = 0 Constant (const byte) COLLISION_PLAYFIELD#0 = 1 Constant (const byte) COLLISION_BOTTOM#0 = 2 @@ -7596,13 +8419,14 @@ Constant (const byte) play_lock_current::i#0 = 0 Constant (const byte) play_lock_current::l#0 = 0 Constant (const byte) play_lock_current::c#0 = 0 Constant (const byte) play_spawn_current::piece_idx#0 = 7 -Constant (const byte) current_orientation#20 = 0 +Constant (const byte) current_orientation#25 = 0 +Constant (const byte) game_over#5 = 1 Constant (const byte) play_remove_lines::removed#0 = 0 Constant (const byte) play_remove_lines::y#0 = 0 Constant (const byte) play_remove_lines::full#0 = 1 Constant (const byte) play_remove_lines::x#0 = 0 Constant (const byte) play_remove_lines::full#1 = 0 -Constant (const byte) current_movedown_slow#7 = 1 +Constant (const byte) current_movedown_slow#9 = 1 Constant (const byte) play_increase_level::b#0 = 0 Constant (const byte) main::render#0 = 0 Successful SSA optimization Pass2ConstantIdentification @@ -7643,24 +8467,26 @@ Constant (const byte/signed word/word/dword/signed dword) render_playfield::$1 = Constant (const byte/signed word/word/dword/signed dword) render_playfield::$4 = PLAYFIELD_COLS#0-1 Constant (const byte/signed word/word/dword/signed dword) render_moving::$2 = 2*PLAYFIELD_LINES#0 Constant (const byte) sprites_init::xpos#0 = 24+sprites_init::$0 +Constant (const byte/signed word/word/dword/signed dword) $4 = SPRITES_FIRST_YPOS#0+19 +Constant (const byte/signed word/word/dword/signed dword) $5 = SPRITES_FIRST_YPOS#0+21 Constant (const word) toSpritePtr1_$0#0 = ((word))PLAYFIELD_SPRITES#0 Constant (const byte*) sprites_irq::toSpritePtr2_sprite#0 = PLAYFIELD_SPRITES#0 -Constant (const byte/signed word/word/dword/signed dword/signed byte) $6 = $5*4 -Constant (const byte/signed word/word/dword/signed dword/signed byte) $8 = $7*4 -Constant (const byte/signed word/word/dword/signed dword/signed byte) $10 = $9*4 -Constant (const byte/signed word/word/dword/signed dword/signed byte) $12 = $11*4 -Constant (const byte/signed word/word/dword/signed dword/signed byte) $14 = $13*4 -Constant (const byte/signed word/word/dword/signed dword/signed byte) $16 = $15*4 -Constant (const byte/signed word/word/dword/signed dword/signed byte) $18 = $17*4 -Constant (const word) $19 = ((word))PIECE_T#0 -Constant (const word) $20 = ((word))PIECE_S#0 -Constant (const word) $21 = ((word))PIECE_Z#0 -Constant (const word) $22 = ((word))PIECE_J#0 -Constant (const word) $23 = ((word))PIECE_O#0 -Constant (const word) $24 = ((word))PIECE_I#0 -Constant (const word) $25 = ((word))PIECE_L#0 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $9 = $8*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $11 = $10*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $13 = $12*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $15 = $14*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $17 = $16*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $19 = $18*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $21 = $20*4 +Constant (const word) $22 = ((word))PIECE_T#0 +Constant (const word) $23 = ((word))PIECE_S#0 +Constant (const word) $24 = ((word))PIECE_Z#0 +Constant (const word) $25 = ((word))PIECE_J#0 +Constant (const word) $26 = ((word))PIECE_O#0 +Constant (const word) $27 = ((word))PIECE_I#0 +Constant (const word) $28 = ((word))PIECE_L#0 Constant (const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 = { fill( PLAYFIELD_LINES#0, 0) } -Constant (const byte/signed word/word/dword/signed dword) $26 = PLAYFIELD_LINES#0+1 +Constant (const byte/signed word/word/dword/signed dword) $29 = PLAYFIELD_LINES#0+1 Constant (const byte/signed word/word/dword/signed dword) play_init::$0 = PLAYFIELD_LINES#0-1 Constant (const byte) play_init::$3 = PLAYFIELD_COLS#0*PLAYFIELD_LINES#0 Constant (const byte) keyboard_event_pressed::keycode#4 = KEY_SPACE#0 @@ -7671,6 +8497,7 @@ Constant (const byte) play_collision::return#6 = COLLISION_LEFT#0 Constant (const byte) play_collision::return#7 = COLLISION_RIGHT#0 Constant (const byte) play_collision::return#8 = COLLISION_PLAYFIELD#0 Constant (const byte) play_collision::return#9 = COLLISION_NONE#0 +Constant (const byte) play_collision::orientation#4 = current_orientation#25 Constant (const byte) play_remove_lines::$0 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0 Constant (const byte) play_remove_lines::$2 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0 Constant (const byte/signed word/word/dword/signed dword) play_remove_lines::$4 = PLAYFIELD_LINES#0-1 @@ -7691,10 +8518,11 @@ Constant (const word) render_bcd::offset#2 = render_score::score_offset#0+4 Constant (const word) render_bcd::offset#3 = render_score::lines_offset#0 Constant (const word) render_bcd::offset#4 = render_score::lines_offset#0+1 Constant (const word) render_bcd::offset#5 = render_score::level_offset#0 +Constant (const byte) IRQ_RASTER_FIRST#0 = $4 Constant (const word) toSpritePtr1_$1#0 = toSpritePtr1_$0#0>>6 Constant (const word) sprites_irq::toSpritePtr2_$0#0 = ((word))sprites_irq::toSpritePtr2_sprite#0 -Constant (const word[]) PIECES#0 = { $19, $20, $21, $22, $23, $24, $25 } -Constant (const byte[$26]) playfield_lines_idx#0 = { fill( $26, 0) } +Constant (const word[]) PIECES#0 = { $22, $23, $24, $25, $26, $27, $28 } +Constant (const byte[$29]) playfield_lines_idx#0 = { fill( $29, 0) } Constant (const byte) play_remove_lines::r#0 = play_remove_lines::$0-1 Constant (const byte) play_remove_lines::w#0 = play_remove_lines::$2-1 Successful SSA optimization Pass2ConstantIdentification @@ -7704,7 +8532,7 @@ Constant (const word) render_show::toD0181_$1#0 = render_show::toD0181_$0#0&1638 Constant (const byte) render_show::toD0181_$5#0 = >render_show::toD0181_$4#0 Constant (const word) render_show::toD0182_$1#0 = render_show::toD0182_$0#0&16383 Constant (const byte) render_show::toD0182_$5#0 = >render_show::toD0182_$4#0 -Constant (const byte) toSpritePtr1_$2#0 = ((byte))toSpritePtr1_$1#0 +Constant (const byte) toSpritePtr1_return#0 = ((byte))toSpritePtr1_$1#0 Constant (const word) sprites_irq::toSpritePtr2_$1#0 = sprites_irq::toSpritePtr2_$0#0>>6 Constant (const byte*) play_init::pli#0 = playfield#0 Successful SSA optimization Pass2ConstantIdentification @@ -7713,7 +8541,7 @@ Constant (const word) render_show::toD0181_$2#0 = render_show::toD0181_$1#0<<2 Constant (const byte) render_show::toD0181_$6#0 = render_show::toD0181_$5#0>>2 Constant (const word) render_show::toD0182_$2#0 = render_show::toD0182_$1#0<<2 Constant (const byte) render_show::toD0182_$6#0 = render_show::toD0182_$5#0>>2 -Constant (const byte) toSpritePtr1_return#0 = toSpritePtr1_$2#0 +Constant (const byte/signed word/word/dword/signed dword) $7 = toSpritePtr1_return#0+3 Constant (const byte) sprites_irq::toSpritePtr2_$2#0 = ((byte))sprites_irq::toSpritePtr2_$1#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 = 3^render_init::vicSelectGfxBank1_toDd001_$2#0 @@ -7721,15 +8549,13 @@ Constant (const byte) render_show::toD0181_$3#0 = >render_show::toD0181_$2#0 Constant (const byte) render_show::toD0181_$7#0 = render_show::toD0181_$6#0&15 Constant (const byte) render_show::toD0182_$3#0 = >render_show::toD0182_$2#0 Constant (const byte) render_show::toD0182_$7#0 = render_show::toD0182_$6#0&15 -Constant (const byte) toSpritePtr1_return#1 = toSpritePtr1_return#0 Constant (const byte) sprites_irq::toSpritePtr2_return#0 = sprites_irq::toSpritePtr2_$2#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) render_show::toD0181_return#0 = render_show::toD0181_$3#0|render_show::toD0181_$7#0 Constant (const byte) render_show::toD0182_return#0 = render_show::toD0182_$3#0|render_show::toD0182_$7#0 -Constant (const byte) $4 = toSpritePtr1_return#1 Constant (const byte) sprites_irq::toSpritePtr2_return#1 = sprites_irq::toSpritePtr2_return#0 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte) sprites_irq::$3 = sprites_irq::toSpritePtr2_return#1 +Constant (const byte) sprites_irq::$5 = sprites_irq::toSpritePtr2_return#1 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(render_score::score_bytes#0+2) Consolidated array index constant in *(render_score::score_bytes#0+1) @@ -7750,10 +8576,25 @@ Consolidated array index constant in *(playfield_lines_idx#0+PLAYFIELD_LINES#0) Consolidated array index constant in *(MOVEDOWN_SLOW_SPEEDS#0+level#0) Successful SSA optimization Pass2ConstantAdditionElimination if() condition always true - replacing block destination if(true) goto main::@2 +Removing PHI-reference to removed block (main::@8) in block main::@11 +Removing PHI-reference to removed block (main::@8) in block main::@11 +Removing PHI-reference to removed block (main::@8) in block main::@11 +Removing PHI-reference to removed block (main::@8) in block main::@11 +Removing PHI-reference to removed block (main::@8) in block main::@11 +Removing PHI-reference to removed block (main::@8) in block main::@11 +Removing PHI-reference to removed block (main::@8) in block main::@11 +Removing PHI-reference to removed block (main::@8) in block main::@11 +Removing PHI-reference to removed block (main::@8) in block main::@11 +Removing PHI-reference to removed block (main::@8) in block main::@11 +Removing PHI-reference to removed block (main::@8) in block main::@11 +Removing PHI-reference to removed block (main::@8) in block main::@11 +Removing PHI-reference to removed block (main::@8) in block main::@11 +Removing PHI-reference to removed block (main::@8) in block main::@11 +if() condition always true - replacing block destination if(true) goto main::@9 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars -Eliminating Noop Cast (byte*) current_piece#13 ← ((byte*)) *((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) +Eliminating Noop Cast (byte*) current_piece#17 ← ((byte*)) *((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) Successful SSA optimization Pass2NopCastElimination Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks @@ -7814,6 +8655,7 @@ Culled Empty Block (label) render_moving::@6 Culled Empty Block (label) toSpritePtr1_@return Culled Empty Block (label) sprites_irq::toSpritePtr2_@return Culled Empty Block (label) @25 +Culled Empty Block (label) play_movement::@2 Culled Empty Block (label) play_move_down::@3 Culled Empty Block (label) play_move_down::@5 Culled Empty Block (label) play_move_down::@22 @@ -7823,56 +8665,72 @@ Culled Empty Block (label) play_move_leftright::@4 Culled Empty Block (label) play_move_leftright::@5 Culled Empty Block (label) play_move_rotate::@7 Culled Empty Block (label) play_move_rotate::@5 -Culled Empty Block (label) @29 +Culled Empty Block (label) @30 Culled Empty Block (label) play_collision::@9 Culled Empty Block (label) play_collision::@11 Culled Empty Block (label) play_collision::@13 Culled Empty Block (label) play_collision::@7 Culled Empty Block (label) play_collision::@15 Culled Empty Block (label) play_collision::@18 +Culled Empty Block (label) play_spawn_current::@4 Culled Empty Block (label) play_remove_lines::@7 Culled Empty Block (label) play_update_score::@1 Culled Empty Block (label) play_update_score::@2 Culled Empty Block (label) play_update_score::@5 Culled Empty Block (label) play_increase_level::@1 -Culled Empty Block (label) main::@22 +Culled Empty Block (label) main::@32 Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@5 -Culled Empty Block (label) main::@7 -Culled Empty Block (label) main::@32 -Culled Empty Block (label) @38 +Culled Empty Block (label) main::@8 +Culled Empty Block (label) main::@40 +Culled Empty Block (label) @39 Successful SSA optimization Pass2CullEmptyBlocks +Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0 Alias (byte) render_screen_showing#1 = (byte) render_screen_showing#2 +Alias (byte) main::render#1 = (byte) main::render#2 Successful SSA optimization Pass2AliasElimination +Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0 Self Phi Eliminated (byte) render_screen_original::SPACE#3 Self Phi Eliminated (byte) render_screen_render#13 Self Phi Eliminated (byte) render_screen_render#14 -Self Phi Eliminated (byte) current_xpos#12 -Self Phi Eliminated (byte*) current_piece_gfx#22 -Self Phi Eliminated (byte) current_piece_char#38 +Self Phi Eliminated (byte) current_xpos#14 +Self Phi Eliminated (byte*) current_piece_gfx#26 +Self Phi Eliminated (byte) current_piece_char#48 Self Phi Eliminated (byte) play_collision::col#0 Self Phi Eliminated (byte*) play_collision::piece_gfx#2 -Self Phi Eliminated (byte) current_xpos#22 -Self Phi Eliminated (byte*) current_piece_gfx#29 -Self Phi Eliminated (byte) current_piece_char#30 -Self Phi Eliminated (byte) render_screen_show#16 -Self Phi Eliminated (byte) render_screen_render#17 +Self Phi Eliminated (byte) current_xpos#27 +Self Phi Eliminated (byte*) current_piece_gfx#36 +Self Phi Eliminated (byte) current_piece_char#40 Successful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte) render_screen_original::SPACE#3 (const byte) render_screen_original::SPACE#0 Redundant Phi (byte) render_screen_render#13 (byte) render_screen_render#21 Redundant Phi (byte) render_screen_render#14 (byte) render_screen_render#30 -Redundant Phi (byte) current_xpos#12 (byte) current_xpos#47 -Redundant Phi (byte*) current_piece_gfx#22 (byte*) current_piece_gfx#53 -Redundant Phi (byte) current_piece_char#38 (byte) current_piece_char#64 -Redundant Phi (byte) play_collision::col#0 (byte) play_collision::xpos#5 +Redundant Phi (byte) current_xpos#14 (byte) current_xpos#57 +Redundant Phi (byte*) current_piece_gfx#26 (byte*) current_piece_gfx#62 +Redundant Phi (byte) current_piece_char#48 (byte) current_piece_char#75 +Redundant Phi (byte) play_collision::col#0 (byte) play_collision::xpos#6 Redundant Phi (byte*) play_collision::piece_gfx#2 (byte*) play_collision::piece_gfx#0 -Redundant Phi (byte) current_xpos#22 (byte) current_xpos#10 -Redundant Phi (byte*) current_piece_gfx#29 (byte*) current_piece_gfx#20 -Redundant Phi (byte) current_piece_char#30 (byte) current_piece_char#15 +Redundant Phi (byte) current_xpos#27 (byte) current_xpos#115 +Redundant Phi (byte*) current_piece_gfx#36 (byte*) current_piece_gfx#105 +Redundant Phi (byte) current_piece_char#40 (byte) current_piece_char#19 +Redundant Phi (byte) current_movedown_slow#58 (byte) current_movedown_slow#21 +Redundant Phi (byte*) current_piece#49 (byte*) current_piece#14 +Redundant Phi (byte) current_piece_char#44 (byte) current_piece_char#14 +Redundant Phi (byte) current_orientation#57 (byte) current_orientation#16 +Redundant Phi (byte*) current_piece_gfx#58 (byte*) current_piece_gfx#16 +Redundant Phi (byte) current_xpos#101 (byte) current_xpos#17 +Redundant Phi (byte) current_ypos#28 (byte) current_ypos#17 +Redundant Phi (byte) game_over#39 (byte) game_over#14 +Redundant Phi (byte) current_movedown_counter#31 (byte) current_movedown_counter#14 +Redundant Phi (word) lines_bcd#42 (word) lines_bcd#15 +Redundant Phi (dword) score_bcd#42 (dword) score_bcd#14 +Redundant Phi (byte) level#48 (byte) level#16 +Redundant Phi (byte) level_bcd#52 (byte) level_bcd#17 Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) render_moving::$1 if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@13 Simple Condition (bool~) render_moving::$3 if((byte) render_moving::ypos2#2<(const byte/signed word/word/dword/signed dword) render_moving::$2) goto render_moving::@2 Successful SSA optimization Pass2ConditionalJumpSimplification +Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0 Inlining constant with var siblings (const byte) keyboard_event_scan::keycode#0 Inlining constant with var siblings (const byte) keyboard_event_scan::row#0 Inlining constant with var siblings (const byte) keyboard_event_scan::col#0 @@ -7919,16 +8777,17 @@ Inlining constant with var siblings (const byte) play_init::idx#0 Inlining constant with var siblings (const byte) play_init::j#0 Inlining constant with var siblings (const byte) play_init::b#0 Inlining constant with var siblings (const byte*) play_init::pli#0 +Inlining constant with var siblings (const byte) play_movement::render#0 Inlining constant with var siblings (const byte) play_move_down::movedown#0 -Inlining constant with var siblings (const byte) play_move_down::return#0 Inlining constant with var siblings (const byte) play_move_down::return#1 +Inlining constant with var siblings (const byte) play_move_down::return#2 Inlining constant with var siblings (const byte) play_move_down::movedown#1 -Inlining constant with var siblings (const byte) play_move_leftright::return#0 -Inlining constant with var siblings (const byte) play_move_leftright::return#2 +Inlining constant with var siblings (const byte) play_move_leftright::return#1 Inlining constant with var siblings (const byte) play_move_leftright::return#3 -Inlining constant with var siblings (const byte) play_move_rotate::return#0 -Inlining constant with var siblings (const byte) play_move_rotate::return#2 +Inlining constant with var siblings (const byte) play_move_leftright::return#4 +Inlining constant with var siblings (const byte) play_move_rotate::return#1 Inlining constant with var siblings (const byte) play_move_rotate::return#3 +Inlining constant with var siblings (const byte) play_move_rotate::return#4 Inlining constant with var siblings (const byte) play_collision::i#0 Inlining constant with var siblings (const byte) play_collision::l#0 Inlining constant with var siblings (const byte) play_collision::c#0 @@ -7937,6 +8796,7 @@ Inlining constant with var siblings (const byte) play_collision::return#6 Inlining constant with var siblings (const byte) play_collision::return#7 Inlining constant with var siblings (const byte) play_collision::return#8 Inlining constant with var siblings (const byte) play_collision::return#9 +Inlining constant with var siblings (const byte) play_collision::orientation#4 Inlining constant with var siblings (const byte) play_lock_current::i#0 Inlining constant with var siblings (const byte) play_lock_current::l#0 Inlining constant with var siblings (const byte) play_lock_current::c#0 @@ -7949,35 +8809,35 @@ Inlining constant with var siblings (const byte) play_remove_lines::full#1 Inlining constant with var siblings (const byte) play_remove_lines::r#0 Inlining constant with var siblings (const byte) play_remove_lines::w#0 Inlining constant with var siblings (const byte) play_increase_level::b#0 -Inlining constant with var siblings (const byte) main::render#0 Inlining constant with var siblings (const byte) keyboard_events_size#0 Inlining constant with var siblings (const byte) keyboard_modifiers#1 Inlining constant with var siblings (const dword) score_bcd#0 Inlining constant with var siblings (const word) lines_bcd#0 Inlining constant with var siblings (const byte) level_bcd#0 Inlining constant with var siblings (const byte) level#0 +Inlining constant with var siblings (const byte) game_over#0 Inlining constant with var siblings (const byte) render_screen_show#1 Inlining constant with var siblings (const byte) render_screen_render#1 Inlining constant with var siblings (const byte) current_movedown_counter#0 -Inlining constant with var siblings (const byte) current_movedown_counter#2 -Inlining constant with var siblings (const byte) current_orientation#20 -Inlining constant with var siblings (const byte) current_movedown_slow#7 +Inlining constant with var siblings (const byte) current_movedown_counter#4 +Inlining constant with var siblings (const byte) current_orientation#25 +Inlining constant with var siblings (const byte) game_over#5 +Inlining constant with var siblings (const byte) current_movedown_slow#9 Inlining constant with var siblings (const byte) keyboard_modifiers#2 -Inlining constant with different constant siblings (const byte) toSpritePtr1_return#1 Constant inlined play_remove_lines::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined play_move_rotate::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_show::toD0181_$7#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 Constant inlined play_init::pli#0 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 -Constant inlined play_move_rotate::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_move_rotate::return#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined play_move_rotate::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_moving::$2 = (byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0 Constant inlined current_movedown_counter#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_score::$17 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 19 -Constant inlined current_movedown_counter#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined current_movedown_counter#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_screen_original::screen#1 = (const byte*) PLAYFIELD_SCREEN_2#0 Constant inlined render_screen_original::screen#0 = (const byte*) PLAYFIELD_SCREEN_1#0 -Constant inlined current_movedown_slow#7 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined render_screen_original::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined current_movedown_slow#9 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined render_show::toD0182_$7#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 Constant inlined render_playfield::i#0 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined play_collision::$4 = (byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0 @@ -8005,23 +8865,23 @@ Constant inlined render_init::$9 = (byte/signed byte/word/signed word/dword/sign Constant inlined play_lock_current::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_remove_lines::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_init::$7 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 -Constant inlined $10 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined $11 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $10 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $11 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined render_init::$6 = (byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 -Constant inlined $12 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $12 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined keyboard_event_scan::col#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined lines_bcd#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_init::$3 = (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -Constant inlined $13 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined sprites_irq::$3 = (const byte) sprites_irq::toSpritePtr2_return#0 -Constant inlined $14 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $13 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $14 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined render_init::$1 = (const byte) VIC_ECM#0|(const byte) VIC_DEN#0 -Constant inlined $15 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $15 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined render_init::$2 = (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0 -Constant inlined $16 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined $17 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined $18 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined $19 = ((word))(const byte[4*4*4]) PIECE_T#0 +Constant inlined sprites_irq::$5 = (const byte) sprites_irq::toSpritePtr2_return#0 +Constant inlined $16 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $17 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $18 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $19 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined render_show::toD0181_screen#0 = (const byte*) PLAYFIELD_SCREEN_1#0 Constant inlined render_playfield::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined render_moving::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -8029,22 +8889,26 @@ Constant inlined render_show::toD0182_$6#0 = >((word))(const byte*) PLAYFIELD_CH Constant inlined render_screen_original::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_bcd::only_low#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_bcd::only_low#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined $20 = ((word))(const byte[4*4*4]) PIECE_S#0 +Constant inlined $20 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined render_bcd::only_low#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_show::toD0182_$5#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0 -Constant inlined $21 = ((word))(const byte[4*4*4]) PIECE_Z#0 +Constant inlined $21 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined keyboard_event_pressed::keycode#4 = (const byte) KEY_SPACE#0 Constant inlined render_bcd::only_low#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined $22 = ((word))(const byte[4*4*4]) PIECE_J#0 +Constant inlined $22 = ((word))(const byte[4*4*4]) PIECE_T#0 Constant inlined render_bcd::only_low#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_init::vicSelectGfxBank1_toDd001_$2#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 -Constant inlined $23 = ((word))(const byte[4*4*4]) PIECE_O#0 +Constant inlined $23 = ((word))(const byte[4*4*4]) PIECE_S#0 Constant inlined render_bcd::only_low#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined $24 = ((word))(const byte[4*4*4]) PIECE_I#0 +Constant inlined $24 = ((word))(const byte[4*4*4]) PIECE_Z#0 Constant inlined render_show::toD0182_$1#0 = ((word))(const byte*) PLAYFIELD_SCREEN_2#0&(word/signed word/dword/signed dword) 16383 Constant inlined sprites_irq_init::$0 = &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -Constant inlined $25 = ((word))(const byte[4*4*4]) PIECE_L#0 -Constant inlined $26 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined $25 = ((word))(const byte[4*4*4]) PIECE_J#0 +Constant inlined $26 = ((word))(const byte[4*4*4]) PIECE_O#0 +Constant inlined $27 = ((word))(const byte[4*4*4]) PIECE_I#0 +Constant inlined game_over#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined $28 = ((word))(const byte[4*4*4]) PIECE_L#0 +Constant inlined $29 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined keyboard_event_pressed::keycode#3 = (const byte) KEY_COMMODORE#0 Constant inlined keyboard_event_pressed::keycode#2 = (const byte) KEY_CTRL#0 Constant inlined render_init::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -8055,17 +8919,18 @@ Constant inlined play_collision::return#7 = (const byte) COLLISION_RIGHT#0 Constant inlined play_init::$3 = (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 Constant inlined play_collision::return#6 = (const byte) COLLISION_LEFT#0 Constant inlined play_collision::return#4 = (const byte) COLLISION_BOTTOM#0 -Constant inlined play_move_down::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined play_move_down::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined play_move_down::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined game_over#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_init::vicSelectGfxBank1_gfx#0 = (const byte*) PLAYFIELD_CHARSET#0 Constant inlined play_collision::return#9 = (const byte) COLLISION_NONE#0 Constant inlined play_collision::return#8 = (const byte) COLLISION_PLAYFIELD#0 Constant inlined render_show::toD0181_$4#0 = ((word))(const byte*) PLAYFIELD_CHARSET#0 Constant inlined toSpritePtr1_$0#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0 -Constant inlined toSpritePtr1_return#1 = (const byte) toSpritePtr1_return#0 Constant inlined render_show::toD0181_$0#0 = ((word))(const byte*) PLAYFIELD_SCREEN_1#0 Constant inlined play_init::$0 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined keyboard_events_size#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_movement::render#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_remove_lines::r#0 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined keyboard_modifiers#2 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 Constant inlined render_show::toD0181_$5#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0 @@ -8074,13 +8939,12 @@ Constant inlined render_screen_render#1 = (byte/signed byte/word/signed word/dwo Constant inlined sprites_init::xpos#0 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 Constant inlined $3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 Constant inlined play_lock_current::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined $4 = (const byte) toSpritePtr1_return#0 -Constant inlined $5 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined $6 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $4 = (const byte) IRQ_RASTER_FIRST#0 +Constant inlined $5 = (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 Constant inlined render_show::toD0181_gfx#0 = (const byte*) PLAYFIELD_CHARSET#0 -Constant inlined $7 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined $8 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined $9 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $7 = (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 +Constant inlined $8 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $9 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined render_playfield::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined score_bcd#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_spawn_current::piece_idx#0 = (byte/signed byte/word/signed word/dword/signed dword) 7 @@ -8090,16 +8954,16 @@ Constant inlined play_remove_lines::full#0 = (byte/signed byte/word/signed word/ Constant inlined sprites_init::s#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_show::toD0182_$4#0 = ((word))(const byte*) PLAYFIELD_CHARSET#0 Constant inlined render_moving::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined render_show::toD0182_$0#0 = ((word))(const byte*) PLAYFIELD_SCREEN_2#0 -Constant inlined play_move_leftright::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined play_move_leftright::return#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined play_move_leftright::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined keyboard_event_scan::keycode#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_collision::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined current_orientation#25 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined sprites_irq::toSpritePtr2_$2#0 = (const byte) sprites_irq::toSpritePtr2_return#0 -Constant inlined play_move_leftright::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined render_show::toD0181_$1#0 = ((word))(const byte*) PLAYFIELD_SCREEN_1#0&(word/signed word/dword/signed dword) 16383 Constant inlined sprites_init::$0 = (byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 -Constant inlined current_orientation#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_init::li_2#0 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 Constant inlined play_move_down::movedown#1 = ++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_move_down::movedown#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -8117,11 +8981,11 @@ Constant inlined play_remove_lines::$5 = (const byte) PLAYFIELD_COLS#0-(byte/sig Constant inlined level_bcd#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined level#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_init::idx#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_collision::orientation#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_moving::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_show::toD0182_$3#0 = >((word))(const byte*) PLAYFIELD_SCREEN_2#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined render_init::vicSelectGfxBank1_toDd001_$0#0 = ((word))(const byte*) PLAYFIELD_CHARSET#0 Constant inlined render_show::toD0182_screen#0 = (const byte*) PLAYFIELD_SCREEN_2#0 -Constant inlined main::render#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_score::screen#0 = (const byte*) PLAYFIELD_SCREEN_1#0 Constant inlined render_screen_original::oscr#0 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined render_score::screen#1 = (const byte*) PLAYFIELD_SCREEN_2#0 @@ -8131,11 +8995,10 @@ Constant inlined sprites_irq::toSpritePtr2_sprite#0 = (const byte*) PLAYFIELD_SP Constant inlined render_score::$3 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 Constant inlined render_score::$10 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined play_collision::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined toSpritePtr1_$2#0 = (const byte) toSpritePtr1_return#0 Constant inlined render_show::toD0181_$2#0 = ((word))(const byte*) PLAYFIELD_SCREEN_1#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined keyboard_event_get::return#0 = (byte/word/signed word/dword/signed dword) 255 Constant inlined render_init::li_1#0 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 -Constant inlined render_score::$1 = &(dword) score_bcd#10 +Constant inlined render_score::$1 = &(dword) score_bcd#14 Constant inlined render_screen_original::cols#0 = (const byte*) COLS#0 Successful SSA optimization Pass2ConstantInlining Simplifying constant plus zero render_score::score_bytes#0+0 @@ -8145,30 +9008,32 @@ Simplifying constant plus zero PLAYFIELD_SPRITE_PTRS_2#0+0 Simplifying constant plus zero MOVEDOWN_SLOW_SPEEDS#0+0 Simplifying constant integer increment ++0 Successful SSA optimization Pass2ConstantSimplification -Added new block during phi lifting main::@33(between main::@28 and main::@1) +Added new block during phi lifting main::@41(between main::@11 and main::@12) Added new block during phi lifting render_bcd::@3(between render_bcd and render_bcd::@1) Added new block during phi lifting render_moving::@14(between render_moving::@3 and render_moving::@1) Added new block during phi lifting render_moving::@15(between render_moving::@5 and render_moving::@3) Added new block during phi lifting render_moving::@16(between render_moving::@5 and render_moving::@4) Added new block during phi lifting render_playfield::@5(between render_playfield::@3 and render_playfield::@1) Added new block during phi lifting render_playfield::@6(between render_playfield::@2 and render_playfield::@2) +Added new block during phi lifting play_movement::@8(between play_movement::@5 and play_movement::@return) Added new block during phi lifting play_move_rotate::@15(between play_move_rotate::@14 and play_move_rotate::@return) Added new block during phi lifting play_move_rotate::@16(between play_move_rotate::@6 and play_move_rotate::@return) -Fixing phi predecessor for play_move_rotate::return#1 to new block ( play_move_rotate::@14 -> play_move_rotate::@15 ) during phi lifting. -Fixing phi predecessor for play_move_rotate::return#1 to new block ( play_move_rotate::@6 -> play_move_rotate::@16 ) during phi lifting. +Fixing phi predecessor for play_move_rotate::return#2 to new block ( play_move_rotate::@14 -> play_move_rotate::@15 ) during phi lifting. +Fixing phi predecessor for play_move_rotate::return#2 to new block ( play_move_rotate::@6 -> play_move_rotate::@16 ) during phi lifting. Added new block during phi lifting play_collision::@20(between play_collision::@17 and play_collision::@1) Added new block during phi lifting play_collision::@21(between play_collision::@3 and play_collision::@2) Added new block during phi lifting play_move_leftright::@16(between play_move_leftright::@15 and play_move_leftright::@return) Added new block during phi lifting play_move_leftright::@17(between play_move_leftright::@14 and play_move_leftright::@return) Added new block during phi lifting play_move_leftright::@18(between play_move_leftright::@6 and play_move_leftright::@return) -Fixing phi predecessor for play_move_leftright::return#1 to new block ( play_move_leftright::@15 -> play_move_leftright::@16 ) during phi lifting. -Fixing phi predecessor for play_move_leftright::return#1 to new block ( play_move_leftright::@14 -> play_move_leftright::@17 ) during phi lifting. -Fixing phi predecessor for play_move_leftright::return#1 to new block ( play_move_leftright::@6 -> play_move_leftright::@18 ) during phi lifting. +Fixing phi predecessor for play_move_leftright::return#2 to new block ( play_move_leftright::@15 -> play_move_leftright::@16 ) during phi lifting. +Fixing phi predecessor for play_move_leftright::return#2 to new block ( play_move_leftright::@14 -> play_move_leftright::@17 ) during phi lifting. +Fixing phi predecessor for play_move_leftright::return#2 to new block ( play_move_leftright::@6 -> play_move_leftright::@18 ) during phi lifting. Added new block during phi lifting play_move_down::@23(between play_move_down::@17 and play_move_down::@2) Added new block during phi lifting play_move_down::@24(between play_move_down::@9 and play_move_down::@2) Added new block during phi lifting play_move_down::@25(between play_move_down::@2 and play_move_down::@4) Added new block during phi lifting play_move_down::@26(between play_move_down::@4 and play_move_down::@return) -Fixing phi predecessor for play_move_down::return#2 to new block ( play_move_down::@4 -> play_move_down::@26 ) during phi lifting. +Fixing phi predecessor for play_move_down::return#3 to new block ( play_move_down::@4 -> play_move_down::@26 ) during phi lifting. +Added new block during phi lifting play_spawn_current::@11(between play_spawn_current::@10 and play_spawn_current::@return) Added new block during phi lifting play_update_score::@6(between play_update_score and play_update_score::@return) Added new block during phi lifting play_update_score::@7(between play_update_score::@3 and play_update_score::@return) Added new block during phi lifting play_increase_level::@9(between play_increase_level::@2 and play_increase_level::@3) @@ -8200,28 +9065,25 @@ Added new block during phi lifting render_screen_original::@11(between render_sc Added new block during phi lifting render_screen_original::@12(between render_screen_original::@3 and render_screen_original::@3) Added new block during phi lifting render_screen_original::@13(between render_screen_original::@3 and render_screen_original::@4) Added new block during phi lifting render_screen_original::@14(between render_screen_original::@4 and render_screen_original::@4) -Added new block during phi lifting sprites_irq::@14(between sprites_irq::@5 and sprites_irq::@6) Adding NOP phi() at start of @begin Adding NOP phi() at start of toSpritePtr1 -Adding NOP phi() at start of @36 +Adding NOP phi() at start of @37 Adding NOP phi() at start of @end Adding NOP phi() at start of main -Adding NOP phi() at start of main::@16 -Adding NOP phi() at start of main::@17 -Adding NOP phi() at start of main::@18 -Adding NOP phi() at start of main::@19 -Adding NOP phi() at start of main::@20 -Adding NOP phi() at start of main::@6 -Adding NOP phi() at start of main::@23 -Adding NOP phi() at start of main::@24 +Adding NOP phi() at start of main::@26 +Adding NOP phi() at start of main::@27 +Adding NOP phi() at start of main::@28 +Adding NOP phi() at start of main::@29 Adding NOP phi() at start of main::@30 -Adding NOP phi() at start of main::@31 +Adding NOP phi() at start of main::@33 +Adding NOP phi() at start of main::@34 +Adding NOP phi() at start of main::@38 +Adding NOP phi() at start of main::@39 Adding NOP phi() at start of render_score::@3 Adding NOP phi() at start of play_move_down::@8 Adding NOP phi() at start of play_move_down::@13 Adding NOP phi() at start of play_move_down::@19 -Adding NOP phi() at start of play_move_down::@21 -Adding NOP phi() at start of play_spawn_current +Adding NOP phi() at start of play_spawn_current::@8 Adding NOP phi() at start of play_spawn_current::@2 Adding NOP phi() at start of play_update_score::@4 Adding NOP phi() at start of play_remove_lines @@ -8237,296 +9099,306 @@ Adding NOP phi() at start of render_init::@4 Adding NOP phi() at start of sprites_irq::toSpritePtr2 CALL GRAPH Calls in [] to main:12 -Calls in [main] to sid_rnd_init:15 render_init:17 sprites_init:19 sprites_irq_init:21 play_init:23 play_spawn_current:25 render_playfield:27 render_moving:32 render_show:42 keyboard_event_scan:44 keyboard_event_get:46 play_move_down:50 play_move_leftright:55 play_move_rotate:60 render_playfield:66 render_moving:72 render_score:74 render_screen_swap:76 -Calls in [render_score] to render_bcd:115 render_bcd:120 render_bcd:125 render_bcd:130 render_bcd:135 render_bcd:140 -Calls in [play_move_rotate] to play_collision:229 -Calls in [play_move_leftright] to play_collision:281 play_collision:298 -Calls in [play_move_down] to keyboard_event_pressed:309 play_collision:329 play_lock_current:334 play_remove_lines:336 play_update_score:340 play_spawn_current:342 -Calls in [play_spawn_current] to sid_rnd:404 -Calls in [play_update_score] to play_increase_level:424 -Calls in [keyboard_event_scan] to keyboard_matrix_read:544 keyboard_event_pressed:555 keyboard_event_pressed:561 keyboard_event_pressed:568 keyboard_event_pressed:575 -Calls in [render_init] to render_screen_original:681 render_screen_original:683 +Calls in [main] to sid_rnd_init:15 render_init:17 sprites_init:19 sprites_irq_init:21 play_init:23 play_spawn_current:25 render_playfield:27 render_moving:32 render_show:44 keyboard_event_scan:46 keyboard_event_get:48 play_movement:54 render_playfield:59 render_moving:65 render_score:67 render_screen_swap:69 +Calls in [render_score] to render_bcd:102 render_bcd:107 render_bcd:112 render_bcd:117 render_bcd:122 render_bcd:127 +Calls in [play_movement] to play_move_down:200 play_move_leftright:212 play_move_rotate:217 +Calls in [play_move_rotate] to play_collision:242 +Calls in [play_move_leftright] to play_collision:294 play_collision:311 +Calls in [play_move_down] to keyboard_event_pressed:322 play_collision:342 play_lock_current:347 play_remove_lines:349 play_update_score:353 play_spawn_current:355 +Calls in [play_spawn_current] to play_collision:424 sid_rnd:433 +Calls in [play_update_score] to play_increase_level:453 +Calls in [keyboard_event_scan] to keyboard_matrix_read:573 keyboard_event_pressed:584 keyboard_event_pressed:590 keyboard_event_pressed:597 keyboard_event_pressed:604 +Calls in [render_init] to render_screen_original:710 render_screen_original:712 -Created 154 initial phi equivalence classes -Not coalescing [28] current_ypos#86 ← current_ypos#18 -Not coalescing [29] current_xpos#112 ← current_xpos#23 -Not coalescing [30] current_piece_gfx#102 ← current_piece_gfx#16 -Not coalescing [31] current_piece_char#90 ← current_piece_char#12 -Coalesced [33] current_movedown_slow#80 ← current_movedown_slow#1 -Coalesced [35] current_piece_gfx#99 ← current_piece_gfx#16 -Coalesced [36] current_xpos#109 ← current_xpos#23 -Coalesced [37] current_ypos#83 ← current_ypos#18 -Coalesced [38] current_piece_char#87 ← current_piece_char#12 -Not coalescing [65] render_screen_render#65 ← render_screen_render#17 -Not coalescing [67] current_ypos#87 ← current_ypos#13 -Not coalescing [68] render_screen_render#64 ← render_screen_render#17 -Not coalescing [69] current_xpos#113 ← current_xpos#19 -Not coalescing [70] current_piece_gfx#103 ← current_piece_gfx#14 -Not coalescing [71] current_piece_char#91 ← current_piece_char#1 -Coalesced [77] render_screen_show#58 ← render_screen_show#13 -Coalesced [78] render_screen_render#63 ← render_screen_render#11 -Coalesced [79] current_movedown_slow#81 ← current_movedown_slow#17 -Coalesced [80] current_piece#74 ← current_piece#10 -Coalesced [81] current_orientation#77 ← current_orientation#19 -Coalesced [82] current_piece_gfx#100 ← current_piece_gfx#14 -Coalesced [83] current_xpos#110 ← current_xpos#19 -Coalesced [84] current_ypos#84 ← current_ypos#13 -Coalesced [85] current_piece_char#88 ← current_piece_char#1 -Coalesced [86] keyboard_events_size#80 ← keyboard_events_size#16 -Coalesced [87] current_movedown_counter#49 ← current_movedown_counter#10 -Coalesced [88] lines_bcd#80 ← lines_bcd#11 -Coalesced [89] score_bcd#76 ← score_bcd#10 -Coalesced [90] level#86 ← level#12 -Coalesced [91] level_bcd#93 ← level_bcd#13 -Coalesced (already) [92] current_movedown_slow#82 ← current_movedown_slow#17 -Coalesced (already) [93] current_piece#75 ← current_piece#10 -Coalesced (already) [94] current_orientation#78 ← current_orientation#19 -Coalesced (already) [95] current_piece_gfx#101 ← current_piece_gfx#14 -Coalesced (already) [96] current_xpos#111 ← current_xpos#19 -Coalesced (already) [97] current_ypos#85 ← current_ypos#13 -Coalesced (already) [98] current_piece_char#89 ← current_piece_char#1 -Coalesced (already) [99] keyboard_events_size#81 ← keyboard_events_size#16 -Coalesced (already) [100] current_movedown_counter#50 ← current_movedown_counter#10 -Coalesced (already) [101] lines_bcd#81 ← lines_bcd#11 -Coalesced (already) [102] score_bcd#77 ← score_bcd#10 -Coalesced (already) [103] level#87 ← level#12 -Coalesced (already) [104] level_bcd#94 ← level_bcd#13 -Coalesced [113] render_bcd::screen#7 ← render_bcd::screen#0 -Coalesced [114] render_bcd::bcd#9 ← render_bcd::bcd#0 -Coalesced [118] render_bcd::screen#8 ← render_bcd::screen#1 -Coalesced [119] render_bcd::bcd#10 ← render_bcd::bcd#1 -Coalesced [123] render_bcd::screen#9 ← render_bcd::screen#2 -Coalesced [124] render_bcd::bcd#11 ← render_bcd::bcd#2 -Coalesced [128] render_bcd::screen#10 ← render_bcd::screen#3 -Coalesced [129] render_bcd::bcd#12 ← render_bcd::bcd#3 -Coalesced [133] render_bcd::screen#11 ← render_bcd::screen#4 -Coalesced [134] render_bcd::bcd#13 ← render_bcd::bcd#4 -Coalesced [138] render_bcd::screen#12 ← render_bcd::screen#5 -Coalesced [139] render_bcd::bcd#14 ← render_bcd::bcd#5 -Coalesced [149] render_bcd::screen_pos#6 ← render_bcd::screen_pos#2 -Coalesced [156] render_bcd::screen_pos#5 ← render_bcd::screen_pos#0 -Coalesced [159] render_moving::ypos2#11 ← render_moving::ypos2#0 -Coalesced [163] render_moving::i#14 ← render_moving::i#1 -Coalesced [169] render_moving::ypos2#12 ← render_moving::ypos2#1 -Coalesced [170] render_moving::i#12 ← render_moving::i#8 -Coalesced [171] render_moving::l#11 ← render_moving::l#1 -Coalesced [176] render_moving::i#15 ← render_moving::i#3 -Coalesced [177] render_moving::xpos#7 ← render_moving::xpos#0 -Coalesced [187] render_moving::i#13 ← render_moving::i#10 -Coalesced (already) [188] render_moving::i#16 ← render_moving::i#10 -Coalesced [189] render_moving::xpos#8 ← render_moving::xpos#1 -Coalesced [190] render_moving::c#7 ← render_moving::c#1 -Coalesced [196] render_playfield::i#6 ← render_playfield::i#3 -Coalesced [197] render_playfield::screen_line#3 ← render_playfield::screen_line#0 -Coalesced [207] render_playfield::l#5 ← render_playfield::l#1 -Coalesced [208] render_playfield::i#5 ← render_playfield::i#1 -Coalesced (already) [209] render_playfield::i#7 ← render_playfield::i#1 -Coalesced [210] render_playfield::screen_line#4 ← render_playfield::screen_line#1 -Coalesced [211] render_playfield::c#3 ← render_playfield::c#1 -Coalesced [214] current_orientation#81 ← current_orientation#14 -Coalesced [215] current_piece_gfx#106 ← current_piece_gfx#1 -Coalesced [220] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 -Not coalescing [225] current_piece#79 ← current_piece#10 -Coalesced [226] play_collision::orientation#8 ← play_collision::orientation#3 -Coalesced [227] play_collision::ypos#8 ← play_collision::ypos#3 -Coalesced [228] play_collision::xpos#17 ← play_collision::xpos#3 -Coalesced [235] current_orientation#79 ← current_orientation#4 -Coalesced [236] current_piece_gfx#104 ← current_piece_gfx#3 -Coalesced (already) [237] current_orientation#80 ← current_orientation#14 -Coalesced (already) [238] current_piece_gfx#105 ← current_piece_gfx#1 -Coalesced [241] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 -Coalesced [245] play_collision::ypos2#11 ← play_collision::ypos2#0 -Coalesced [248] play_collision::i#12 ← play_collision::i#3 -Not coalescing [249] play_collision::col#9 ← play_collision::xpos#5 -Coalesced [266] play_collision::ypos2#12 ← play_collision::ypos2#1 -Not coalescing [267] play_collision::i#11 ← play_collision::i#1 -Coalesced [268] play_collision::l#11 ← play_collision::l#1 -Not coalescing [269] play_collision::i#13 ← play_collision::i#1 -Coalesced [270] play_collision::col#10 ← play_collision::col#1 -Coalesced [271] play_collision::c#9 ← play_collision::c#1 -Not coalescing [277] current_piece#78 ← current_piece#10 -Coalesced [278] play_collision::orientation#7 ← play_collision::orientation#2 -Coalesced [279] play_collision::ypos#7 ← play_collision::ypos#2 -Coalesced [280] play_collision::xpos#16 ← play_collision::xpos#2 -Coalesced [286] current_xpos#116 ← current_xpos#2 -Coalesced [289] current_xpos#115 ← current_xpos#1 -Coalesced (already) [290] current_xpos#118 ← current_xpos#1 -Not coalescing [294] current_piece#77 ← current_piece#10 -Coalesced [295] play_collision::orientation#6 ← play_collision::orientation#1 -Coalesced [296] play_collision::ypos#6 ← play_collision::ypos#1 -Coalesced [297] play_collision::xpos#15 ← play_collision::xpos#1 -Coalesced [303] current_xpos#114 ← current_xpos#4 -Coalesced (already) [304] current_xpos#117 ← current_xpos#1 -Coalesced [315] play_move_down::movedown#13 ← play_move_down::movedown#2 -Coalesced [319] play_move_down::movedown#16 ← play_move_down::movedown#3 -Not coalescing [325] current_piece#76 ← current_piece#16 -Coalesced [326] play_collision::orientation#5 ← play_collision::orientation#0 -Coalesced [327] play_collision::ypos#5 ← play_collision::ypos#0 -Coalesced [328] play_collision::xpos#14 ← play_collision::xpos#0 -Coalesced [343] current_ypos#88 ← current_ypos#18 -Coalesced [344] lines_bcd#82 ← lines_bcd#13 -Coalesced [345] score_bcd#78 ← score_bcd#12 -Coalesced [346] level#88 ← level#14 -Coalesced [347] current_movedown_slow#83 ← current_movedown_slow#19 -Coalesced [348] level_bcd#95 ← level_bcd#15 -Coalesced [350] current_piece_gfx#107 ← current_piece_gfx#16 -Coalesced [351] current_xpos#119 ← current_xpos#23 -Coalesced [352] current_piece_char#92 ← current_piece_char#12 -Coalesced (already) [354] current_ypos#91 ← current_ypos#29 -Coalesced [355] lines_bcd#85 ← lines_bcd#20 -Coalesced [356] score_bcd#81 ← score_bcd#20 -Coalesced [357] level#91 ← level#24 -Coalesced [358] current_movedown_slow#86 ← current_movedown_slow#31 -Coalesced [359] level_bcd#98 ← level_bcd#25 -Coalesced [360] current_piece#83 ← current_piece#20 -Coalesced [361] current_orientation#84 ← current_orientation#29 -Coalesced (already) [362] current_piece_gfx#110 ← current_piece_gfx#26 -Coalesced (already) [363] current_xpos#122 ← current_xpos#33 -Coalesced (already) [364] current_piece_char#95 ← current_piece_char#20 -Coalesced [368] current_ypos#89 ← current_ypos#0 -Coalesced (already) [369] lines_bcd#83 ← lines_bcd#15 -Coalesced (already) [370] score_bcd#79 ← score_bcd#14 -Coalesced (already) [371] level#89 ← level#19 -Coalesced (already) [372] current_movedown_slow#84 ← current_movedown_slow#12 -Coalesced (already) [373] level_bcd#96 ← level_bcd#20 -Coalesced (already) [374] current_piece#81 ← current_piece#16 -Coalesced (already) [375] current_orientation#82 ← current_orientation#10 -Coalesced (already) [376] current_piece_gfx#108 ← current_piece_gfx#20 -Coalesced (already) [377] current_xpos#120 ← current_xpos#10 -Coalesced (already) [378] current_piece_char#93 ← current_piece_char#15 -Coalesced [379] current_movedown_counter#51 ← current_movedown_counter#1 -Coalesced (already) [380] current_ypos#90 ← current_ypos#21 -Coalesced (already) [381] lines_bcd#84 ← lines_bcd#15 -Coalesced (already) [382] score_bcd#80 ← score_bcd#14 -Coalesced (already) [383] level#90 ← level#19 -Coalesced (already) [384] current_movedown_slow#85 ← current_movedown_slow#12 -Coalesced (already) [385] level_bcd#97 ← level_bcd#20 -Coalesced (already) [386] current_piece#82 ← current_piece#16 -Coalesced (already) [387] current_orientation#83 ← current_orientation#10 -Coalesced (already) [388] current_piece_gfx#109 ← current_piece_gfx#20 -Coalesced (already) [389] current_xpos#121 ← current_xpos#10 -Coalesced (already) [390] current_piece_char#94 ← current_piece_char#15 -Coalesced [391] play_move_down::movedown#17 ← play_move_down::movedown#7 -Coalesced [392] play_move_down::movedown#15 ← play_move_down::movedown#10 -Coalesced (already) [393] play_move_down::movedown#14 ← play_move_down::movedown#10 -Coalesced [408] play_spawn_current::piece_idx#4 ← play_spawn_current::piece_idx#1 -Coalesced [425] lines_bcd#88 ← lines_bcd#23 -Coalesced [426] score_bcd#84 ← score_bcd#23 -Coalesced [427] level#94 ← level#16 -Coalesced [428] current_movedown_slow#89 ← current_movedown_slow#60 -Coalesced [429] level_bcd#101 ← level_bcd#55 -Coalesced (already) [432] lines_bcd#87 ← lines_bcd#23 -Coalesced (already) [433] score_bcd#83 ← score_bcd#23 -Coalesced (already) [434] level#93 ← level#19 -Coalesced (already) [435] current_movedown_slow#88 ← current_movedown_slow#12 -Coalesced (already) [436] level_bcd#100 ← level_bcd#20 -Coalesced (already) [437] lines_bcd#86 ← lines_bcd#15 -Coalesced (already) [438] score_bcd#82 ← score_bcd#14 -Coalesced (already) [439] level#92 ← level#19 -Coalesced (already) [440] current_movedown_slow#87 ← current_movedown_slow#12 -Coalesced (already) [441] level_bcd#99 ← level_bcd#20 -Coalesced [445] current_movedown_slow#90 ← current_movedown_slow#8 -Coalesced [451] level_bcd#103 ← level_bcd#6 -Coalesced [461] play_increase_level::b#3 ← play_increase_level::b#1 -Coalesced [462] level_bcd#102 ← level_bcd#17 -Coalesced [465] play_remove_lines::r#10 ← play_remove_lines::r#3 -Coalesced [466] play_remove_lines::w#14 ← play_remove_lines::w#12 -Coalesced [480] play_remove_lines::w#16 ← play_remove_lines::w#2 -Coalesced [481] play_remove_lines::removed#13 ← play_remove_lines::removed#1 -Coalesced [485] play_remove_lines::w#18 ← play_remove_lines::w#11 -Coalesced [491] play_remove_lines::w#19 ← play_remove_lines::w#3 -Coalesced [492] play_remove_lines::r#9 ← play_remove_lines::r#1 -Coalesced [493] play_remove_lines::w#13 ← play_remove_lines::w#11 -Coalesced [494] play_remove_lines::y#9 ← play_remove_lines::y#1 -Coalesced [495] play_remove_lines::removed#12 ← play_remove_lines::removed#7 -Coalesced [496] play_remove_lines::w#17 ← play_remove_lines::w#1 -Coalesced (already) [497] play_remove_lines::removed#14 ← play_remove_lines::removed#11 -Coalesced (already) [498] play_remove_lines::r#11 ← play_remove_lines::r#1 -Coalesced (already) [499] play_remove_lines::w#15 ← play_remove_lines::w#1 -Coalesced [500] play_remove_lines::x#5 ← play_remove_lines::x#1 -Coalesced [501] play_remove_lines::full#5 ← play_remove_lines::full#2 -Coalesced (already) [502] play_remove_lines::full#6 ← play_remove_lines::full#4 -Coalesced [504] play_lock_current::ypos2#7 ← play_lock_current::ypos2#0 -Coalesced [508] play_lock_current::i#8 ← play_lock_current::i#3 -Coalesced [509] play_lock_current::col#5 ← play_lock_current::col#0 -Coalesced [521] play_lock_current::ypos2#8 ← play_lock_current::ypos2#1 -Not coalescing [522] play_lock_current::i#7 ← play_lock_current::i#1 -Coalesced [523] play_lock_current::l#7 ← play_lock_current::l#1 -Not coalescing [524] play_lock_current::i#9 ← play_lock_current::i#1 -Coalesced [525] play_lock_current::col#6 ← play_lock_current::col#1 -Coalesced [526] play_lock_current::c#5 ← play_lock_current::c#1 -Coalesced [536] keyboard_event_get::return#6 ← keyboard_event_get::return#1 -Coalesced [537] keyboard_events_size#83 ← keyboard_events_size#4 -Coalesced [540] keyboard_events_size#82 ← keyboard_events_size#13 -Coalesced [541] keyboard_events_size#84 ← keyboard_events_size#19 -Coalesced [549] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 -Coalesced (already) [550] keyboard_events_size#86 ← keyboard_events_size#29 -Coalesced [566] keyboard_modifiers#61 ← keyboard_modifiers#3 -Coalesced [573] keyboard_modifiers#63 ← keyboard_modifiers#4 -Coalesced [581] keyboard_modifiers#64 ← keyboard_modifiers#12 -Coalesced [582] keyboard_modifiers#62 ← keyboard_modifiers#11 -Coalesced [583] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 -Coalesced [584] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 -Coalesced (already) [585] keyboard_events_size#85 ← keyboard_events_size#13 -Coalesced [586] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 -Coalesced [587] keyboard_events_size#88 ← keyboard_events_size#29 -Coalesced [597] keyboard_events_size#90 ← keyboard_events_size#2 -Coalesced [603] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15 -Coalesced [604] keyboard_events_size#87 ← keyboard_events_size#30 -Coalesced [605] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 -Coalesced (already) [606] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#15 -Coalesced (already) [607] keyboard_events_size#89 ← keyboard_events_size#30 -Coalesced [611] keyboard_events_size#93 ← keyboard_events_size#1 -Coalesced (already) [612] keyboard_events_size#92 ← keyboard_events_size#10 -Coalesced (already) [613] keyboard_events_size#91 ← keyboard_events_size#10 -Coalesced [641] play_init::b#3 ← play_init::b#1 -Coalesced [642] play_init::j#3 ← play_init::j#1 -Coalesced [643] play_init::pli#3 ← play_init::pli#1 -Coalesced [644] play_init::idx#3 ← play_init::idx#1 -Coalesced [669] sprites_init::s#3 ← sprites_init::s#1 -Coalesced [670] sprites_init::xpos#3 ← sprites_init::xpos#1 -Coalesced [694] render_init::i#3 ← render_init::i#1 -Coalesced [695] render_init::li_1#3 ← render_init::li_1#1 -Coalesced [696] render_init::li_2#3 ← render_init::li_2#1 -Coalesced [698] render_screen_original::screen#11 ← render_screen_original::screen#9 -Coalesced [700] render_screen_original::screen#13 ← render_screen_original::screen#8 -Coalesced [701] render_screen_original::cols#10 ← render_screen_original::cols#7 -Coalesced [709] render_screen_original::oscr#8 ← render_screen_original::oscr#4 -Coalesced [710] render_screen_original::screen#15 ← render_screen_original::screen#2 -Coalesced [711] render_screen_original::ocols#8 ← render_screen_original::ocols#4 -Coalesced [712] render_screen_original::cols#12 ← render_screen_original::cols#1 -Coalesced [713] render_screen_original::x#8 ← render_screen_original::x#1 -Coalesced [723] render_screen_original::screen#17 ← render_screen_original::screen#3 -Coalesced [724] render_screen_original::cols#14 ← render_screen_original::cols#2 -Coalesced [725] render_screen_original::x#10 ← render_screen_original::x#2 -Coalesced [736] render_screen_original::screen#12 ← render_screen_original::screen#10 -Coalesced [737] render_screen_original::cols#9 ← render_screen_original::cols#3 -Coalesced [738] render_screen_original::oscr#7 ← render_screen_original::oscr#1 -Coalesced [739] render_screen_original::ocols#7 ← render_screen_original::ocols#1 -Coalesced [740] render_screen_original::y#7 ← render_screen_original::y#1 -Coalesced [741] render_screen_original::screen#18 ← render_screen_original::screen#10 -Coalesced [742] render_screen_original::cols#15 ← render_screen_original::cols#3 -Coalesced [743] render_screen_original::x#11 ← render_screen_original::x#3 -Coalesced (already) [744] render_screen_original::oscr#9 ← render_screen_original::oscr#1 -Coalesced [745] render_screen_original::screen#16 ← render_screen_original::screen#3 -Coalesced (already) [746] render_screen_original::ocols#9 ← render_screen_original::ocols#1 -Coalesced [747] render_screen_original::cols#13 ← render_screen_original::cols#2 -Coalesced [748] render_screen_original::x#9 ← render_screen_original::x#2 -Coalesced (already) [749] render_screen_original::screen#14 ← render_screen_original::screen#2 -Coalesced (already) [750] render_screen_original::cols#11 ← render_screen_original::cols#1 -Coalesced [751] render_screen_original::x#7 ← render_screen_original::x#1 -Coalesced [775] irq_raster_next#24 ← irq_raster_next#2 -Coalesced [781] sprites_irq::raster_next#4 ← sprites_irq::raster_next#1 -Coalesced [786] sprites_irq::raster_next#5 ← sprites_irq::raster_next#0 -Coalesced [792] irq_raster_next#25 ← irq_raster_next#1 -Coalesced down to 90 phi equivalence classes -Culled Empty Block (label) main::@33 +Created 164 initial phi equivalence classes +Not coalescing [28] current_ypos#99 ← current_ypos#22 +Not coalescing [29] current_xpos#125 ← current_xpos#28 +Not coalescing [30] current_piece_gfx#115 ← current_piece_gfx#21 +Not coalescing [31] current_piece_char#103 ← current_piece_char#16 +Coalesced [33] current_movedown_slow#92 ← current_movedown_slow#1 +Coalesced [35] current_piece_char#102 ← current_piece_char#16 +Coalesced [36] current_piece_gfx#114 ← current_piece_gfx#21 +Coalesced [37] current_xpos#124 ← current_xpos#28 +Coalesced [38] current_ypos#98 ← current_ypos#22 +Coalesced [39] game_over#86 ← game_over#15 +Not coalescing [58] render_screen_render#69 ← render_screen_render#17 +Not coalescing [60] current_ypos#100 ← current_ypos#17 +Not coalescing [61] render_screen_render#68 ← render_screen_render#17 +Not coalescing [62] current_xpos#126 ← current_xpos#17 +Not coalescing [63] current_piece_gfx#116 ← current_piece_gfx#16 +Not coalescing [64] current_piece_char#104 ← current_piece_char#14 +Coalesced [70] render_screen_show#62 ← render_screen_show#13 +Coalesced [71] render_screen_render#67 ← render_screen_render#11 +Coalesced [74] render_screen_show#60 ← render_screen_show#29 +Coalesced [75] render_screen_render#65 ← render_screen_render#33 +Coalesced [76] current_movedown_slow#91 ← current_movedown_slow#21 +Coalesced [77] current_piece#87 ← current_piece#14 +Coalesced [78] current_piece_char#101 ← current_piece_char#14 +Coalesced [79] current_orientation#91 ← current_orientation#16 +Coalesced [80] current_piece_gfx#113 ← current_piece_gfx#16 +Coalesced [81] current_xpos#123 ← current_xpos#17 +Coalesced [82] current_ypos#97 ← current_ypos#17 +Coalesced [83] game_over#85 ← game_over#14 +Coalesced [84] keyboard_events_size#82 ← keyboard_events_size#16 +Coalesced [85] current_movedown_counter#60 ← current_movedown_counter#14 +Coalesced [86] lines_bcd#91 ← lines_bcd#15 +Coalesced [87] score_bcd#87 ← score_bcd#14 +Coalesced [88] level#97 ← level#16 +Coalesced [89] level_bcd#104 ← level_bcd#17 +Coalesced (already) [90] render_screen_show#61 ← render_screen_show#17 +Coalesced (already) [91] render_screen_render#66 ← render_screen_render#17 +Coalesced [100] render_bcd::screen#7 ← render_bcd::screen#0 +Coalesced [101] render_bcd::bcd#9 ← render_bcd::bcd#0 +Coalesced [105] render_bcd::screen#8 ← render_bcd::screen#1 +Coalesced [106] render_bcd::bcd#10 ← render_bcd::bcd#1 +Coalesced [110] render_bcd::screen#9 ← render_bcd::screen#2 +Coalesced [111] render_bcd::bcd#11 ← render_bcd::bcd#2 +Coalesced [115] render_bcd::screen#10 ← render_bcd::screen#3 +Coalesced [116] render_bcd::bcd#12 ← render_bcd::bcd#3 +Coalesced [120] render_bcd::screen#11 ← render_bcd::screen#4 +Coalesced [121] render_bcd::bcd#13 ← render_bcd::bcd#4 +Coalesced [125] render_bcd::screen#12 ← render_bcd::screen#5 +Coalesced [126] render_bcd::bcd#14 ← render_bcd::bcd#5 +Coalesced [136] render_bcd::screen_pos#6 ← render_bcd::screen_pos#2 +Coalesced [143] render_bcd::screen_pos#5 ← render_bcd::screen_pos#0 +Coalesced [146] render_moving::ypos2#11 ← render_moving::ypos2#0 +Coalesced [150] render_moving::i#14 ← render_moving::i#1 +Coalesced [156] render_moving::ypos2#12 ← render_moving::ypos2#1 +Coalesced [157] render_moving::i#12 ← render_moving::i#8 +Coalesced [158] render_moving::l#11 ← render_moving::l#1 +Coalesced [163] render_moving::i#15 ← render_moving::i#3 +Coalesced [164] render_moving::xpos#7 ← render_moving::xpos#0 +Coalesced [174] render_moving::i#13 ← render_moving::i#10 +Coalesced (already) [175] render_moving::i#16 ← render_moving::i#10 +Coalesced [176] render_moving::xpos#8 ← render_moving::xpos#1 +Coalesced [177] render_moving::c#7 ← render_moving::c#1 +Coalesced [183] render_playfield::i#6 ← render_playfield::i#3 +Coalesced [184] render_playfield::screen_line#3 ← render_playfield::screen_line#0 +Coalesced [194] render_playfield::l#5 ← render_playfield::l#1 +Coalesced [195] render_playfield::i#5 ← render_playfield::i#1 +Coalesced (already) [196] render_playfield::i#7 ← render_playfield::i#1 +Coalesced [197] render_playfield::screen_line#4 ← render_playfield::screen_line#1 +Coalesced [198] render_playfield::c#3 ← render_playfield::c#1 +Coalesced [205] play_movement::return#6 ← play_movement::render#1 +Coalesced [206] current_orientation#92 ← current_orientation#19 +Coalesced [207] current_piece_gfx#117 ← current_piece_gfx#18 +Coalesced [208] current_xpos#127 ← current_xpos#20 +Coalesced [221] play_movement::return#7 ← play_movement::return#0 +Coalesced [222] current_orientation#93 ← current_orientation#24 +Coalesced [223] current_piece_gfx#118 ← current_piece_gfx#19 +Coalesced [224] current_xpos#128 ← current_xpos#24 +Coalesced (already) [227] current_orientation#96 ← current_orientation#19 +Coalesced (already) [228] current_piece_gfx#121 ← current_piece_gfx#18 +Coalesced [233] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 +Not coalescing [238] current_piece#92 ← current_piece#14 +Coalesced [239] play_collision::orientation#9 ← play_collision::orientation#3 +Coalesced [240] play_collision::ypos#9 ← play_collision::ypos#3 +Coalesced [241] play_collision::xpos#18 ← play_collision::xpos#3 +Coalesced [248] current_orientation#94 ← current_orientation#7 +Coalesced [249] current_piece_gfx#119 ← current_piece_gfx#6 +Coalesced (already) [250] current_orientation#95 ← current_orientation#19 +Coalesced (already) [251] current_piece_gfx#120 ← current_piece_gfx#18 +Coalesced [254] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 +Coalesced [258] play_collision::ypos2#11 ← play_collision::ypos2#0 +Coalesced [261] play_collision::i#12 ← play_collision::i#3 +Not coalescing [262] play_collision::col#9 ← play_collision::xpos#6 +Coalesced [279] play_collision::ypos2#12 ← play_collision::ypos2#1 +Not coalescing [280] play_collision::i#11 ← play_collision::i#1 +Coalesced [281] play_collision::l#11 ← play_collision::l#1 +Not coalescing [282] play_collision::i#13 ← play_collision::i#1 +Coalesced [283] play_collision::col#10 ← play_collision::col#1 +Coalesced [284] play_collision::c#9 ← play_collision::c#1 +Not coalescing [290] current_piece#91 ← current_piece#14 +Coalesced [291] play_collision::orientation#8 ← play_collision::orientation#2 +Coalesced [292] play_collision::ypos#8 ← play_collision::ypos#2 +Coalesced [293] play_collision::xpos#17 ← play_collision::xpos#2 +Coalesced [299] current_xpos#131 ← current_xpos#5 +Coalesced (already) [302] current_xpos#130 ← current_xpos#20 +Coalesced (already) [303] current_xpos#133 ← current_xpos#20 +Not coalescing [307] current_piece#90 ← current_piece#14 +Coalesced [308] play_collision::orientation#7 ← play_collision::orientation#1 +Coalesced [309] play_collision::ypos#7 ← play_collision::ypos#1 +Coalesced [310] play_collision::xpos#16 ← play_collision::xpos#1 +Coalesced [316] current_xpos#129 ← current_xpos#7 +Coalesced (already) [317] current_xpos#132 ← current_xpos#20 +Coalesced [328] play_move_down::movedown#13 ← play_move_down::movedown#2 +Coalesced [332] play_move_down::movedown#16 ← play_move_down::movedown#3 +Not coalescing [338] current_piece#89 ← current_piece#20 +Coalesced [339] play_collision::orientation#6 ← play_collision::orientation#0 +Coalesced [340] play_collision::ypos#6 ← play_collision::ypos#0 +Coalesced [341] play_collision::xpos#15 ← play_collision::xpos#0 +Coalesced [354] game_over#91 ← game_over#19 +Coalesced [356] current_ypos#101 ← current_ypos#22 +Coalesced [357] lines_bcd#92 ← lines_bcd#17 +Coalesced [358] score_bcd#88 ← score_bcd#16 +Coalesced [359] level#98 ← level#18 +Coalesced [360] current_movedown_slow#93 ← current_movedown_slow#23 +Coalesced [361] level_bcd#105 ← level_bcd#19 +Coalesced [363] current_piece_char#105 ← current_piece_char#16 +Coalesced [364] current_piece_gfx#122 ← current_piece_gfx#21 +Coalesced [365] current_xpos#134 ← current_xpos#28 +Coalesced [366] game_over#87 ← game_over#15 +Coalesced (already) [368] current_ypos#104 ← current_ypos#36 +Coalesced [369] lines_bcd#95 ← lines_bcd#27 +Coalesced [370] score_bcd#91 ← score_bcd#27 +Coalesced [371] level#101 ← level#31 +Coalesced [372] current_movedown_slow#96 ← current_movedown_slow#38 +Coalesced [373] level_bcd#108 ← level_bcd#32 +Coalesced [374] current_piece#97 ← current_piece#27 +Coalesced (already) [375] current_piece_char#108 ← current_piece_char#27 +Coalesced [376] current_orientation#99 ← current_orientation#36 +Coalesced (already) [377] current_piece_gfx#125 ← current_piece_gfx#33 +Coalesced (already) [378] current_xpos#137 ← current_xpos#41 +Coalesced (already) [379] game_over#90 ← game_over#26 +Coalesced [383] current_ypos#102 ← current_ypos#2 +Coalesced (already) [384] lines_bcd#93 ← lines_bcd#19 +Coalesced (already) [385] score_bcd#89 ← score_bcd#18 +Coalesced (already) [386] level#99 ← level#10 +Coalesced (already) [387] current_movedown_slow#94 ← current_movedown_slow#14 +Coalesced (already) [388] level_bcd#106 ← level_bcd#11 +Coalesced (already) [389] current_piece#95 ← current_piece#20 +Coalesced (already) [390] current_piece_char#106 ← current_piece_char#19 +Coalesced (already) [391] current_orientation#97 ← current_orientation#12 +Coalesced (already) [392] current_piece_gfx#123 ← current_piece_gfx#105 +Coalesced (already) [393] current_xpos#135 ← current_xpos#115 +Coalesced (already) [394] game_over#88 ← game_over#19 +Coalesced [395] current_movedown_counter#61 ← current_movedown_counter#12 +Coalesced (already) [396] current_ypos#103 ← current_ypos#25 +Coalesced (already) [397] lines_bcd#94 ← lines_bcd#19 +Coalesced (already) [398] score_bcd#90 ← score_bcd#18 +Coalesced (already) [399] level#100 ← level#10 +Coalesced (already) [400] current_movedown_slow#95 ← current_movedown_slow#14 +Coalesced (already) [401] level_bcd#107 ← level_bcd#11 +Coalesced (already) [402] current_piece#96 ← current_piece#20 +Coalesced (already) [403] current_piece_char#107 ← current_piece_char#19 +Coalesced (already) [404] current_orientation#98 ← current_orientation#12 +Coalesced (already) [405] current_piece_gfx#124 ← current_piece_gfx#105 +Coalesced (already) [406] current_xpos#136 ← current_xpos#115 +Coalesced (already) [407] game_over#89 ← game_over#19 +Coalesced [408] play_move_down::movedown#17 ← play_move_down::movedown#7 +Coalesced [409] play_move_down::movedown#15 ← play_move_down::movedown#10 +Coalesced (already) [410] play_move_down::movedown#14 ← play_move_down::movedown#10 +Coalesced [422] play_collision::ypos#10 ← play_collision::ypos#4 +Coalesced [423] play_collision::xpos#19 ← play_collision::xpos#4 +Coalesced (already) [431] game_over#92 ← game_over#69 +Coalesced [437] play_spawn_current::piece_idx#4 ← play_spawn_current::piece_idx#1 +Coalesced [454] lines_bcd#98 ← lines_bcd#30 +Coalesced [455] score_bcd#94 ← score_bcd#30 +Coalesced [456] level#104 ← level#20 +Coalesced [457] current_movedown_slow#99 ← current_movedown_slow#68 +Coalesced [458] level_bcd#111 ← level_bcd#63 +Coalesced (already) [461] lines_bcd#97 ← lines_bcd#30 +Coalesced (already) [462] score_bcd#93 ← score_bcd#30 +Coalesced (already) [463] level#103 ← level#10 +Coalesced (already) [464] current_movedown_slow#98 ← current_movedown_slow#14 +Coalesced (already) [465] level_bcd#110 ← level_bcd#11 +Coalesced (already) [466] lines_bcd#96 ← lines_bcd#19 +Coalesced (already) [467] score_bcd#92 ← score_bcd#18 +Coalesced (already) [468] level#102 ← level#10 +Coalesced (already) [469] current_movedown_slow#97 ← current_movedown_slow#14 +Coalesced (already) [470] level_bcd#109 ← level_bcd#11 +Coalesced [474] current_movedown_slow#100 ← current_movedown_slow#10 +Coalesced [480] level_bcd#113 ← level_bcd#8 +Coalesced [490] play_increase_level::b#3 ← play_increase_level::b#1 +Coalesced [491] level_bcd#112 ← level_bcd#21 +Coalesced [494] play_remove_lines::r#10 ← play_remove_lines::r#3 +Coalesced [495] play_remove_lines::w#14 ← play_remove_lines::w#12 +Coalesced [509] play_remove_lines::w#16 ← play_remove_lines::w#2 +Coalesced [510] play_remove_lines::removed#13 ← play_remove_lines::removed#1 +Coalesced [514] play_remove_lines::w#18 ← play_remove_lines::w#11 +Coalesced [520] play_remove_lines::w#19 ← play_remove_lines::w#3 +Coalesced [521] play_remove_lines::r#9 ← play_remove_lines::r#1 +Coalesced [522] play_remove_lines::w#13 ← play_remove_lines::w#11 +Coalesced [523] play_remove_lines::y#9 ← play_remove_lines::y#1 +Coalesced [524] play_remove_lines::removed#12 ← play_remove_lines::removed#7 +Coalesced [525] play_remove_lines::w#17 ← play_remove_lines::w#1 +Coalesced (already) [526] play_remove_lines::removed#14 ← play_remove_lines::removed#11 +Coalesced (already) [527] play_remove_lines::r#11 ← play_remove_lines::r#1 +Coalesced (already) [528] play_remove_lines::w#15 ← play_remove_lines::w#1 +Coalesced [529] play_remove_lines::x#5 ← play_remove_lines::x#1 +Coalesced [530] play_remove_lines::full#5 ← play_remove_lines::full#2 +Coalesced (already) [531] play_remove_lines::full#6 ← play_remove_lines::full#4 +Coalesced [533] play_lock_current::ypos2#7 ← play_lock_current::ypos2#0 +Coalesced [537] play_lock_current::i#8 ← play_lock_current::i#3 +Coalesced [538] play_lock_current::col#5 ← play_lock_current::col#0 +Coalesced [550] play_lock_current::ypos2#8 ← play_lock_current::ypos2#1 +Not coalescing [551] play_lock_current::i#7 ← play_lock_current::i#1 +Coalesced [552] play_lock_current::l#7 ← play_lock_current::l#1 +Not coalescing [553] play_lock_current::i#9 ← play_lock_current::i#1 +Coalesced [554] play_lock_current::col#6 ← play_lock_current::col#1 +Coalesced [555] play_lock_current::c#5 ← play_lock_current::c#1 +Coalesced [565] keyboard_event_get::return#6 ← keyboard_event_get::return#1 +Coalesced [566] keyboard_events_size#84 ← keyboard_events_size#4 +Coalesced [569] keyboard_events_size#83 ← keyboard_events_size#13 +Coalesced [570] keyboard_events_size#85 ← keyboard_events_size#19 +Coalesced [578] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 +Coalesced (already) [579] keyboard_events_size#87 ← keyboard_events_size#29 +Coalesced [595] keyboard_modifiers#63 ← keyboard_modifiers#3 +Coalesced [602] keyboard_modifiers#65 ← keyboard_modifiers#4 +Coalesced [610] keyboard_modifiers#66 ← keyboard_modifiers#12 +Coalesced [611] keyboard_modifiers#64 ← keyboard_modifiers#11 +Coalesced [612] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 +Coalesced [613] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 +Coalesced (already) [614] keyboard_events_size#86 ← keyboard_events_size#13 +Coalesced [615] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 +Coalesced [616] keyboard_events_size#89 ← keyboard_events_size#29 +Coalesced [626] keyboard_events_size#91 ← keyboard_events_size#2 +Coalesced [632] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15 +Coalesced [633] keyboard_events_size#88 ← keyboard_events_size#30 +Coalesced [634] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 +Coalesced (already) [635] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#15 +Coalesced (already) [636] keyboard_events_size#90 ← keyboard_events_size#30 +Coalesced [640] keyboard_events_size#94 ← keyboard_events_size#1 +Coalesced (already) [641] keyboard_events_size#93 ← keyboard_events_size#10 +Coalesced (already) [642] keyboard_events_size#92 ← keyboard_events_size#10 +Coalesced [670] play_init::b#3 ← play_init::b#1 +Coalesced [671] play_init::j#3 ← play_init::j#1 +Coalesced [672] play_init::pli#3 ← play_init::pli#1 +Coalesced [673] play_init::idx#3 ← play_init::idx#1 +Coalesced [698] sprites_init::s#3 ← sprites_init::s#1 +Coalesced [699] sprites_init::xpos#3 ← sprites_init::xpos#1 +Coalesced [723] render_init::i#3 ← render_init::i#1 +Coalesced [724] render_init::li_1#3 ← render_init::li_1#1 +Coalesced [725] render_init::li_2#3 ← render_init::li_2#1 +Coalesced [727] render_screen_original::screen#11 ← render_screen_original::screen#9 +Coalesced [729] render_screen_original::screen#13 ← render_screen_original::screen#8 +Coalesced [730] render_screen_original::cols#10 ← render_screen_original::cols#7 +Coalesced [738] render_screen_original::oscr#8 ← render_screen_original::oscr#4 +Coalesced [739] render_screen_original::screen#15 ← render_screen_original::screen#2 +Coalesced [740] render_screen_original::ocols#8 ← render_screen_original::ocols#4 +Coalesced [741] render_screen_original::cols#12 ← render_screen_original::cols#1 +Coalesced [742] render_screen_original::x#8 ← render_screen_original::x#1 +Coalesced [752] render_screen_original::screen#17 ← render_screen_original::screen#3 +Coalesced [753] render_screen_original::cols#14 ← render_screen_original::cols#2 +Coalesced [754] render_screen_original::x#10 ← render_screen_original::x#2 +Coalesced [765] render_screen_original::screen#12 ← render_screen_original::screen#10 +Coalesced [766] render_screen_original::cols#9 ← render_screen_original::cols#3 +Coalesced [767] render_screen_original::oscr#7 ← render_screen_original::oscr#1 +Coalesced [768] render_screen_original::ocols#7 ← render_screen_original::ocols#1 +Coalesced [769] render_screen_original::y#7 ← render_screen_original::y#1 +Coalesced [770] render_screen_original::screen#18 ← render_screen_original::screen#10 +Coalesced [771] render_screen_original::cols#15 ← render_screen_original::cols#3 +Coalesced [772] render_screen_original::x#11 ← render_screen_original::x#3 +Coalesced (already) [773] render_screen_original::oscr#9 ← render_screen_original::oscr#1 +Coalesced [774] render_screen_original::screen#16 ← render_screen_original::screen#3 +Coalesced (already) [775] render_screen_original::ocols#9 ← render_screen_original::ocols#1 +Coalesced [776] render_screen_original::cols#13 ← render_screen_original::cols#2 +Coalesced [777] render_screen_original::x#9 ← render_screen_original::x#2 +Coalesced (already) [778] render_screen_original::screen#14 ← render_screen_original::screen#2 +Coalesced (already) [779] render_screen_original::cols#11 ← render_screen_original::cols#1 +Coalesced [780] render_screen_original::x#7 ← render_screen_original::x#1 +Coalesced [807] irq_raster_next#25 ← irq_raster_next#3 +Coalesced [816] irq_raster_next#27 ← irq_raster_next#2 +Coalesced [821] irq_raster_next#26 ← irq_raster_next#1 +Coalesced down to 91 phi equivalence classes +Culled Empty Block (label) main::@41 Culled Empty Block (label) render_bcd::@3 Culled Empty Block (label) render_moving::@14 Culled Empty Block (label) render_moving::@15 Culled Empty Block (label) render_moving::@16 Culled Empty Block (label) render_playfield::@5 Culled Empty Block (label) render_playfield::@6 +Culled Empty Block (label) play_movement::@8 Culled Empty Block (label) play_move_rotate::@16 Culled Empty Block (label) play_move_rotate::@15 Culled Empty Block (label) play_move_leftright::@16 @@ -8536,6 +9408,7 @@ Culled Empty Block (label) play_move_down::@26 Culled Empty Block (label) play_move_down::@25 Culled Empty Block (label) play_move_down::@24 Culled Empty Block (label) play_move_down::@23 +Culled Empty Block (label) play_spawn_current::@8 Culled Empty Block (label) play_update_score::@7 Culled Empty Block (label) play_update_score::@6 Culled Empty Block (label) play_increase_level::@10 @@ -8563,28 +9436,26 @@ Culled Empty Block (label) render_screen_original::@9 Culled Empty Block (label) render_screen_original::@14 Culled Empty Block (label) render_screen_original::@12 Culled Empty Block (label) render_screen_original::@10 -Culled Empty Block (label) sprites_irq::@14 Adding NOP phi() at start of @begin Adding NOP phi() at start of toSpritePtr1 -Adding NOP phi() at start of @36 +Adding NOP phi() at start of @37 Adding NOP phi() at start of @end Adding NOP phi() at start of main -Adding NOP phi() at start of main::@16 -Adding NOP phi() at start of main::@17 -Adding NOP phi() at start of main::@18 -Adding NOP phi() at start of main::@19 -Adding NOP phi() at start of main::@20 -Adding NOP phi() at start of main::@6 -Adding NOP phi() at start of main::@23 -Adding NOP phi() at start of main::@24 +Adding NOP phi() at start of main::@26 +Adding NOP phi() at start of main::@27 +Adding NOP phi() at start of main::@28 +Adding NOP phi() at start of main::@29 Adding NOP phi() at start of main::@30 -Adding NOP phi() at start of main::@31 +Adding NOP phi() at start of main::@33 +Adding NOP phi() at start of main::@34 +Adding NOP phi() at start of main::@38 +Adding NOP phi() at start of main::@39 Adding NOP phi() at start of render_score::@3 Adding NOP phi() at start of play_move_down::@8 Adding NOP phi() at start of play_move_down::@13 Adding NOP phi() at start of play_move_down::@19 Adding NOP phi() at start of play_move_down::@21 -Adding NOP phi() at start of play_spawn_current +Adding NOP phi() at start of play_spawn_current::@11 Adding NOP phi() at start of play_spawn_current::@2 Adding NOP phi() at start of play_update_score::@4 Adding NOP phi() at start of play_remove_lines @@ -8623,11 +9494,14 @@ FINAL CONTROL FLOW GRAPH to:@22 @22: scope:[] from @14 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 @@ -8637,1086 +9511,1135 @@ FINAL CONTROL FLOW GRAPH to:@23 @23: scope:[] from @22 [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 - [7] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 to:toSpritePtr1 toSpritePtr1: scope:[] from @23 [8] phi() - to:@37 -@37: scope:[] from toSpritePtr1 - [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 + to:@38 +@38: scope:[] from toSpritePtr1 + [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@36 -@36: scope:[] from @37 + to:@37 +@37: scope:[] from @38 [11] phi() [12] call main to:@end -@end: scope:[] from @36 +@end: scope:[] from @37 [13] phi() -main: scope:[main] from @36 +main: scope:[main] from @37 [14] phi() [15] call sid_rnd_init - to:main::@15 -main::@15: scope:[main] from main + to:main::@25 +main::@25: scope:[main] from main asm { sei } [17] call render_init - to:main::@16 -main::@16: scope:[main] from main::@15 + to:main::@26 +main::@26: scope:[main] from main::@25 [18] phi() [19] call sprites_init - to:main::@17 -main::@17: scope:[main] from main::@16 + to:main::@27 +main::@27: scope:[main] from main::@26 [20] phi() [21] call sprites_irq_init - to:main::@18 -main::@18: scope:[main] from main::@17 + to:main::@28 +main::@28: scope:[main] from main::@27 [22] phi() [23] call play_init - to:main::@19 -main::@19: scope:[main] from main::@18 + to:main::@29 +main::@29: scope:[main] from main::@28 [24] phi() [25] call play_spawn_current - to:main::@20 -main::@20: scope:[main] from main::@19 + to:main::@30 +main::@30: scope:[main] from main::@29 [26] phi() [27] call render_playfield - to:main::@21 -main::@21: scope:[main] from main::@20 - [28] (byte~) current_ypos#86 ← (byte) current_ypos#18 - [29] (byte~) current_xpos#112 ← (byte) current_xpos#23 - [30] (byte*~) current_piece_gfx#102 ← (byte*) current_piece_gfx#16 - [31] (byte~) current_piece_char#90 ← (byte) current_piece_char#12 + to:main::@31 +main::@31: scope:[main] from main::@30 + [28] (byte~) current_ypos#99 ← (byte) current_ypos#22 + [29] (byte~) current_xpos#125 ← (byte) current_xpos#28 + [30] (byte*~) current_piece_gfx#115 ← (byte*) current_piece_gfx#21 + [31] (byte~) current_piece_char#103 ← (byte) current_piece_char#16 [32] call render_moving - [33] (byte*~) current_piece#73 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + [33] (byte*~) current_piece#88 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) to:main::@1 -main::@1: scope:[main] from main::@21 main::@28 main::@31 - [34] (byte) level_bcd#20 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(byte) level_bcd#13 main::@28/(byte) level_bcd#13 ) - [34] (byte) level#19 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(byte) level#12 main::@28/(byte) level#12 ) - [34] (dword) score_bcd#14 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(dword) score_bcd#10 main::@28/(dword) score_bcd#10 ) - [34] (word) lines_bcd#15 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(word) lines_bcd#11 main::@28/(word) lines_bcd#11 ) - [34] (byte) current_movedown_counter#12 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(byte) current_movedown_counter#10 main::@28/(byte) current_movedown_counter#10 ) - [34] (byte) keyboard_events_size#19 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(byte) keyboard_events_size#16 main::@28/(byte) keyboard_events_size#16 ) - [34] (byte) current_piece_char#15 ← phi( main::@21/(byte) current_piece_char#12 main::@31/(byte) current_piece_char#1 main::@28/(byte) current_piece_char#1 ) - [34] (byte) current_ypos#21 ← phi( main::@21/(byte) current_ypos#18 main::@31/(byte) current_ypos#13 main::@28/(byte) current_ypos#13 ) - [34] (byte) current_xpos#10 ← phi( main::@21/(byte) current_xpos#23 main::@31/(byte) current_xpos#19 main::@28/(byte) current_xpos#19 ) - [34] (byte*) current_piece_gfx#20 ← phi( main::@21/(byte*) current_piece_gfx#16 main::@31/(byte*) current_piece_gfx#14 main::@28/(byte*) current_piece_gfx#14 ) - [34] (byte) current_orientation#10 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(byte) current_orientation#19 main::@28/(byte) current_orientation#19 ) - [34] (byte*) current_piece#16 ← phi( main::@21/(byte*~) current_piece#73 main::@31/(byte*) current_piece#10 main::@28/(byte*) current_piece#10 ) - [34] (byte) current_movedown_slow#12 ← phi( main::@21/(byte) current_movedown_slow#1 main::@31/(byte) current_movedown_slow#17 main::@28/(byte) current_movedown_slow#17 ) - [34] (byte) render_screen_render#17 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 64 main::@31/(byte) render_screen_render#11 ) - [34] (byte) render_screen_show#16 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(byte) render_screen_show#13 ) +main::@1: scope:[main] from main::@12 main::@31 + [34] (byte) level_bcd#11 ← phi( main::@12/(byte) level_bcd#17 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [34] (byte) level#10 ← phi( main::@12/(byte) level#16 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [34] (dword) score_bcd#18 ← phi( main::@12/(dword) score_bcd#14 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [34] (word) lines_bcd#19 ← phi( main::@12/(word) lines_bcd#15 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [34] (byte) current_movedown_counter#16 ← phi( main::@12/(byte) current_movedown_counter#14 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [34] (byte) keyboard_events_size#19 ← phi( main::@12/(byte) keyboard_events_size#16 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [34] (byte) game_over#19 ← phi( main::@12/(byte) game_over#14 main::@31/(byte) game_over#15 ) + [34] (byte) current_ypos#25 ← phi( main::@12/(byte) current_ypos#17 main::@31/(byte) current_ypos#22 ) + [34] (byte) current_xpos#115 ← phi( main::@12/(byte) current_xpos#17 main::@31/(byte) current_xpos#28 ) + [34] (byte*) current_piece_gfx#105 ← phi( main::@12/(byte*) current_piece_gfx#16 main::@31/(byte*) current_piece_gfx#21 ) + [34] (byte) current_orientation#12 ← phi( main::@12/(byte) current_orientation#16 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [34] (byte) current_piece_char#19 ← phi( main::@12/(byte) current_piece_char#14 main::@31/(byte) current_piece_char#16 ) + [34] (byte*) current_piece#20 ← phi( main::@12/(byte*) current_piece#14 main::@31/(byte*~) current_piece#88 ) + [34] (byte) current_movedown_slow#14 ← phi( main::@12/(byte) current_movedown_slow#21 main::@31/(byte) current_movedown_slow#1 ) + [34] (byte) render_screen_render#17 ← phi( main::@12/(byte) render_screen_render#33 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 64 ) + [34] (byte) render_screen_show#17 ← phi( main::@12/(byte) render_screen_show#29 main::@31/(byte/signed byte/word/signed word/dword/signed dword) 0 ) to:main::@4 main::@4: scope:[main] from main::@1 main::@4 [35] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 - [36] phi() - [37] call render_show + [36] (byte~) main::$9 ← (byte) render_screen_show#17 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [37] *((const byte*) BORDERCOL#0) ← (byte~) main::$9 + [38] call render_show + to:main::@33 +main::@33: scope:[main] from main::@6 + [39] phi() + [40] call keyboard_event_scan + to:main::@34 +main::@34: scope:[main] from main::@33 + [41] phi() + [42] call keyboard_event_get + [43] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + to:main::@35 +main::@35: scope:[main] from main::@34 + [44] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + [45] if((byte) game_over#19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 + to:main::@9 +main::@9: scope:[main] from main::@35 main::@9 + [46] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + to:main::@9 +main::@7: scope:[main] from main::@35 + [47] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 + [48] call play_movement + [49] (byte) play_movement::return#3 ← (byte) play_movement::return#2 + to:main::@36 +main::@36: scope:[main] from main::@7 + [50] (byte) main::render#1 ← (byte) play_movement::return#3 + to:main::@11 +main::@11: scope:[main] from main::@36 + [51] if((byte) main::render#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12 to:main::@23 -main::@23: scope:[main] from main::@6 - [38] phi() - [39] call keyboard_event_scan - to:main::@24 -main::@24: scope:[main] from main::@23 - [40] phi() - [41] call keyboard_event_get - [42] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 - to:main::@25 -main::@25: scope:[main] from main::@24 - [43] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 - [44] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 - [45] call play_move_down - [46] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 - to:main::@26 -main::@26: scope:[main] from main::@25 - [47] (byte~) main::$12 ← (byte) play_move_down::return#3 - [48] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 - [49] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 - [50] call play_move_leftright - [51] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 - to:main::@27 -main::@27: scope:[main] from main::@26 - [52] (byte~) main::$13 ← (byte) play_move_leftright::return#4 - [53] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 - [54] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 - [55] call play_move_rotate - [56] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 - to:main::@28 -main::@28: scope:[main] from main::@27 - [57] (byte~) main::$14 ← (byte) play_move_rotate::return#4 - [58] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 - [59] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 - to:main::@13 -main::@13: scope:[main] from main::@28 - [60] (byte~) render_screen_render#65 ← (byte) render_screen_render#17 - [61] call render_playfield - to:main::@29 -main::@29: scope:[main] from main::@13 - [62] (byte~) current_ypos#87 ← (byte) current_ypos#13 - [63] (byte~) render_screen_render#64 ← (byte) render_screen_render#17 - [64] (byte~) current_xpos#113 ← (byte) current_xpos#19 - [65] (byte*~) current_piece_gfx#103 ← (byte*) current_piece_gfx#14 - [66] (byte~) current_piece_char#91 ← (byte) current_piece_char#1 - [67] call render_moving - to:main::@30 -main::@30: scope:[main] from main::@29 - [68] phi() - [69] call render_score - to:main::@31 -main::@31: scope:[main] from main::@30 - [70] phi() - [71] call render_screen_swap +main::@23: scope:[main] from main::@11 + [52] (byte~) render_screen_render#69 ← (byte) render_screen_render#17 + [53] call render_playfield + to:main::@37 +main::@37: scope:[main] from main::@23 + [54] (byte~) current_ypos#100 ← (byte) current_ypos#17 + [55] (byte~) render_screen_render#68 ← (byte) render_screen_render#17 + [56] (byte~) current_xpos#126 ← (byte) current_xpos#17 + [57] (byte*~) current_piece_gfx#116 ← (byte*) current_piece_gfx#16 + [58] (byte~) current_piece_char#104 ← (byte) current_piece_char#14 + [59] call render_moving + to:main::@38 +main::@38: scope:[main] from main::@37 + [60] phi() + [61] call render_score + to:main::@39 +main::@39: scope:[main] from main::@38 + [62] phi() + [63] call render_screen_swap + to:main::@12 +main::@12: scope:[main] from main::@11 main::@39 + [64] (byte) render_screen_render#33 ← phi( main::@11/(byte) render_screen_render#17 main::@39/(byte) render_screen_render#11 ) + [64] (byte) render_screen_show#29 ← phi( main::@11/(byte) render_screen_show#17 main::@39/(byte) render_screen_show#13 ) + [65] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::@1 -render_screen_swap: scope:[render_screen_swap] from main::@31 - [72] (byte) render_screen_render#11 ← (byte) render_screen_render#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 - [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 +render_screen_swap: scope:[render_screen_swap] from main::@39 + [66] (byte) render_screen_render#11 ← (byte) render_screen_render#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 + [67] (byte) render_screen_show#13 ← (byte) render_screen_show#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 to:render_screen_swap::@return render_screen_swap::@return: scope:[render_screen_swap] from render_screen_swap - [74] return + [68] return to:@return -render_score: scope:[render_score] from main::@30 - [75] if((byte) render_screen_render#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 +render_score: scope:[render_score] from main::@38 + [69] if((byte) render_screen_render#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 to:render_score::@3 render_score::@3: scope:[render_score] from render_score - [76] phi() + [70] phi() to:render_score::@2 render_score::@2: scope:[render_score] from render_score render_score::@3 - [77] (byte*) render_score::screen#2 ← phi( render_score/(const byte*) PLAYFIELD_SCREEN_1#0 render_score::@3/(const byte*) PLAYFIELD_SCREEN_2#0 ) - [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 - [79] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) - [80] call render_bcd + [71] (byte*) render_score::screen#2 ← phi( render_score/(const byte*) PLAYFIELD_SCREEN_1#0 render_score::@3/(const byte*) PLAYFIELD_SCREEN_2#0 ) + [72] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 + [73] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) + [74] call render_bcd to:render_score::@5 render_score::@5: scope:[render_score] from render_score::@2 - [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 - [82] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) - [83] call render_bcd + [75] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 + [76] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) + [77] call render_bcd to:render_score::@6 render_score::@6: scope:[render_score] from render_score::@5 - [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 - [85] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) - [86] call render_bcd + [78] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 + [79] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) + [80] call render_bcd to:render_score::@7 render_score::@7: scope:[render_score] from render_score::@6 - [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#11 - [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 - [89] call render_bcd + [81] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 + [82] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 + [83] call render_bcd to:render_score::@8 render_score::@8: scope:[render_score] from render_score::@7 - [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#11 - [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 - [92] call render_bcd + [84] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 + [85] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 + [86] call render_bcd to:render_score::@9 render_score::@9: scope:[render_score] from render_score::@8 - [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 - [94] (byte) render_bcd::bcd#5 ← (byte) level_bcd#13 - [95] call render_bcd + [87] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 + [88] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 + [89] call render_bcd to:render_score::@return render_score::@return: scope:[render_score] from render_score::@9 - [96] return + [90] return to:@return render_bcd: scope:[render_bcd] from render_score::@2 render_score::@5 render_score::@6 render_score::@7 render_score::@8 render_score::@9 - [97] (byte) render_bcd::bcd#6 ← phi( render_score::@2/(byte) render_bcd::bcd#0 render_score::@5/(byte) render_bcd::bcd#1 render_score::@6/(byte) render_bcd::bcd#2 render_score::@7/(byte) render_bcd::bcd#3 render_score::@8/(byte) render_bcd::bcd#4 render_score::@9/(byte) render_bcd::bcd#5 ) - [97] (byte) render_bcd::only_low#6 ← phi( render_score::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 render_score::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [97] (word) render_bcd::offset#6 ← phi( render_score::@2/(const word) render_score::score_offset#0 render_score::@5/(const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 render_score::@6/(const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 render_score::@7/(const word) render_score::lines_offset#0 render_score::@8/(const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 render_score::@9/(const word) render_score::level_offset#0 ) - [97] (byte*) render_bcd::screen#6 ← phi( render_score::@2/(byte*) render_bcd::screen#0 render_score::@5/(byte*) render_bcd::screen#1 render_score::@6/(byte*) render_bcd::screen#2 render_score::@7/(byte*) render_bcd::screen#3 render_score::@8/(byte*) render_bcd::screen#4 render_score::@9/(byte*) render_bcd::screen#5 ) - [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 - [99] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 + [91] (byte) render_bcd::bcd#6 ← phi( render_score::@2/(byte) render_bcd::bcd#0 render_score::@5/(byte) render_bcd::bcd#1 render_score::@6/(byte) render_bcd::bcd#2 render_score::@7/(byte) render_bcd::bcd#3 render_score::@8/(byte) render_bcd::bcd#4 render_score::@9/(byte) render_bcd::bcd#5 ) + [91] (byte) render_bcd::only_low#6 ← phi( render_score::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 render_score::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 render_score::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [91] (word) render_bcd::offset#6 ← phi( render_score::@2/(const word) render_score::score_offset#0 render_score::@5/(const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 render_score::@6/(const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 render_score::@7/(const word) render_score::lines_offset#0 render_score::@8/(const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 render_score::@9/(const word) render_score::level_offset#0 ) + [91] (byte*) render_bcd::screen#6 ← phi( render_score::@2/(byte*) render_bcd::screen#0 render_score::@5/(byte*) render_bcd::screen#1 render_score::@6/(byte*) render_bcd::screen#2 render_score::@7/(byte*) render_bcd::screen#3 render_score::@8/(byte*) render_bcd::screen#4 render_score::@9/(byte*) render_bcd::screen#5 ) + [92] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 + [93] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 to:render_bcd::@2 render_bcd::@2: scope:[render_bcd] from render_bcd - [100] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [101] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 - [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 - [103] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 + [94] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [95] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 + [96] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 + [97] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 to:render_bcd::@1 render_bcd::@1: scope:[render_bcd] from render_bcd render_bcd::@2 - [104] (byte*) render_bcd::screen_pos#3 ← phi( render_bcd/(byte*) render_bcd::screen_pos#0 render_bcd::@2/(byte*) render_bcd::screen_pos#2 ) - [105] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [106] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 - [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 - [108] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 + [98] (byte*) render_bcd::screen_pos#3 ← phi( render_bcd/(byte*) render_bcd::screen_pos#0 render_bcd::@2/(byte*) render_bcd::screen_pos#2 ) + [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [100] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 + [101] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 + [102] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 to:render_bcd::@return render_bcd::@return: scope:[render_bcd] from render_bcd::@1 - [109] return + [103] return to:@return -render_moving: scope:[render_moving] from main::@21 main::@29 - [110] (byte) current_piece_char#64 ← phi( main::@21/(byte~) current_piece_char#90 main::@29/(byte~) current_piece_char#91 ) - [110] (byte*) current_piece_gfx#53 ← phi( main::@21/(byte*~) current_piece_gfx#102 main::@29/(byte*~) current_piece_gfx#103 ) - [110] (byte) current_xpos#47 ← phi( main::@21/(byte~) current_xpos#112 main::@29/(byte~) current_xpos#113 ) - [110] (byte) render_screen_render#30 ← phi( main::@21/(byte/signed byte/word/signed word/dword/signed dword) 64 main::@29/(byte~) render_screen_render#64 ) - [110] (byte) current_ypos#9 ← phi( main::@21/(byte~) current_ypos#86 main::@29/(byte~) current_ypos#87 ) - [111] (byte) render_moving::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 +render_moving: scope:[render_moving] from main::@31 main::@37 + [104] (byte) current_piece_char#75 ← phi( main::@31/(byte~) current_piece_char#103 main::@37/(byte~) current_piece_char#104 ) + [104] (byte*) current_piece_gfx#62 ← phi( main::@31/(byte*~) current_piece_gfx#115 main::@37/(byte*~) current_piece_gfx#116 ) + [104] (byte) current_xpos#57 ← phi( main::@31/(byte~) current_xpos#125 main::@37/(byte~) current_xpos#126 ) + [104] (byte) render_screen_render#30 ← phi( main::@31/(byte/signed byte/word/signed word/dword/signed dword) 64 main::@37/(byte~) render_screen_render#68 ) + [104] (byte) current_ypos#11 ← phi( main::@31/(byte~) current_ypos#99 main::@37/(byte~) current_ypos#100 ) + [105] (byte) render_moving::ypos2#0 ← (byte) current_ypos#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:render_moving::@1 render_moving::@1: scope:[render_moving] from render_moving render_moving::@3 - [112] (byte) render_moving::l#4 ← phi( render_moving/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@3/(byte) render_moving::l#1 ) - [112] (byte) render_moving::i#3 ← phi( render_moving/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@3/(byte) render_moving::i#8 ) - [112] (byte) render_moving::ypos2#2 ← phi( render_moving/(byte) render_moving::ypos2#0 render_moving::@3/(byte) render_moving::ypos2#1 ) - [113] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@13 + [106] (byte) render_moving::l#4 ← phi( render_moving/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@3/(byte) render_moving::l#1 ) + [106] (byte) render_moving::i#3 ← phi( render_moving/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@3/(byte) render_moving::i#8 ) + [106] (byte) render_moving::ypos2#2 ← phi( render_moving/(byte) render_moving::ypos2#0 render_moving::@3/(byte) render_moving::ypos2#1 ) + [107] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@13 to:render_moving::@7 render_moving::@7: scope:[render_moving] from render_moving::@1 render_moving::@13 - [114] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 + [108] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 to:render_moving::@3 render_moving::@3: scope:[render_moving] from render_moving::@5 render_moving::@7 - [115] (byte) render_moving::i#8 ← phi( render_moving::@5/(byte) render_moving::i#10 render_moving::@7/(byte) render_moving::i#1 ) - [116] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [117] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 - [118] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 + [109] (byte) render_moving::i#8 ← phi( render_moving::@5/(byte) render_moving::i#10 render_moving::@7/(byte) render_moving::i#1 ) + [110] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [111] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 + [112] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 to:render_moving::@return render_moving::@return: scope:[render_moving] from render_moving::@3 - [119] return + [113] return to:@return render_moving::@13: scope:[render_moving] from render_moving::@1 - [120] if((byte) render_moving::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_moving::@2 + [114] if((byte) render_moving::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_moving::@2 to:render_moving::@7 render_moving::@2: scope:[render_moving] from render_moving::@13 - [121] (byte~) render_moving::$5 ← (byte) render_screen_render#30 + (byte) render_moving::ypos2#2 - [122] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) - [123] (byte) render_moving::xpos#0 ← (byte) current_xpos#47 + [115] (byte~) render_moving::$5 ← (byte) render_screen_render#30 + (byte) render_moving::ypos2#2 + [116] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) + [117] (byte) render_moving::xpos#0 ← (byte) current_xpos#57 to:render_moving::@4 render_moving::@4: scope:[render_moving] from render_moving::@2 render_moving::@5 - [124] (byte) render_moving::c#2 ← phi( render_moving::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@5/(byte) render_moving::c#1 ) - [124] (byte) render_moving::xpos#2 ← phi( render_moving::@2/(byte) render_moving::xpos#0 render_moving::@5/(byte) render_moving::xpos#1 ) - [124] (byte) render_moving::i#4 ← phi( render_moving::@2/(byte) render_moving::i#3 render_moving::@5/(byte) render_moving::i#10 ) - [125] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_moving::i#4) - [126] (byte) render_moving::i#10 ← ++ (byte) render_moving::i#4 - [127] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 + [118] (byte) render_moving::c#2 ← phi( render_moving::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_moving::@5/(byte) render_moving::c#1 ) + [118] (byte) render_moving::xpos#2 ← phi( render_moving::@2/(byte) render_moving::xpos#0 render_moving::@5/(byte) render_moving::xpos#1 ) + [118] (byte) render_moving::i#4 ← phi( render_moving::@2/(byte) render_moving::i#3 render_moving::@5/(byte) render_moving::i#10 ) + [119] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#62 + (byte) render_moving::i#4) + [120] (byte) render_moving::i#10 ← ++ (byte) render_moving::i#4 + [121] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 to:render_moving::@9 render_moving::@9: scope:[render_moving] from render_moving::@4 - [128] if((byte) render_moving::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_moving::@5 + [122] if((byte) render_moving::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_moving::@5 to:render_moving::@10 render_moving::@10: scope:[render_moving] from render_moving::@9 - [129] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#64 + [123] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#75 to:render_moving::@5 render_moving::@5: scope:[render_moving] from render_moving::@10 render_moving::@4 render_moving::@9 - [130] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 - [131] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 - [132] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 + [124] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 + [125] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 + [126] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 to:render_moving::@3 -render_playfield: scope:[render_playfield] from main::@13 main::@20 - [133] (byte) render_screen_render#21 ← phi( main::@13/(byte~) render_screen_render#65 main::@20/(byte/signed byte/word/signed word/dword/signed dword) 64 ) +render_playfield: scope:[render_playfield] from main::@23 main::@30 + [127] (byte) render_screen_render#21 ← phi( main::@23/(byte~) render_screen_render#69 main::@30/(byte/signed byte/word/signed word/dword/signed dword) 64 ) to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 - [134] (byte) render_playfield::i#3 ← phi( render_playfield/(const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::i#1 ) - [134] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::l#1 ) - [135] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [136] (byte~) render_playfield::$3 ← (byte) render_screen_render#21 + (byte~) render_playfield::$2 - [137] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) + [128] (byte) render_playfield::i#3 ← phi( render_playfield/(const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::i#1 ) + [128] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 2 render_playfield::@3/(byte) render_playfield::l#1 ) + [129] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [130] (byte~) render_playfield::$3 ← (byte) render_screen_render#21 + (byte~) render_playfield::$2 + [131] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 - [138] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@2/(byte) render_playfield::c#1 ) - [138] (byte*) render_playfield::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 ) - [138] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - [139] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) - [140] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 - [141] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 - [142] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 - [143] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 + [132] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@2/(byte) render_playfield::c#1 ) + [132] (byte*) render_playfield::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 ) + [132] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + [133] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) + [134] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 + [135] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 + [136] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 + [137] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 to:render_playfield::@3 render_playfield::@3: scope:[render_playfield] from render_playfield::@2 - [144] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 - [145] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 + [138] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 + [139] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 to:render_playfield::@return render_playfield::@return: scope:[render_playfield] from render_playfield::@3 - [146] return + [140] return to:@return -play_move_rotate: scope:[play_move_rotate] from main::@27 - [147] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 +play_movement: scope:[play_movement] from main::@7 + [141] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 + [142] call play_move_down + [143] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 + to:play_movement::@5 +play_movement::@5: scope:[play_movement] from play_movement + [144] (byte~) play_movement::$0 ← (byte) play_move_down::return#0 + [145] (byte) play_movement::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_movement::$0 + [146] if((byte) game_over#14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 + to:play_movement::@return +play_movement::@return: scope:[play_movement] from play_movement::@5 play_movement::@7 + [147] (byte) current_xpos#17 ← phi( play_movement::@5/(byte) current_xpos#20 play_movement::@7/(byte) current_xpos#24 ) + [147] (byte*) current_piece_gfx#16 ← phi( play_movement::@5/(byte*) current_piece_gfx#18 play_movement::@7/(byte*) current_piece_gfx#19 ) + [147] (byte) current_orientation#16 ← phi( play_movement::@5/(byte) current_orientation#19 play_movement::@7/(byte) current_orientation#24 ) + [147] (byte) play_movement::return#2 ← phi( play_movement::@5/(byte) play_movement::render#1 play_movement::@7/(byte) play_movement::return#0 ) + [148] return + to:@return +play_movement::@1: scope:[play_movement] from play_movement::@5 + [149] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 + [150] call play_move_leftright + [151] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + to:play_movement::@6 +play_movement::@6: scope:[play_movement] from play_movement::@1 + [152] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 + [153] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 + [154] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 + [155] call play_move_rotate + [156] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + to:play_movement::@7 +play_movement::@7: scope:[play_movement] from play_movement::@6 + [157] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 + [158] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 + to:play_movement::@return +play_move_rotate: scope:[play_move_rotate] from play_movement::@6 + [159] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 to:play_move_rotate::@6 play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate - [148] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 + [160] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 to:play_move_rotate::@return play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 play_move_rotate::@14 play_move_rotate::@6 - [149] (byte*) current_piece_gfx#14 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#3 play_move_rotate::@14/(byte*) current_piece_gfx#1 play_move_rotate::@6/(byte*) current_piece_gfx#1 ) - [149] (byte) current_orientation#19 ← phi( play_move_rotate::@11/(byte) current_orientation#4 play_move_rotate::@14/(byte) current_orientation#14 play_move_rotate::@6/(byte) current_orientation#14 ) - [149] (byte) play_move_rotate::return#1 ← phi( play_move_rotate::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [150] return + [161] (byte*) current_piece_gfx#19 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#6 play_move_rotate::@14/(byte*) current_piece_gfx#18 play_move_rotate::@6/(byte*) current_piece_gfx#18 ) + [161] (byte) current_orientation#24 ← phi( play_move_rotate::@11/(byte) current_orientation#7 play_move_rotate::@14/(byte) current_orientation#19 play_move_rotate::@6/(byte) current_orientation#19 ) + [161] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [162] return to:@return play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 - [151] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 - [152] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 + [163] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#19 + (byte/signed byte/word/signed word/dword/signed dword) 16 + [164] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 to:play_move_rotate::@4 play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 - [153] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) - [154] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 - [155] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 - [156] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [157] (byte*~) current_piece#79 ← (byte*) current_piece#10 - [158] call play_collision - [159] (byte) play_collision::return#13 ← (byte) play_collision::return#14 + [165] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) + [166] (byte) play_collision::xpos#3 ← (byte) current_xpos#24 + [167] (byte) play_collision::ypos#3 ← (byte) current_ypos#17 + [168] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [169] (byte*~) current_piece#92 ← (byte*) current_piece#14 + [170] call play_collision + [171] (byte) play_collision::return#14 ← (byte) play_collision::return#15 to:play_move_rotate::@14 play_move_rotate::@14: scope:[play_move_rotate] from play_move_rotate::@4 - [160] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 - [161] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return + [172] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#14 + [173] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return to:play_move_rotate::@11 play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 - [162] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 - [163] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 + [174] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 + [175] (byte*) current_piece_gfx#6 ← (byte*) current_piece#14 + (byte) current_orientation#7 to:play_move_rotate::@return play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - [164] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 - [165] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 + [176] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#19 - (byte/signed byte/word/signed word/dword/signed dword) 16 + [177] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 to:play_move_rotate::@4 -play_collision: scope:[play_collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 - [166] (byte) play_collision::xpos#5 ← phi( play_move_down::@12/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@7/(byte) play_collision::xpos#2 play_move_rotate::@4/(byte) play_collision::xpos#3 ) - [166] (byte) play_collision::ypos#4 ← phi( play_move_down::@12/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@7/(byte) play_collision::ypos#2 play_move_rotate::@4/(byte) play_collision::ypos#3 ) - [166] (byte) play_collision::orientation#4 ← phi( play_move_down::@12/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@7/(byte) play_collision::orientation#2 play_move_rotate::@4/(byte) play_collision::orientation#3 ) - [166] (byte*) current_piece#12 ← phi( play_move_down::@12/(byte*~) current_piece#76 play_move_leftright::@1/(byte*~) current_piece#77 play_move_leftright::@7/(byte*~) current_piece#78 play_move_rotate::@4/(byte*~) current_piece#79 ) - [167] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 - [168] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 +play_collision: scope:[play_collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 play_spawn_current::@3 + [178] (byte) play_collision::xpos#6 ← phi( play_move_down::@12/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@7/(byte) play_collision::xpos#2 play_move_rotate::@4/(byte) play_collision::xpos#3 play_spawn_current::@3/(byte) play_collision::xpos#4 ) + [178] (byte) play_collision::ypos#5 ← phi( play_move_down::@12/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@7/(byte) play_collision::ypos#2 play_move_rotate::@4/(byte) play_collision::ypos#3 play_spawn_current::@3/(byte) play_collision::ypos#4 ) + [178] (byte) play_collision::orientation#5 ← phi( play_move_down::@12/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@7/(byte) play_collision::orientation#2 play_move_rotate::@4/(byte) play_collision::orientation#3 play_spawn_current::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [178] (byte*) current_piece#16 ← phi( play_move_down::@12/(byte*~) current_piece#89 play_move_leftright::@1/(byte*~) current_piece#90 play_move_leftright::@7/(byte*~) current_piece#91 play_move_rotate::@4/(byte*~) current_piece#92 play_spawn_current::@3/(byte*~) current_piece#93 ) + [179] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#16 + (byte) play_collision::orientation#5 + [180] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_collision::@1 play_collision::@1: scope:[play_collision] from play_collision play_collision::@20 - [169] (byte) play_collision::l#6 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte) play_collision::l#1 ) - [169] (byte) play_collision::i#3 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte~) play_collision::i#11 ) - [169] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@20/(byte) play_collision::ypos2#1 ) - [170] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) - [171] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 + [181] (byte) play_collision::l#6 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte) play_collision::l#1 ) + [181] (byte) play_collision::i#3 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte~) play_collision::i#11 ) + [181] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@20/(byte) play_collision::ypos2#1 ) + [182] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) + [183] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 to:play_collision::@2 play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@21 - [172] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@21/(byte) play_collision::c#1 ) - [172] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@21/(byte) play_collision::col#1 ) - [172] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@21/(byte~) play_collision::i#13 ) - [173] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 - [174] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 + [184] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@21/(byte) play_collision::c#1 ) + [184] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@21/(byte) play_collision::col#1 ) + [184] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@21/(byte~) play_collision::i#13 ) + [185] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 + [186] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 to:play_collision::@8 play_collision::@8: scope:[play_collision] from play_collision::@2 - [175] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 + [187] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 to:play_collision::@return play_collision::@return: scope:[play_collision] from play_collision::@17 play_collision::@4 play_collision::@5 play_collision::@6 play_collision::@8 - [176] (byte) play_collision::return#14 ← phi( play_collision::@4/(const byte) COLLISION_LEFT#0 play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@17/(const byte) COLLISION_NONE#0 play_collision::@8/(const byte) COLLISION_BOTTOM#0 ) - [177] return + [188] (byte) play_collision::return#15 ← phi( play_collision::@4/(const byte) COLLISION_LEFT#0 play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@17/(const byte) COLLISION_NONE#0 play_collision::@8/(const byte) COLLISION_BOTTOM#0 ) + [189] return to:@return play_collision::@4: scope:[play_collision] from play_collision::@8 - [178] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 - [179] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 + [190] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 + [191] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 to:play_collision::@return play_collision::@5: scope:[play_collision] from play_collision::@4 - [180] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 + [192] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 to:play_collision::@return play_collision::@6: scope:[play_collision] from play_collision::@5 - [181] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 + [193] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 to:play_collision::@return play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@6 - [182] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 - [183] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 - [184] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 + [194] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 + [195] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 + [196] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 to:play_collision::@17 play_collision::@17: scope:[play_collision] from play_collision::@3 - [185] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [186] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 - [187] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 + [197] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [198] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 + [199] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 to:play_collision::@return play_collision::@20: scope:[play_collision] from play_collision::@17 - [188] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 + [200] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 to:play_collision::@1 play_collision::@21: scope:[play_collision] from play_collision::@3 - [189] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 + [201] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 to:play_collision::@2 -play_move_leftright: scope:[play_move_leftright] from main::@26 - [190] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 +play_move_leftright: scope:[play_move_leftright] from play_movement::@1 + [202] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 to:play_move_leftright::@6 play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright - [191] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return + [203] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return to:play_move_leftright::@7 play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@6 - [192] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [193] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 - [194] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 - [195] (byte*~) current_piece#78 ← (byte*) current_piece#10 - [196] call play_collision - [197] (byte) play_collision::return#12 ← (byte) play_collision::return#14 + [204] (byte) play_collision::xpos#2 ← (byte) current_xpos#20 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [205] (byte) play_collision::ypos#2 ← (byte) current_ypos#17 + [206] (byte) play_collision::orientation#2 ← (byte) current_orientation#19 + [207] (byte*~) current_piece#91 ← (byte*) current_piece#14 + [208] call play_collision + [209] (byte) play_collision::return#13 ← (byte) play_collision::return#15 to:play_move_leftright::@15 play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright::@7 - [198] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 - [199] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [210] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 + [211] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@8 play_move_leftright::@8: scope:[play_move_leftright] from play_move_leftright::@15 - [200] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 + [212] (byte) current_xpos#5 ← ++ (byte) current_xpos#20 to:play_move_leftright::@return play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@11 play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 play_move_leftright::@8 - [201] (byte) current_xpos#19 ← phi( play_move_leftright::@11/(byte) current_xpos#4 play_move_leftright::@15/(byte) current_xpos#1 play_move_leftright::@8/(byte) current_xpos#2 play_move_leftright::@14/(byte) current_xpos#1 play_move_leftright::@6/(byte) current_xpos#1 ) - [201] (byte) play_move_leftright::return#1 ← phi( play_move_leftright::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [202] return + [213] (byte) current_xpos#24 ← phi( play_move_leftright::@11/(byte) current_xpos#7 play_move_leftright::@15/(byte) current_xpos#20 play_move_leftright::@8/(byte) current_xpos#5 play_move_leftright::@14/(byte) current_xpos#20 play_move_leftright::@6/(byte) current_xpos#20 ) + [213] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [214] return to:@return play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - [203] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 - [204] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 - [205] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 - [206] (byte*~) current_piece#77 ← (byte*) current_piece#10 - [207] call play_collision - [208] (byte) play_collision::return#1 ← (byte) play_collision::return#14 + [215] (byte) play_collision::xpos#1 ← (byte) current_xpos#20 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [216] (byte) play_collision::ypos#1 ← (byte) current_ypos#17 + [217] (byte) play_collision::orientation#1 ← (byte) current_orientation#19 + [218] (byte*~) current_piece#90 ← (byte*) current_piece#14 + [219] call play_collision + [220] (byte) play_collision::return#1 ← (byte) play_collision::return#15 to:play_move_leftright::@14 play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright::@1 - [209] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - [210] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [221] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + [222] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@11 play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright::@14 - [211] (byte) current_xpos#4 ← -- (byte) current_xpos#1 + [223] (byte) current_xpos#7 ← -- (byte) current_xpos#20 to:play_move_leftright::@return -play_move_down: scope:[play_move_down] from main::@25 - [212] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 - [213] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 +play_move_down: scope:[play_move_down] from play_movement + [224] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 + [225] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 to:play_move_down::@8 play_move_down::@8: scope:[play_move_down] from play_move_down - [214] phi() + [226] phi() to:play_move_down::@1 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@8 - [215] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [216] call keyboard_event_pressed - [217] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + [227] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [228] call keyboard_event_pressed + [229] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 to:play_move_down::@17 play_move_down::@17: scope:[play_move_down] from play_move_down::@1 - [218] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - [219] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 + [230] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + [231] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 to:play_move_down::@9 play_move_down::@9: scope:[play_move_down] from play_move_down::@17 - [220] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 + [232] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 to:play_move_down::@10 play_move_down::@10: scope:[play_move_down] from play_move_down::@9 - [221] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 + [233] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 to:play_move_down::@2 play_move_down::@2: scope:[play_move_down] from play_move_down::@10 play_move_down::@17 play_move_down::@9 - [222] (byte) play_move_down::movedown#7 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@9/(byte) play_move_down::movedown#10 ) - [223] if((byte) current_movedown_counter#1<(byte) current_movedown_slow#12) goto play_move_down::@4 + [234] (byte) play_move_down::movedown#7 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@9/(byte) play_move_down::movedown#10 ) + [235] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@4 to:play_move_down::@11 play_move_down::@11: scope:[play_move_down] from play_move_down::@2 - [224] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + [236] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 to:play_move_down::@4 play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_down::@2 - [225] (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#7 ) - [226] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return + [237] (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#7 ) + [238] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return to:play_move_down::@12 play_move_down::@12: scope:[play_move_down] from play_move_down::@4 - [227] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [228] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 - [229] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 - [230] (byte*~) current_piece#76 ← (byte*) current_piece#16 - [231] call play_collision - [232] (byte) play_collision::return#0 ← (byte) play_collision::return#14 + [239] (byte) play_collision::ypos#0 ← (byte) current_ypos#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [240] (byte) play_collision::xpos#0 ← (byte) current_xpos#115 + [241] (byte) play_collision::orientation#0 ← (byte) current_orientation#12 + [242] (byte*~) current_piece#89 ← (byte*) current_piece#20 + [243] call play_collision + [244] (byte) play_collision::return#0 ← (byte) play_collision::return#15 to:play_move_down::@18 play_move_down::@18: scope:[play_move_down] from play_move_down::@12 - [233] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - [234] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 + [245] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + [246] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 to:play_move_down::@13 play_move_down::@13: scope:[play_move_down] from play_move_down::@18 - [235] phi() - [236] call play_lock_current + [247] phi() + [248] call play_lock_current to:play_move_down::@19 play_move_down::@19: scope:[play_move_down] from play_move_down::@13 - [237] phi() - [238] call play_remove_lines - [239] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 + [249] phi() + [250] call play_remove_lines + [251] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 to:play_move_down::@20 play_move_down::@20: scope:[play_move_down] from play_move_down::@19 - [240] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 - [241] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 - [242] call play_update_score + [252] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 + [253] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 + [254] call play_update_score to:play_move_down::@21 play_move_down::@21: scope:[play_move_down] from play_move_down::@20 - [243] phi() - [244] call play_spawn_current - [245] (byte*~) current_piece#80 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + [255] phi() + [256] call play_spawn_current + [257] (byte*~) current_piece#94 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@21 play_move_down::@6 - [246] (byte) current_piece_char#20 ← phi( play_move_down::@21/(byte) current_piece_char#12 play_move_down::@6/(byte) current_piece_char#15 ) - [246] (byte) current_xpos#33 ← phi( play_move_down::@21/(byte) current_xpos#23 play_move_down::@6/(byte) current_xpos#10 ) - [246] (byte*) current_piece_gfx#26 ← phi( play_move_down::@21/(byte*) current_piece_gfx#16 play_move_down::@6/(byte*) current_piece_gfx#20 ) - [246] (byte) current_orientation#29 ← phi( play_move_down::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_orientation#10 ) - [246] (byte*) current_piece#20 ← phi( play_move_down::@21/(byte*~) current_piece#80 play_move_down::@6/(byte*) current_piece#16 ) - [246] (byte) level_bcd#25 ← phi( play_move_down::@21/(byte) level_bcd#15 play_move_down::@6/(byte) level_bcd#20 ) - [246] (byte) current_movedown_slow#31 ← phi( play_move_down::@21/(byte) current_movedown_slow#19 play_move_down::@6/(byte) current_movedown_slow#12 ) - [246] (byte) level#24 ← phi( play_move_down::@21/(byte) level#14 play_move_down::@6/(byte) level#19 ) - [246] (dword) score_bcd#20 ← phi( play_move_down::@21/(dword) score_bcd#12 play_move_down::@6/(dword) score_bcd#14 ) - [246] (word) lines_bcd#20 ← phi( play_move_down::@21/(word) lines_bcd#13 play_move_down::@6/(word) lines_bcd#15 ) - [246] (byte) current_ypos#29 ← phi( play_move_down::@21/(byte) current_ypos#18 play_move_down::@6/(byte) current_ypos#0 ) + [258] (byte) game_over#26 ← phi( play_move_down::@21/(byte) game_over#15 play_move_down::@6/(byte) game_over#19 ) + [258] (byte) current_xpos#41 ← phi( play_move_down::@21/(byte) current_xpos#28 play_move_down::@6/(byte) current_xpos#115 ) + [258] (byte*) current_piece_gfx#33 ← phi( play_move_down::@21/(byte*) current_piece_gfx#21 play_move_down::@6/(byte*) current_piece_gfx#105 ) + [258] (byte) current_orientation#36 ← phi( play_move_down::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_orientation#12 ) + [258] (byte) current_piece_char#27 ← phi( play_move_down::@21/(byte) current_piece_char#16 play_move_down::@6/(byte) current_piece_char#19 ) + [258] (byte*) current_piece#27 ← phi( play_move_down::@21/(byte*~) current_piece#94 play_move_down::@6/(byte*) current_piece#20 ) + [258] (byte) level_bcd#32 ← phi( play_move_down::@21/(byte) level_bcd#19 play_move_down::@6/(byte) level_bcd#11 ) + [258] (byte) current_movedown_slow#38 ← phi( play_move_down::@21/(byte) current_movedown_slow#23 play_move_down::@6/(byte) current_movedown_slow#14 ) + [258] (byte) level#31 ← phi( play_move_down::@21/(byte) level#18 play_move_down::@6/(byte) level#10 ) + [258] (dword) score_bcd#27 ← phi( play_move_down::@21/(dword) score_bcd#16 play_move_down::@6/(dword) score_bcd#18 ) + [258] (word) lines_bcd#27 ← phi( play_move_down::@21/(word) lines_bcd#17 play_move_down::@6/(word) lines_bcd#19 ) + [258] (byte) current_ypos#36 ← phi( play_move_down::@21/(byte) current_ypos#22 play_move_down::@6/(byte) current_ypos#2 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@4 play_move_down::@7 - [247] (byte) current_piece_char#1 ← phi( play_move_down::@4/(byte) current_piece_char#15 play_move_down::@7/(byte) current_piece_char#20 ) - [247] (byte) current_xpos#1 ← phi( play_move_down::@4/(byte) current_xpos#10 play_move_down::@7/(byte) current_xpos#33 ) - [247] (byte*) current_piece_gfx#1 ← phi( play_move_down::@4/(byte*) current_piece_gfx#20 play_move_down::@7/(byte*) current_piece_gfx#26 ) - [247] (byte) current_orientation#14 ← phi( play_move_down::@4/(byte) current_orientation#10 play_move_down::@7/(byte) current_orientation#29 ) - [247] (byte*) current_piece#10 ← phi( play_move_down::@4/(byte*) current_piece#16 play_move_down::@7/(byte*) current_piece#20 ) - [247] (byte) level_bcd#13 ← phi( play_move_down::@4/(byte) level_bcd#20 play_move_down::@7/(byte) level_bcd#25 ) - [247] (byte) current_movedown_slow#17 ← phi( play_move_down::@4/(byte) current_movedown_slow#12 play_move_down::@7/(byte) current_movedown_slow#31 ) - [247] (byte) level#12 ← phi( play_move_down::@4/(byte) level#19 play_move_down::@7/(byte) level#24 ) - [247] (dword) score_bcd#10 ← phi( play_move_down::@4/(dword) score_bcd#14 play_move_down::@7/(dword) score_bcd#20 ) - [247] (word) lines_bcd#11 ← phi( play_move_down::@4/(word) lines_bcd#15 play_move_down::@7/(word) lines_bcd#20 ) - [247] (byte) current_ypos#13 ← phi( play_move_down::@4/(byte) current_ypos#21 play_move_down::@7/(byte) current_ypos#29 ) - [247] (byte) current_movedown_counter#10 ← phi( play_move_down::@4/(byte) current_movedown_counter#1 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [247] (byte) play_move_down::return#2 ← phi( play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [248] return + [259] (byte) game_over#14 ← phi( play_move_down::@4/(byte) game_over#19 play_move_down::@7/(byte) game_over#26 ) + [259] (byte) current_xpos#20 ← phi( play_move_down::@4/(byte) current_xpos#115 play_move_down::@7/(byte) current_xpos#41 ) + [259] (byte*) current_piece_gfx#18 ← phi( play_move_down::@4/(byte*) current_piece_gfx#105 play_move_down::@7/(byte*) current_piece_gfx#33 ) + [259] (byte) current_orientation#19 ← phi( play_move_down::@4/(byte) current_orientation#12 play_move_down::@7/(byte) current_orientation#36 ) + [259] (byte) current_piece_char#14 ← phi( play_move_down::@4/(byte) current_piece_char#19 play_move_down::@7/(byte) current_piece_char#27 ) + [259] (byte*) current_piece#14 ← phi( play_move_down::@4/(byte*) current_piece#20 play_move_down::@7/(byte*) current_piece#27 ) + [259] (byte) level_bcd#17 ← phi( play_move_down::@4/(byte) level_bcd#11 play_move_down::@7/(byte) level_bcd#32 ) + [259] (byte) current_movedown_slow#21 ← phi( play_move_down::@4/(byte) current_movedown_slow#14 play_move_down::@7/(byte) current_movedown_slow#38 ) + [259] (byte) level#16 ← phi( play_move_down::@4/(byte) level#10 play_move_down::@7/(byte) level#31 ) + [259] (dword) score_bcd#14 ← phi( play_move_down::@4/(dword) score_bcd#18 play_move_down::@7/(dword) score_bcd#27 ) + [259] (word) lines_bcd#15 ← phi( play_move_down::@4/(word) lines_bcd#19 play_move_down::@7/(word) lines_bcd#27 ) + [259] (byte) current_ypos#17 ← phi( play_move_down::@4/(byte) current_ypos#25 play_move_down::@7/(byte) current_ypos#36 ) + [259] (byte) current_movedown_counter#14 ← phi( play_move_down::@4/(byte) current_movedown_counter#12 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [259] (byte) play_move_down::return#3 ← phi( play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [260] return to:@return play_move_down::@6: scope:[play_move_down] from play_move_down::@18 - [249] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 + [261] (byte) current_ypos#2 ← ++ (byte) current_ypos#25 to:play_move_down::@7 -play_spawn_current: scope:[play_spawn_current] from main::@19 play_move_down::@21 - [250] phi() +play_spawn_current: scope:[play_spawn_current] from main::@29 play_move_down::@21 + [262] (byte) game_over#69 ← phi( main::@29/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@21/(byte) game_over#19 ) to:play_spawn_current::@1 -play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current play_spawn_current::@7 - [251] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 7 play_spawn_current::@7/(byte) play_spawn_current::piece_idx#1 ) - [252] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 +play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current play_spawn_current::@9 + [263] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 7 play_spawn_current::@9/(byte) play_spawn_current::piece_idx#1 ) + [264] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 to:play_spawn_current::@3 play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::@1 - [253] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [254] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 - [255] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) - [256] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) - [257] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) + [265] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [266] (byte) current_piece_char#16 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) + [267] (byte*) current_piece_gfx#21 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 + [268] (byte) current_xpos#28 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) + [269] (byte) current_ypos#22 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) + [270] (byte) play_collision::xpos#4 ← (byte) current_xpos#28 + [271] (byte) play_collision::ypos#4 ← (byte) current_ypos#22 + [272] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + [273] call play_collision + [274] (byte) play_collision::return#10 ← (byte) play_collision::return#15 + to:play_spawn_current::@10 +play_spawn_current::@10: scope:[play_spawn_current] from play_spawn_current::@3 + [275] (byte~) play_spawn_current::$5 ← (byte) play_collision::return#10 + [276] if((byte~) play_spawn_current::$5!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@11 to:play_spawn_current::@return -play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@3 - [258] return +play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@10 play_spawn_current::@11 + [277] (byte) game_over#15 ← phi( play_spawn_current::@11/(byte) game_over#69 play_spawn_current::@10/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [278] return to:@return +play_spawn_current::@11: scope:[play_spawn_current] from play_spawn_current::@10 + [279] phi() + to:play_spawn_current::@return play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 - [259] phi() - [260] call sid_rnd - [261] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 - to:play_spawn_current::@7 -play_spawn_current::@7: scope:[play_spawn_current] from play_spawn_current::@2 - [262] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 - [263] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [280] phi() + [281] call sid_rnd + [282] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + to:play_spawn_current::@9 +play_spawn_current::@9: scope:[play_spawn_current] from play_spawn_current::@2 + [283] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + [284] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 to:play_spawn_current::@1 sid_rnd: scope:[sid_rnd] from play_spawn_current::@2 - [264] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) + [285] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) to:sid_rnd::@return sid_rnd::@return: scope:[sid_rnd] from sid_rnd - [265] return + [286] return to:@return play_update_score: scope:[play_update_score] from play_move_down::@20 - [266] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return + [287] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return to:play_update_score::@3 play_update_score::@3: scope:[play_update_score] from play_update_score - [267] (byte~) play_update_score::$2 ← < (word) lines_bcd#15 - [268] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 - [269] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 - [270] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) + [288] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 + [289] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 + [290] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 + [291] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) asm { sed } - [272] (word) lines_bcd#23 ← (word) lines_bcd#15 + (byte) play_update_score::removed#0 - [273] (dword) score_bcd#23 ← (dword) score_bcd#14 + (dword) play_update_score::add_bcd#0 + [293] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 + [294] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 asm { cld } - [275] (byte~) play_update_score::$5 ← < (word) lines_bcd#23 - [276] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 - [277] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return + [296] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 + [297] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 + [298] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return to:play_update_score::@4 play_update_score::@4: scope:[play_update_score] from play_update_score::@3 - [278] phi() - [279] call play_increase_level + [299] phi() + [300] call play_increase_level to:play_update_score::@return play_update_score::@return: scope:[play_update_score] from play_update_score play_update_score::@3 play_update_score::@4 - [280] (byte) level_bcd#15 ← phi( play_update_score/(byte) level_bcd#20 play_update_score::@3/(byte) level_bcd#20 play_update_score::@4/(byte) level_bcd#55 ) - [280] (byte) current_movedown_slow#19 ← phi( play_update_score/(byte) current_movedown_slow#12 play_update_score::@3/(byte) current_movedown_slow#12 play_update_score::@4/(byte) current_movedown_slow#60 ) - [280] (byte) level#14 ← phi( play_update_score/(byte) level#19 play_update_score::@3/(byte) level#19 play_update_score::@4/(byte) level#16 ) - [280] (dword) score_bcd#12 ← phi( play_update_score/(dword) score_bcd#14 play_update_score::@3/(dword) score_bcd#23 play_update_score::@4/(dword) score_bcd#23 ) - [280] (word) lines_bcd#13 ← phi( play_update_score/(word) lines_bcd#15 play_update_score::@3/(word) lines_bcd#23 play_update_score::@4/(word) lines_bcd#23 ) - [281] return + [301] (byte) level_bcd#19 ← phi( play_update_score/(byte) level_bcd#11 play_update_score::@3/(byte) level_bcd#11 play_update_score::@4/(byte) level_bcd#63 ) + [301] (byte) current_movedown_slow#23 ← phi( play_update_score/(byte) current_movedown_slow#14 play_update_score::@3/(byte) current_movedown_slow#14 play_update_score::@4/(byte) current_movedown_slow#68 ) + [301] (byte) level#18 ← phi( play_update_score/(byte) level#10 play_update_score::@3/(byte) level#10 play_update_score::@4/(byte) level#20 ) + [301] (dword) score_bcd#16 ← phi( play_update_score/(dword) score_bcd#18 play_update_score::@3/(dword) score_bcd#30 play_update_score::@4/(dword) score_bcd#30 ) + [301] (word) lines_bcd#17 ← phi( play_update_score/(word) lines_bcd#19 play_update_score::@3/(word) lines_bcd#30 play_update_score::@4/(word) lines_bcd#30 ) + [302] return to:@return play_increase_level: scope:[play_increase_level] from play_update_score::@4 - [282] (byte) level#16 ← ++ (byte) level#19 - [283] if((byte) level#16>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 + [303] (byte) level#20 ← ++ (byte) level#10 + [304] if((byte) level#20>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 to:play_increase_level::@5 play_increase_level::@5: scope:[play_increase_level] from play_increase_level - [284] (byte) current_movedown_slow#8 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#16) + [305] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#20) to:play_increase_level::@2 play_increase_level::@2: scope:[play_increase_level] from play_increase_level play_increase_level::@5 - [285] (byte) current_movedown_slow#60 ← phi( play_increase_level/(byte/signed byte/word/signed word/dword/signed dword) 1 play_increase_level::@5/(byte) current_movedown_slow#8 ) - [286] (byte) level_bcd#17 ← ++ (byte) level_bcd#20 - [287] (byte~) play_increase_level::$1 ← (byte) level_bcd#17 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [288] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 + [306] (byte) current_movedown_slow#68 ← phi( play_increase_level/(byte/signed byte/word/signed word/dword/signed dword) 1 play_increase_level::@5/(byte) current_movedown_slow#10 ) + [307] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 + [308] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [309] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 to:play_increase_level::@7 play_increase_level::@7: scope:[play_increase_level] from play_increase_level::@2 - [289] (byte) level_bcd#6 ← (byte) level_bcd#17 + (byte/signed byte/word/signed word/dword/signed dword) 6 + [310] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 to:play_increase_level::@3 play_increase_level::@3: scope:[play_increase_level] from play_increase_level::@2 play_increase_level::@7 - [290] (byte) level_bcd#55 ← phi( play_increase_level::@2/(byte) level_bcd#17 play_increase_level::@7/(byte) level_bcd#6 ) + [311] (byte) level_bcd#63 ← phi( play_increase_level::@2/(byte) level_bcd#21 play_increase_level::@7/(byte) level_bcd#8 ) asm { sed } to:play_increase_level::@4 play_increase_level::@4: scope:[play_increase_level] from play_increase_level::@3 play_increase_level::@4 - [292] (byte) play_increase_level::b#2 ← phi( play_increase_level::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 play_increase_level::@4/(byte) play_increase_level::b#1 ) - [293] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 - [294] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) - [295] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 - [296] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 + [313] (byte) play_increase_level::b#2 ← phi( play_increase_level::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 play_increase_level::@4/(byte) play_increase_level::b#1 ) + [314] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 + [315] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) + [316] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 + [317] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 to:play_increase_level::@8 play_increase_level::@8: scope:[play_increase_level] from play_increase_level::@4 asm { cld } to:play_increase_level::@return play_increase_level::@return: scope:[play_increase_level] from play_increase_level::@8 - [298] return + [319] return to:@return play_remove_lines: scope:[play_remove_lines] from play_move_down::@19 - [299] phi() + [320] phi() to:play_remove_lines::@1 play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@4 - [300] (byte) play_remove_lines::removed#11 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@4/(byte) play_remove_lines::removed#7 ) - [300] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@4/(byte) play_remove_lines::y#1 ) - [300] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::w#11 ) - [300] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::r#1 ) + [321] (byte) play_remove_lines::removed#11 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@4/(byte) play_remove_lines::removed#7 ) + [321] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@4/(byte) play_remove_lines::y#1 ) + [321] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::w#11 ) + [321] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::r#1 ) to:play_remove_lines::@2 play_remove_lines::@2: scope:[play_remove_lines] from play_remove_lines::@1 play_remove_lines::@3 - [301] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 ) - [301] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) - [301] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) - [301] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 ) - [302] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) - [303] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 - [304] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 + [322] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 ) + [322] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) + [322] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) + [322] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 ) + [323] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) + [324] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 + [325] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 to:play_remove_lines::@3 play_remove_lines::@3: scope:[play_remove_lines] from play_remove_lines::@18 play_remove_lines::@2 - [305] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@18/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [306] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 - [307] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 - [308] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 - [309] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 + [326] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@18/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [327] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 + [328] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 + [329] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 + [330] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 to:play_remove_lines::@9 play_remove_lines::@9: scope:[play_remove_lines] from play_remove_lines::@3 - [310] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 + [331] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 to:play_remove_lines::@10 play_remove_lines::@10: scope:[play_remove_lines] from play_remove_lines::@9 - [311] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 - [312] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 + [332] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 + [333] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 to:play_remove_lines::@4 play_remove_lines::@4: scope:[play_remove_lines] from play_remove_lines::@10 play_remove_lines::@9 - [313] (byte) play_remove_lines::removed#7 ← phi( play_remove_lines::@10/(byte) play_remove_lines::removed#1 play_remove_lines::@9/(byte) play_remove_lines::removed#11 ) - [313] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@10/(byte) play_remove_lines::w#2 play_remove_lines::@9/(byte) play_remove_lines::w#1 ) - [314] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 - [315] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 + [334] (byte) play_remove_lines::removed#7 ← phi( play_remove_lines::@10/(byte) play_remove_lines::removed#1 play_remove_lines::@9/(byte) play_remove_lines::removed#11 ) + [334] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@10/(byte) play_remove_lines::w#2 play_remove_lines::@9/(byte) play_remove_lines::w#1 ) + [335] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 + [336] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 to:play_remove_lines::@5 play_remove_lines::@5: scope:[play_remove_lines] from play_remove_lines::@4 play_remove_lines::@6 - [316] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#11 play_remove_lines::@6/(byte) play_remove_lines::w#3 ) - [317] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 + [337] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#11 play_remove_lines::@6/(byte) play_remove_lines::w#3 ) + [338] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 to:play_remove_lines::@return play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@5 - [318] return + [339] return to:@return play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@5 - [319] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [320] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 + [340] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [341] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 to:play_remove_lines::@5 play_remove_lines::@18: scope:[play_remove_lines] from play_remove_lines::@2 - [321] phi() + [342] phi() to:play_remove_lines::@3 play_lock_current: scope:[play_lock_current] from play_move_down::@13 - [322] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [343] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#25 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_lock_current::@1 play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@7 - [323] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte) play_lock_current::l#1 ) - [323] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte~) play_lock_current::i#7 ) - [323] (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@7/(byte) play_lock_current::ypos2#1 ) - [324] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) - [325] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 + [344] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte) play_lock_current::l#1 ) + [344] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte~) play_lock_current::i#7 ) + [344] (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@7/(byte) play_lock_current::ypos2#1 ) + [345] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) + [346] (byte) play_lock_current::col#0 ← (byte) current_xpos#115 to:play_lock_current::@2 play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@8 - [326] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@8/(byte) play_lock_current::c#1 ) - [326] (byte) play_lock_current::col#2 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@8/(byte) play_lock_current::col#1 ) - [326] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@8/(byte~) play_lock_current::i#9 ) - [327] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 - [328] if(*((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 + [347] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@8/(byte) play_lock_current::c#1 ) + [347] (byte) play_lock_current::col#2 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@8/(byte) play_lock_current::col#1 ) + [347] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@8/(byte~) play_lock_current::i#9 ) + [348] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 + [349] if(*((byte*) current_piece_gfx#105 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 to:play_lock_current::@4 play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 - [329] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 + [350] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#19 to:play_lock_current::@3 play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 - [330] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 - [331] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 - [332] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 + [351] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 + [352] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 + [353] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 to:play_lock_current::@5 play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 - [333] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [334] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 - [335] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 + [354] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [355] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 + [356] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 to:play_lock_current::@return play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5 - [336] return + [357] return to:@return play_lock_current::@7: scope:[play_lock_current] from play_lock_current::@5 - [337] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 + [358] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 to:play_lock_current::@1 play_lock_current::@8: scope:[play_lock_current] from play_lock_current::@3 - [338] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 + [359] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 to:play_lock_current::@2 keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@10 keyboard_event_scan::@11 keyboard_event_scan::@20 keyboard_event_scan::@9 play_move_down::@1 - [339] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) - [340] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [341] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [342] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [343] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) + [360] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) + [361] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [362] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [363] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [364] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) to:keyboard_event_pressed::@return keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed - [344] return + [365] return to:@return -keyboard_event_get: scope:[keyboard_event_get] from main::@24 - [345] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return +keyboard_event_get: scope:[keyboard_event_get] from main::@34 + [366] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return to:keyboard_event_get::@3 keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get - [346] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [347] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [367] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [368] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) to:keyboard_event_get::@return keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@3 - [348] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) - [348] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) - [349] return + [369] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) + [369] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) + [370] return to:@return -keyboard_event_scan: scope:[keyboard_event_scan] from main::@23 - [350] phi() +keyboard_event_scan: scope:[keyboard_event_scan] from main::@33 + [371] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - [351] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) - [351] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) - [351] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) - [352] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [353] call keyboard_matrix_read - [354] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [372] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) + [372] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) + [372] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) + [373] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [374] call keyboard_matrix_read + [375] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_event_scan::@25 keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - [355] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [356] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 + [376] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [377] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 to:keyboard_event_scan::@13 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - [357] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 + [378] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@19 - [358] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [358] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) - [359] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [360] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 + [379] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [379] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) + [380] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [381] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 to:keyboard_event_scan::@20 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - [361] phi() - [362] call keyboard_event_pressed - [363] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + [382] phi() + [383] call keyboard_event_pressed + [384] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@26 keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - [364] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - [365] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 + [385] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + [386] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 to:keyboard_event_scan::@21 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - [366] phi() + [387] phi() to:keyboard_event_scan::@9 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - [367] (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@21/(byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 keyboard_event_scan::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [368] call keyboard_event_pressed - [369] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + [388] (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@21/(byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 keyboard_event_scan::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [389] call keyboard_event_pressed + [390] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@27 keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - [370] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - [371] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 + [391] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + [392] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 to:keyboard_event_scan::@22 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - [372] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 + [393] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - [373] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 ) - [374] call keyboard_event_pressed - [375] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + [394] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 ) + [395] call keyboard_event_pressed + [396] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@28 keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - [376] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - [377] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 + [397] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + [398] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 to:keyboard_event_scan::@23 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 - [378] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 + [399] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 to:keyboard_event_scan::@11 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 - [379] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 ) - [380] call keyboard_event_pressed - [381] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [400] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 ) + [401] call keyboard_event_pressed + [402] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@29 keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan::@11 - [382] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 - [383] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return + [403] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + [404] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@24 keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29 - [384] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 + [405] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29 - [385] return + [406] return to:@return keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@25 keyboard_event_scan::@5 - [386] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) - [386] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) - [386] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) - [387] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) - [388] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [389] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 + [407] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + [407] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) + [407] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) + [408] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) + [409] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [410] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 to:keyboard_event_scan::@15 keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@4 - [390] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 + [411] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 to:keyboard_event_scan::@16 keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15 - [391] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [392] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 + [412] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [413] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 to:keyboard_event_scan::@17 keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [393] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [394] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [414] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [415] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 - [395] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) - [396] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 - [397] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [398] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 + [416] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) + [417] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 + [418] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [419] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 to:keyboard_event_scan::@19 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@5 - [399] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [420] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 to:keyboard_event_scan::@3 keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [400] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 - [401] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 - [402] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [421] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 + [422] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 + [423] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1 - [403] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [404] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [424] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [425] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) to:keyboard_matrix_read::@return keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read - [405] return + [426] return to:@return render_show: scope:[render_show] from main::@6 - [406] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 + [427] if((byte) render_screen_show#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 to:render_show::toD0182 render_show::toD0182: scope:[render_show] from render_show - [407] phi() + [428] phi() to:render_show::@2 render_show::@2: scope:[render_show] from render_show::toD0181 render_show::toD0182 - [408] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) - [409] *((const byte*) D018#0) ← (byte) render_show::d018val#3 - [410] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 + [429] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 ) + [430] *((const byte*) D018#0) ← (byte) render_show::d018val#3 + [431] (byte) render_screen_showing#1 ← (byte) render_screen_show#17 to:render_show::@return render_show::@return: scope:[render_show] from render_show::@2 - [411] return + [432] return to:@return render_show::toD0181: scope:[render_show] from render_show - [412] phi() + [433] phi() to:render_show::@2 -play_init: scope:[play_init] from main::@18 - [413] phi() +play_init: scope:[play_init] from main::@28 + [434] phi() to:play_init::@1 play_init::@1: scope:[play_init] from play_init play_init::@1 - [414] (byte) play_init::idx#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::idx#1 ) - [414] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 ) - [414] (byte) play_init::j#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::j#1 ) - [415] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [416] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 - [417] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 - [418] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 - [419] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 - [420] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 - [421] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 + [435] (byte) play_init::idx#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::idx#1 ) + [435] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 ) + [435] (byte) play_init::j#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::j#1 ) + [436] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [437] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 + [438] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 + [439] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 + [440] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 + [441] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 + [442] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 to:play_init::@3 play_init::@3: scope:[play_init] from play_init::@1 - [422] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 - [423] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) + [443] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 + [444] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) to:play_init::@2 play_init::@2: scope:[play_init] from play_init::@2 play_init::@3 - [424] (byte) play_init::b#2 ← phi( play_init::@2/(byte) play_init::b#1 play_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [425] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 - [426] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) - [427] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 - [428] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 + [445] (byte) play_init::b#2 ← phi( play_init::@2/(byte) play_init::b#1 play_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [446] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 + [447] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) + [448] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 + [449] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 to:play_init::@return play_init::@return: scope:[play_init] from play_init::@2 - [429] return + [450] return to:@return -sprites_irq_init: scope:[sprites_irq_init] from main::@17 +sprites_irq_init: scope:[sprites_irq_init] from main::@27 asm { sei } - [431] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [452] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } - [433] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [434] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [435] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 - [436] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 - [437] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 - [438] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [439] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() + [454] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [455] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [456] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [457] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 + [458] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [459] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [460] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() asm { cli } to:sprites_irq_init::@return sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init - [441] return + [462] return to:@return -sprites_init: scope:[sprites_init] from main::@16 - [442] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 - [443] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [444] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) - [445] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) +sprites_init: scope:[sprites_init] from main::@26 + [463] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 + [464] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [465] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [466] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) to:sprites_init::@1 sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1 - [446] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) - [446] (byte) sprites_init::s#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 0 sprites_init::@1/(byte) sprites_init::s#1 ) - [447] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [448] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 - [449] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 - [450] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 - [451] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 - [452] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 + [467] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) + [467] (byte) sprites_init::s#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 0 sprites_init::@1/(byte) sprites_init::s#1 ) + [468] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [469] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [470] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [471] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + [472] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [473] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 to:sprites_init::@return sprites_init::@return: scope:[sprites_init] from sprites_init::@1 - [453] return + [474] return to:@return -render_init: scope:[render_init] from main::@15 - [454] phi() +render_init: scope:[render_init] from main::@25 + [475] phi() to:render_init::vicSelectGfxBank1 render_init::vicSelectGfxBank1: scope:[render_init] from render_init - [455] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + [476] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 to:render_init::vicSelectGfxBank1_toDd001 render_init::vicSelectGfxBank1_toDd001: scope:[render_init] from render_init::vicSelectGfxBank1 - [456] phi() + [477] phi() to:render_init::vicSelectGfxBank1_@1 render_init::vicSelectGfxBank1_@1: scope:[render_init] from render_init::vicSelectGfxBank1_toDd001 - [457] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 + [478] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 to:render_init::@3 render_init::@3: scope:[render_init] from render_init::vicSelectGfxBank1_@1 - [458] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 - [459] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 - [460] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 - [461] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 - [462] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 - [463] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 - [464] call render_screen_original + [479] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 + [480] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 + [481] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 + [482] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 + [483] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 + [484] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 + [485] call render_screen_original to:render_init::@4 render_init::@4: scope:[render_init] from render_init::@3 - [465] phi() - [466] call render_screen_original + [486] phi() + [487] call render_screen_original to:render_init::@1 render_init::@1: scope:[render_init] from render_init::@1 render_init::@4 - [467] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@4/(const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 ) - [467] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@4/(const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 ) - [467] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [468] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [469] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 - [470] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [471] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 - [472] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [473] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [474] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 - [475] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 + [488] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@4/(const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 ) + [488] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@4/(const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 ) + [488] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [489] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [490] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 + [491] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [492] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 + [493] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [494] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [495] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 + [496] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 to:render_init::@return render_init::@return: scope:[render_init] from render_init::@1 - [476] return + [497] return to:@return render_screen_original: scope:[render_screen_original] from render_init::@3 render_init::@4 - [477] (byte*) render_screen_original::screen#9 ← phi( render_init::@3/(const byte*) PLAYFIELD_SCREEN_1#0 render_init::@4/(const byte*) PLAYFIELD_SCREEN_2#0 ) + [498] (byte*) render_screen_original::screen#9 ← phi( render_init::@3/(const byte*) PLAYFIELD_SCREEN_1#0 render_init::@4/(const byte*) PLAYFIELD_SCREEN_2#0 ) to:render_screen_original::@1 render_screen_original::@1: scope:[render_screen_original] from render_screen_original render_screen_original::@7 - [478] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@7/(byte) render_screen_original::y#1 ) - [478] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@7/(byte*) render_screen_original::ocols#1 ) - [478] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@7/(byte*) render_screen_original::oscr#1 ) - [478] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@7/(byte*) render_screen_original::cols#3 ) - [478] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@7/(byte*) render_screen_original::screen#10 ) + [499] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@7/(byte) render_screen_original::y#1 ) + [499] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@7/(byte*) render_screen_original::ocols#1 ) + [499] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 render_screen_original::@7/(byte*) render_screen_original::oscr#1 ) + [499] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@7/(byte*) render_screen_original::cols#3 ) + [499] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@7/(byte*) render_screen_original::screen#10 ) to:render_screen_original::@2 render_screen_original::@2: scope:[render_screen_original] from render_screen_original::@1 render_screen_original::@2 - [479] (byte) render_screen_original::x#4 ← phi( render_screen_original::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@2/(byte) render_screen_original::x#1 ) - [479] (byte*) render_screen_original::cols#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::cols#7 render_screen_original::@2/(byte*) render_screen_original::cols#1 ) - [479] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#8 render_screen_original::@2/(byte*) render_screen_original::screen#2 ) - [480] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 - [481] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 - [482] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 - [483] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 - [484] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 - [485] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 + [500] (byte) render_screen_original::x#4 ← phi( render_screen_original::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_screen_original::@2/(byte) render_screen_original::x#1 ) + [500] (byte*) render_screen_original::cols#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::cols#7 render_screen_original::@2/(byte*) render_screen_original::cols#1 ) + [500] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#8 render_screen_original::@2/(byte*) render_screen_original::screen#2 ) + [501] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 + [502] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 + [503] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 + [504] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 + [505] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 + [506] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 to:render_screen_original::@3 render_screen_original::@3: scope:[render_screen_original] from render_screen_original::@2 render_screen_original::@3 - [486] (byte) render_screen_original::x#5 ← phi( render_screen_original::@2/(byte) render_screen_original::x#1 render_screen_original::@3/(byte) render_screen_original::x#2 ) - [486] (byte*) render_screen_original::cols#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::cols#1 render_screen_original::@3/(byte*) render_screen_original::cols#2 ) - [486] (byte*) render_screen_original::ocols#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::ocols#4 render_screen_original::@3/(byte*) render_screen_original::ocols#1 ) - [486] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#2 render_screen_original::@3/(byte*) render_screen_original::screen#3 ) - [486] (byte*) render_screen_original::oscr#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::oscr#4 render_screen_original::@3/(byte*) render_screen_original::oscr#1 ) - [487] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) - [488] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 - [489] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 - [490] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) - [491] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 - [492] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 - [493] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 - [494] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 + [507] (byte) render_screen_original::x#5 ← phi( render_screen_original::@2/(byte) render_screen_original::x#1 render_screen_original::@3/(byte) render_screen_original::x#2 ) + [507] (byte*) render_screen_original::cols#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::cols#1 render_screen_original::@3/(byte*) render_screen_original::cols#2 ) + [507] (byte*) render_screen_original::ocols#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::ocols#4 render_screen_original::@3/(byte*) render_screen_original::ocols#1 ) + [507] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#2 render_screen_original::@3/(byte*) render_screen_original::screen#3 ) + [507] (byte*) render_screen_original::oscr#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::oscr#4 render_screen_original::@3/(byte*) render_screen_original::oscr#1 ) + [508] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) + [509] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 + [510] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 + [511] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) + [512] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 + [513] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 + [514] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 + [515] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 to:render_screen_original::@4 render_screen_original::@4: scope:[render_screen_original] from render_screen_original::@3 render_screen_original::@4 - [495] (byte) render_screen_original::x#6 ← phi( render_screen_original::@3/(byte) render_screen_original::x#2 render_screen_original::@4/(byte) render_screen_original::x#3 ) - [495] (byte*) render_screen_original::cols#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::cols#2 render_screen_original::@4/(byte*) render_screen_original::cols#3 ) - [495] (byte*) render_screen_original::screen#7 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#3 render_screen_original::@4/(byte*) render_screen_original::screen#10 ) - [496] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 - [497] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 - [498] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 - [499] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 - [500] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 - [501] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 + [516] (byte) render_screen_original::x#6 ← phi( render_screen_original::@3/(byte) render_screen_original::x#2 render_screen_original::@4/(byte) render_screen_original::x#3 ) + [516] (byte*) render_screen_original::cols#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::cols#2 render_screen_original::@4/(byte*) render_screen_original::cols#3 ) + [516] (byte*) render_screen_original::screen#7 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#3 render_screen_original::@4/(byte*) render_screen_original::screen#10 ) + [517] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 + [518] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 + [519] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 + [520] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 + [521] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 + [522] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 to:render_screen_original::@7 render_screen_original::@7: scope:[render_screen_original] from render_screen_original::@4 - [502] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 - [503] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 + [523] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 + [524] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 to:render_screen_original::@return render_screen_original::@return: scope:[render_screen_original] from render_screen_original::@7 - [504] return + [525] return to:@return sid_rnd_init: scope:[sid_rnd_init] from main - [505] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 - [506] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 + [526] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 + [527] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 to:sid_rnd_init::@return sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init - [507] return + [528] return to:@return sprites_irq: scope:[sprites_irq] from asm { cld } - [509] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 - [510] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 - [511] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 - [512] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 - [513] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + [530] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [531] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 + [532] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 + [533] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 + [534] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 + [535] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [536] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 to:sprites_irq::@1 sprites_irq::@1: scope:[sprites_irq] from sprites_irq sprites_irq::@1 - [514] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 - to:sprites_irq::@7 -sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@1 - [515] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [516] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 + [537] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 to:sprites_irq::@8 -sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@7 - [517] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 - [518] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 - [519] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 - [520] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 - [521] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 - [522] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 +sprites_irq::@8: scope:[sprites_irq] from sprites_irq::@1 + [538] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [539] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 + to:sprites_irq::@9 +sprites_irq::@9: scope:[sprites_irq] from sprites_irq::@8 + [540] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 + [541] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 + [542] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 + [543] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 + [544] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + [545] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 to:sprites_irq::@3 -sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@8 - [523] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [524] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 - to:sprites_irq::@10 -sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@3 - [525] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [526] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 - [527] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 - to:sprites_irq::@5 -sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@10 sprites_irq::@13 - [528] (byte) irq_raster_next#13 ← phi( sprites_irq::@10/(byte) irq_raster_next#2 sprites_irq::@13/(byte) irq_raster_next#1 ) - [529] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 - [530] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [531] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 +sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 sprites_irq::@9 + [546] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [547] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 + to:sprites_irq::@11 +sprites_irq::@11: scope:[sprites_irq] from sprites_irq::@3 + [548] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 to:sprites_irq::@12 -sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@5 - [532] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 - to:sprites_irq::@6 -sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@5 - [533] (byte) sprites_irq::raster_next#2 ← phi( sprites_irq::@12/(byte) sprites_irq::raster_next#1 sprites_irq::@5/(byte) sprites_irq::raster_next#0 ) - [534] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 - [535] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 +sprites_irq::@12: scope:[sprites_irq] from sprites_irq::@11 + [549] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 + [550] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [551] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:sprites_irq::@7 +sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 + [552] (byte) irq_raster_next#4 ← phi( sprites_irq::@12/(byte) irq_raster_next#3 sprites_irq::@15/(byte) irq_raster_next#1 sprites_irq::@5/(byte) irq_raster_next#2 ) + [553] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 + [554] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:sprites_irq::@return -sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6 - [536] return +sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@7 + [555] return to:@return +sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@11 + [556] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [557] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 + [558] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [559] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + to:sprites_irq::@7 sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@3 - [537] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [538] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 - [539] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + [560] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [561] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 to:sprites_irq::toSpritePtr2 sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@4 - [540] phi() - to:sprites_irq::@13 -sprites_irq::@13: scope:[sprites_irq] from sprites_irq::toSpritePtr2 - [541] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 - to:sprites_irq::@5 -sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@7 - [542] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 - [543] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 - [544] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 - [545] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 - [546] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 - [547] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 + [562] phi() + to:sprites_irq::@15 +sprites_irq::@15: scope:[sprites_irq] from sprites_irq::toSpritePtr2 + [563] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 + to:sprites_irq::@7 +sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@8 + [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 + [565] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 + [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 + [567] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 + [568] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + [569] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 to:sprites_irq::@3 @@ -9892,6 +10815,7 @@ VARIABLE REGISTER WEIGHTS (byte*) SPRITES_ENABLE (byte*) SPRITES_EXPAND_X (byte*) SPRITES_EXPAND_Y +(byte) SPRITES_FIRST_YPOS (byte*) SPRITES_MC (byte*) SPRITES_MC1 (byte*) SPRITES_MC2 @@ -9913,96 +10837,109 @@ VARIABLE REGISTER WEIGHTS (byte) WHITE (byte) YELLOW (byte) current_movedown_counter -(byte) current_movedown_counter#1 0.5333333333333333 -(byte) current_movedown_counter#10 3.931034482758621 -(byte) current_movedown_counter#12 10.363636363636363 +(byte) current_movedown_counter#12 0.5333333333333333 +(byte) current_movedown_counter#14 0.35135135135135137 +(byte) current_movedown_counter#16 0.9285714285714286 (byte) current_movedown_fast (byte) current_movedown_slow (byte) current_movedown_slow#1 0.2222222222222222 -(byte) current_movedown_slow#12 2.296296296296297 -(byte) current_movedown_slow#17 4.0 -(byte) current_movedown_slow#19 1.3333333333333333 -(byte) current_movedown_slow#31 6.0 -(byte) current_movedown_slow#60 0.26666666666666666 -(byte) current_movedown_slow#8 4.0 +(byte) current_movedown_slow#10 4.0 +(byte) current_movedown_slow#14 0.40350877192982454 +(byte) current_movedown_slow#21 0.40540540540540543 +(byte) current_movedown_slow#23 1.3333333333333333 +(byte) current_movedown_slow#38 6.0 +(byte) current_movedown_slow#68 0.26666666666666666 (byte) current_orientation -(byte) current_orientation#10 3.371428571428571 -(byte) current_orientation#14 0.32653061224489793 -(byte) current_orientation#19 6.210526315789475 -(byte) current_orientation#29 4.0 -(byte) current_orientation#4 3.0 +(byte) current_orientation#12 0.4473684210526316 +(byte) current_orientation#16 0.75 +(byte) current_orientation#19 0.36 +(byte) current_orientation#24 1.3333333333333333 +(byte) current_orientation#36 4.0 +(byte) current_orientation#7 3.0 (byte*) current_piece -(byte*) current_piece#10 1.771428571428571 -(byte*) current_piece#12 10.0 -(byte*) current_piece#16 3.428571428571428 -(byte*) current_piece#20 6.0 -(byte*~) current_piece#73 4.0 -(byte*~) current_piece#76 4.0 -(byte*~) current_piece#77 4.0 -(byte*~) current_piece#78 4.0 -(byte*~) current_piece#79 4.0 -(byte*~) current_piece#80 4.0 +(byte*) current_piece#14 0.2948717948717949 +(byte*) current_piece#16 12.0 +(byte*) current_piece#20 0.5 +(byte*) current_piece#27 6.0 +(byte*~) current_piece#88 4.0 +(byte*~) current_piece#89 4.0 +(byte*~) current_piece#90 4.0 +(byte*~) current_piece#91 4.0 +(byte*~) current_piece#92 4.0 +(byte*~) current_piece#93 4.0 +(byte*~) current_piece#94 4.0 (byte) current_piece_char -(byte) current_piece_char#1 4.379310344827585 -(byte) current_piece_char#12 0.6153846153846154 -(byte) current_piece_char#15 194.59615384615384 -(byte) current_piece_char#20 6.0 -(byte) current_piece_char#64 46.09090909090909 -(byte~) current_piece_char#90 4.0 -(byte~) current_piece_char#91 22.0 +(byte~) current_piece_char#103 4.0 +(byte~) current_piece_char#104 22.0 +(byte) current_piece_char#14 0.7027027027027027 +(byte) current_piece_char#16 0.32 +(byte) current_piece_char#19 18.509090909090908 +(byte) current_piece_char#27 6.0 +(byte) current_piece_char#75 46.09090909090909 (byte*) current_piece_gfx -(byte*) current_piece_gfx#1 0.2962962962962963 -(byte*~) current_piece_gfx#102 2.0 -(byte*~) current_piece_gfx#103 11.0 -(byte*) current_piece_gfx#14 6.789473684210528 -(byte*) current_piece_gfx#16 0.5 -(byte*) current_piece_gfx#20 194.59615384615384 -(byte*) current_piece_gfx#26 6.0 -(byte*) current_piece_gfx#3 4.0 -(byte*) current_piece_gfx#53 46.09090909090909 +(byte*) current_piece_gfx#105 18.509090909090908 +(byte*~) current_piece_gfx#115 2.0 +(byte*~) current_piece_gfx#116 11.0 +(byte*) current_piece_gfx#16 1.3000000000000003 +(byte*) current_piece_gfx#18 0.3571428571428571 +(byte*) current_piece_gfx#19 1.3333333333333333 +(byte*) current_piece_gfx#21 0.3333333333333333 +(byte*) current_piece_gfx#33 6.0 +(byte*) current_piece_gfx#6 4.0 +(byte*) current_piece_gfx#62 46.09090909090909 (byte) current_xpos -(byte) current_xpos#1 0.72 -(byte) current_xpos#10 21.557692307692307 -(byte~) current_xpos#112 1.3333333333333333 -(byte~) current_xpos#113 7.333333333333333 -(byte) current_xpos#19 3.139534883720931 -(byte) current_xpos#2 4.0 -(byte) current_xpos#23 0.5333333333333333 -(byte) current_xpos#33 6.0 -(byte) current_xpos#4 4.0 -(byte) current_xpos#47 5.181818181818182 +(byte) current_xpos#115 2.181818181818182 +(byte~) current_xpos#125 1.3333333333333333 +(byte~) current_xpos#126 7.333333333333333 +(byte) current_xpos#17 1.3000000000000003 +(byte) current_xpos#20 0.7692307692307692 +(byte) current_xpos#24 0.4666666666666666 +(byte) current_xpos#28 0.43478260869565216 +(byte) current_xpos#41 6.0 +(byte) current_xpos#5 4.0 +(byte) current_xpos#57 5.181818181818182 +(byte) current_xpos#7 4.0 (byte) current_ypos -(byte) current_ypos#0 4.0 -(byte) current_ypos#13 1.8999999999999995 -(byte) current_ypos#18 0.5714285714285714 -(byte) current_ypos#21 3.485714285714285 -(byte) current_ypos#29 6.0 -(byte~) current_ypos#86 1.0 -(byte~) current_ypos#87 4.4 -(byte) current_ypos#9 15.0 +(byte~) current_ypos#100 4.4 +(byte) current_ypos#11 15.0 +(byte) current_ypos#17 0.41025641025641035 +(byte) current_ypos#2 4.0 +(byte) current_ypos#22 0.4545454545454546 +(byte) current_ypos#25 0.5526315789473684 +(byte) current_ypos#36 6.0 +(byte~) current_ypos#99 1.0 +(byte) game_over +(byte) game_over#14 0.4594594594594595 +(byte) game_over#15 0.46153846153846156 +(byte) game_over#19 0.6382978723404255 +(byte) game_over#26 6.0 +(byte) game_over#69 0.19047619047619047 (byte) irq_cnt -(byte) irq_cnt#0 0.19047619047619047 -(byte) irq_cnt#1 4.0 -(byte) irq_cnt#14 20.0 +(byte) irq_cnt#0 0.17391304347826086 +(byte) irq_cnt#1 3.0 +(byte) irq_cnt#2 20.0 (byte) irq_raster_next -(byte) irq_raster_next#0 0.17391304347826086 +(byte) irq_raster_next#0 0.3076923076923077 (byte) irq_raster_next#1 1.0 -(byte) irq_raster_next#13 6.0 (byte) irq_raster_next#2 1.3333333333333333 +(byte) irq_raster_next#3 1.3333333333333333 +(byte) irq_raster_next#4 8.0 (byte) irq_sprite_ptr -(byte) irq_sprite_ptr#0 0.24 +(byte) irq_sprite_ptr#0 0.25806451612903225 (byte) irq_sprite_ptr#1 20.0 (byte) irq_sprite_ptr#2 20.0 +(byte) irq_sprite_ptr#3 20.0 (byte) irq_sprite_ypos -(byte) irq_sprite_ypos#0 0.7083333333333334 +(byte) irq_sprite_ypos#0 0.27586206896551724 (byte) irq_sprite_ypos#1 20.0 (byte) irq_sprite_ypos#2 20.0 +(byte) irq_sprite_ypos#3 20.0 (byte[]) keyboard_char_keycodes (byte()) keyboard_event_get() (byte) keyboard_event_get::return (byte) keyboard_event_get::return#1 4.0 -(byte) keyboard_event_get::return#2 34.33333333333333 -(byte) keyboard_event_get::return#3 202.0 +(byte) keyboard_event_get::return#2 4.333333333333333 +(byte) keyboard_event_get::return#3 22.0 (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode) (byte~) keyboard_event_pressed::$0 4.0 (byte~) keyboard_event_pressed::$1 4.0 @@ -10018,48 +10955,48 @@ VARIABLE REGISTER WEIGHTS (byte) keyboard_event_pressed::row_bits (byte) keyboard_event_pressed::row_bits#0 2.0 (void()) keyboard_event_scan() -(byte/word/dword~) keyboard_event_scan::$11 20002.0 +(byte/word/dword~) keyboard_event_scan::$11 2002.0 (byte~) keyboard_event_scan::$14 4.0 (byte~) keyboard_event_scan::$18 4.0 (byte~) keyboard_event_scan::$22 4.0 (byte~) keyboard_event_scan::$26 4.0 -(byte~) keyboard_event_scan::$3 20002.0 -(byte~) keyboard_event_scan::$4 20002.0 +(byte~) keyboard_event_scan::$3 2002.0 +(byte~) keyboard_event_scan::$4 2002.0 (byte) keyboard_event_scan::col -(byte) keyboard_event_scan::col#1 15001.5 -(byte) keyboard_event_scan::col#2 2857.4285714285716 +(byte) keyboard_event_scan::col#1 1501.5 +(byte) keyboard_event_scan::col#2 286.0 (byte) keyboard_event_scan::event_type -(byte) keyboard_event_scan::event_type#0 20002.0 +(byte) keyboard_event_scan::event_type#0 2002.0 (byte) keyboard_event_scan::keycode -(byte) keyboard_event_scan::keycode#1 2002.0 -(byte) keyboard_event_scan::keycode#10 3154.230769230769 -(byte) keyboard_event_scan::keycode#11 500.5 -(byte) keyboard_event_scan::keycode#14 1001.0 -(byte) keyboard_event_scan::keycode#15 5250.75 +(byte) keyboard_event_scan::keycode#1 202.0 +(byte) keyboard_event_scan::keycode#10 315.7692307692308 +(byte) keyboard_event_scan::keycode#11 50.5 +(byte) keyboard_event_scan::keycode#14 101.0 +(byte) keyboard_event_scan::keycode#15 525.75 (byte) keyboard_event_scan::row -(byte) keyboard_event_scan::row#1 1501.5 -(byte) keyboard_event_scan::row#2 600.24 +(byte) keyboard_event_scan::row#1 151.5 +(byte) keyboard_event_scan::row#2 60.24 (byte) keyboard_event_scan::row_scan -(byte) keyboard_event_scan::row_scan#0 1278.0555555555554 +(byte) keyboard_event_scan::row_scan#0 128.05555555555557 (byte[8]) keyboard_events (byte) keyboard_events_size -(byte) keyboard_events_size#1 20002.0 -(byte) keyboard_events_size#10 8100.9000000000015 -(byte) keyboard_events_size#13 97.06451612903226 -(byte) keyboard_events_size#16 3.515151515151515 -(byte) keyboard_events_size#19 18.999999999999996 -(byte) keyboard_events_size#2 20002.0 -(byte) keyboard_events_size#29 429.2857142857143 -(byte) keyboard_events_size#30 10201.2 +(byte) keyboard_events_size#1 2002.0 +(byte) keyboard_events_size#10 810.9000000000001 +(byte) keyboard_events_size#13 9.967741935483872 +(byte) keyboard_events_size#16 0.6 +(byte) keyboard_events_size#19 1.8571428571428572 +(byte) keyboard_events_size#2 2002.0 +(byte) keyboard_events_size#29 43.57142857142858 +(byte) keyboard_events_size#30 1021.2 (byte) keyboard_events_size#4 3.0 (byte[8]) keyboard_matrix_col_bitmask (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 334.33333333333337 -(byte) keyboard_matrix_read::return#2 2002.0 +(byte) keyboard_matrix_read::return#0 34.33333333333333 +(byte) keyboard_matrix_read::return#2 202.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 1003.0 +(byte) keyboard_matrix_read::rowid#0 103.0 (byte[8]) keyboard_matrix_row_bitmask (byte) keyboard_modifiers (byte) keyboard_modifiers#11 0.8 @@ -10070,92 +11007,91 @@ VARIABLE REGISTER WEIGHTS (byte) keyboard_modifiers#5 20.0 (byte[8]) keyboard_scan_values (byte) level -(byte) level#12 4.0 -(byte) level#14 1.3333333333333333 -(byte) level#16 0.4444444444444444 -(byte) level#19 2.2181818181818174 -(byte) level#24 6.0 +(byte) level#10 0.36206896551724144 +(byte) level#16 0.40540540540540543 +(byte) level#18 1.3333333333333333 +(byte) level#20 0.4444444444444444 +(byte) level#31 6.0 (byte) level_bcd -(byte) level_bcd#13 2.313725490196078 -(byte) level_bcd#15 1.3333333333333333 -(byte) level_bcd#17 2.6666666666666665 -(byte) level_bcd#20 2.0677966101694913 -(byte) level_bcd#25 6.0 -(byte) level_bcd#55 0.6000000000000001 -(byte) level_bcd#6 4.0 +(byte) level_bcd#11 0.33870967741935476 +(byte) level_bcd#17 0.288135593220339 +(byte) level_bcd#19 1.3333333333333333 +(byte) level_bcd#21 2.6666666666666665 +(byte) level_bcd#32 6.0 +(byte) level_bcd#63 0.6000000000000001 +(byte) level_bcd#8 4.0 (word) lines_bcd -(word) lines_bcd#11 2.352941176470588 -(word) lines_bcd#13 1.3333333333333333 -(word) lines_bcd#15 2.5416666666666656 -(word) lines_bcd#20 6.0 -(word) lines_bcd#23 1.0 +(word) lines_bcd#15 0.3220338983050848 +(word) lines_bcd#17 1.3333333333333333 +(word) lines_bcd#19 0.4117647058823528 +(word) lines_bcd#27 6.0 +(word) lines_bcd#30 1.0 (void()) main() -(byte~) main::$12 202.0 -(byte~) main::$13 202.0 -(byte~) main::$14 202.0 +(byte~) main::$9 22.0 (byte) main::key_event -(byte) main::key_event#0 36.72727272727273 +(byte) main::key_event#0 11.0 (byte) main::render -(byte) main::render#1 40.4 -(byte) main::render#2 40.4 -(byte) main::render#3 202.0 +(byte) main::render#1 22.0 (byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) -(byte~) play_collision::$7 20002.0 +(byte~) play_collision::$7 2002.0 (byte) play_collision::c -(byte) play_collision::c#1 10001.0 -(byte) play_collision::c#2 2222.4444444444443 +(byte) play_collision::c#1 1001.0 +(byte) play_collision::c#2 222.44444444444446 (byte) play_collision::col -(byte) play_collision::col#1 5000.5 -(byte) play_collision::col#2 6375.75 -(byte~) play_collision::col#9 2002.0 +(byte) play_collision::col#1 500.5 +(byte) play_collision::col#2 638.25 +(byte~) play_collision::col#9 202.0 (byte) play_collision::i -(byte) play_collision::i#1 1615.6153846153845 -(byte~) play_collision::i#11 2002.0 -(byte~) play_collision::i#13 20002.0 -(byte) play_collision::i#2 15502.0 -(byte) play_collision::i#3 667.3333333333334 +(byte) play_collision::i#1 161.76923076923077 +(byte~) play_collision::i#11 202.0 +(byte~) play_collision::i#13 2002.0 +(byte) play_collision::i#2 1552.0 +(byte) play_collision::i#3 67.33333333333333 (byte) play_collision::l -(byte) play_collision::l#1 1001.0 -(byte) play_collision::l#6 125.125 +(byte) play_collision::l#1 101.0 +(byte) play_collision::l#6 12.625 (byte) play_collision::orientation (byte) play_collision::orientation#0 2.0 (byte) play_collision::orientation#1 2.0 (byte) play_collision::orientation#2 2.0 (byte) play_collision::orientation#3 2.0 -(byte) play_collision::orientation#4 10.0 +(byte) play_collision::orientation#5 10.0 (byte*) play_collision::piece_gfx -(byte*) play_collision::piece_gfx#0 476.3333333333333 +(byte*) play_collision::piece_gfx#0 47.76190476190476 (byte*) play_collision::playfield_line -(byte*) play_collision::playfield_line#0 785.8571428571429 +(byte*) play_collision::playfield_line#0 78.71428571428571 (byte) play_collision::return (byte) play_collision::return#0 4.0 (byte) play_collision::return#1 4.0 -(byte) play_collision::return#12 4.0 +(byte) play_collision::return#10 4.0 (byte) play_collision::return#13 4.0 -(byte) play_collision::return#14 1.3333333333333333 +(byte) play_collision::return#14 4.0 +(byte) play_collision::return#15 1.4285714285714284 (byte) play_collision::xpos (byte) play_collision::xpos#0 1.3333333333333333 (byte) play_collision::xpos#1 1.0 (byte) play_collision::xpos#2 1.0 (byte) play_collision::xpos#3 1.0 -(byte) play_collision::xpos#5 45.86363636363637 +(byte) play_collision::xpos#4 1.3333333333333333 +(byte) play_collision::xpos#6 5.045454545454545 (byte) play_collision::ypos (byte) play_collision::ypos#0 1.0 (byte) play_collision::ypos#1 1.3333333333333333 (byte) play_collision::ypos#2 1.3333333333333333 (byte) play_collision::ypos#3 1.3333333333333333 -(byte) play_collision::ypos#4 5.0 +(byte) play_collision::ypos#4 2.0 +(byte) play_collision::ypos#5 6.0 (byte) play_collision::ypos2 (byte) play_collision::ypos2#0 4.0 -(byte) play_collision::ypos2#1 500.5 -(byte) play_collision::ypos2#2 867.0666666666667 +(byte) play_collision::ypos2#1 50.5 +(byte) play_collision::ypos2#2 87.06666666666668 (void()) play_increase_level() (byte~) play_increase_level::$1 4.0 (byte) play_increase_level::b -(byte) play_increase_level::b#1 1501.5 -(byte) play_increase_level::b#2 1001.0 +(byte) play_increase_level::b#1 151.5 +(byte) play_increase_level::b#2 101.0 (byte) play_increase_level::b4 -(byte) play_increase_level::b4#0 4004.0 +(byte) play_increase_level::b4#0 404.0 (void()) play_init() (byte~) play_init::$1 22.0 (byte) play_init::b @@ -10174,32 +11110,32 @@ VARIABLE REGISTER WEIGHTS (byte*) play_init::pli#2 8.25 (void()) play_lock_current() (byte) play_lock_current::c -(byte) play_lock_current::c#1 10001.0 -(byte) play_lock_current::c#2 4000.4 +(byte) play_lock_current::c#1 1001.0 +(byte) play_lock_current::c#2 400.4 (byte) play_lock_current::col -(byte) play_lock_current::col#0 2002.0 -(byte) play_lock_current::col#1 5000.5 -(byte) play_lock_current::col#2 7751.0 +(byte) play_lock_current::col#0 202.0 +(byte) play_lock_current::col#1 500.5 +(byte) play_lock_current::col#2 776.0 (byte) play_lock_current::i -(byte) play_lock_current::i#1 2333.6666666666665 -(byte) play_lock_current::i#2 15502.0 -(byte) play_lock_current::i#3 667.3333333333334 -(byte~) play_lock_current::i#7 2002.0 -(byte~) play_lock_current::i#9 20002.0 +(byte) play_lock_current::i#1 233.66666666666669 +(byte) play_lock_current::i#2 1552.0 +(byte) play_lock_current::i#3 67.33333333333333 +(byte~) play_lock_current::i#7 202.0 +(byte~) play_lock_current::i#9 2002.0 (byte) play_lock_current::l -(byte) play_lock_current::l#1 1001.0 -(byte) play_lock_current::l#6 166.83333333333334 +(byte) play_lock_current::l#1 101.0 +(byte) play_lock_current::l#6 16.833333333333332 (byte*) play_lock_current::playfield_line -(byte*) play_lock_current::playfield_line#0 1100.2 +(byte*) play_lock_current::playfield_line#0 110.19999999999999 (byte) play_lock_current::ypos2 (byte) play_lock_current::ypos2#0 4.0 -(byte) play_lock_current::ypos2#1 500.5 -(byte) play_lock_current::ypos2#2 273.1818181818182 +(byte) play_lock_current::ypos2#1 50.5 +(byte) play_lock_current::ypos2#2 27.727272727272727 (byte()) play_move_down((byte) play_move_down::key_event) (byte~) play_move_down::$12 4.0 (byte~) play_move_down::$2 4.0 (byte) play_move_down::key_event -(byte) play_move_down::key_event#0 51.5 +(byte) play_move_down::key_event#0 2.0 (byte) play_move_down::movedown (byte) play_move_down::movedown#10 1.0 (byte) play_move_down::movedown#2 4.0 @@ -10209,65 +11145,79 @@ VARIABLE REGISTER WEIGHTS (byte) play_move_down::removed (byte) play_move_down::removed#0 4.0 (byte) play_move_down::return -(byte) play_move_down::return#2 33.666666666666664 -(byte) play_move_down::return#3 202.0 +(byte) play_move_down::return#0 4.0 +(byte) play_move_down::return#3 0.6666666666666666 (byte()) play_move_leftright((byte) play_move_leftright::key_event) (byte~) play_move_leftright::$4 4.0 (byte~) play_move_leftright::$8 4.0 (byte) play_move_leftright::key_event -(byte) play_move_leftright::key_event#0 52.5 +(byte) play_move_leftright::key_event#0 3.0 (byte) play_move_leftright::return -(byte) play_move_leftright::return#1 33.666666666666664 -(byte) play_move_leftright::return#4 202.0 +(byte) play_move_leftright::return#0 4.0 +(byte) play_move_leftright::return#2 0.6666666666666666 (byte()) play_move_rotate((byte) play_move_rotate::key_event) (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 4.0 (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 4.0 (byte~) play_move_rotate::$6 4.0 (byte) play_move_rotate::key_event -(byte) play_move_rotate::key_event#0 52.5 +(byte) play_move_rotate::key_event#0 3.0 (byte) play_move_rotate::orientation (byte) play_move_rotate::orientation#1 4.0 (byte) play_move_rotate::orientation#2 4.0 (byte) play_move_rotate::orientation#3 0.8888888888888888 (byte) play_move_rotate::return -(byte) play_move_rotate::return#1 33.666666666666664 -(byte) play_move_rotate::return#4 202.0 +(byte) play_move_rotate::return#0 4.0 +(byte) play_move_rotate::return#2 0.6666666666666666 +(byte()) play_movement((byte) play_movement::key_event) +(byte~) play_movement::$0 4.0 +(byte~) play_movement::$3 4.0 +(byte~) play_movement::$4 4.0 +(byte) play_movement::key_event +(byte) play_movement::key_event#0 1.4166666666666667 +(byte) play_movement::render +(byte) play_movement::render#1 1.0 +(byte) play_movement::render#2 0.8 +(byte) play_movement::return +(byte) play_movement::return#0 4.0 +(byte) play_movement::return#2 5.0 +(byte) play_movement::return#3 22.0 (byte()) play_remove_lines() (byte) play_remove_lines::c -(byte) play_remove_lines::c#0 6000.6 +(byte) play_remove_lines::c#0 600.5999999999999 (byte) play_remove_lines::full -(byte) play_remove_lines::full#2 4200.6 -(byte) play_remove_lines::full#4 4000.4 +(byte) play_remove_lines::full#2 420.59999999999997 +(byte) play_remove_lines::full#4 400.4 (byte) play_remove_lines::r -(byte) play_remove_lines::r#1 1500.2142857142858 -(byte) play_remove_lines::r#2 15502.0 -(byte) play_remove_lines::r#3 2002.0 +(byte) play_remove_lines::r#1 150.21428571428572 +(byte) play_remove_lines::r#2 1552.0 +(byte) play_remove_lines::r#3 202.0 (byte) play_remove_lines::removed -(byte) play_remove_lines::removed#1 2002.0 -(byte) play_remove_lines::removed#11 231.0 -(byte) play_remove_lines::removed#7 333.8888888888889 +(byte) play_remove_lines::removed#1 202.0 +(byte) play_remove_lines::removed#11 23.307692307692307 +(byte) play_remove_lines::removed#7 33.888888888888886 (byte) play_remove_lines::return (byte) play_remove_lines::return#0 4.0 (byte) play_remove_lines::w -(byte) play_remove_lines::w#1 5501.0 -(byte) play_remove_lines::w#11 1334.6666666666667 -(byte) play_remove_lines::w#12 2002.0 -(byte) play_remove_lines::w#2 1001.0 -(byte) play_remove_lines::w#3 2002.0 -(byte) play_remove_lines::w#4 4429.142857142857 -(byte) play_remove_lines::w#6 1668.3333333333335 +(byte) play_remove_lines::w#1 551.0 +(byte) play_remove_lines::w#11 134.66666666666666 +(byte) play_remove_lines::w#12 202.0 +(byte) play_remove_lines::w#2 101.0 +(byte) play_remove_lines::w#3 202.0 +(byte) play_remove_lines::w#4 443.42857142857144 +(byte) play_remove_lines::w#6 168.33333333333331 (byte) play_remove_lines::x -(byte) play_remove_lines::x#1 15001.5 -(byte) play_remove_lines::x#2 2500.25 +(byte) play_remove_lines::x#1 1501.5 +(byte) play_remove_lines::x#2 250.25 (byte) play_remove_lines::y -(byte) play_remove_lines::y#1 1501.5 -(byte) play_remove_lines::y#8 133.46666666666667 +(byte) play_remove_lines::y#1 151.5 +(byte) play_remove_lines::y#8 13.466666666666667 (void()) play_spawn_current() -(byte~) play_spawn_current::$1 2002.0 -(byte~) play_spawn_current::$3 0.13333333333333333 +(byte~) play_spawn_current::$1 202.0 +(byte~) play_spawn_current::$3 0.08333333333333333 +(byte~) play_spawn_current::$5 4.0 (byte) play_spawn_current::piece_idx -(byte) play_spawn_current::piece_idx#1 2002.0 -(byte) play_spawn_current::piece_idx#2 334.99999999999994 +(byte) play_spawn_current::piece_idx#1 202.0 +(byte) play_spawn_current::piece_idx#2 35.00000000000001 (void()) play_update_score((byte) play_update_score::removed) (byte~) play_update_score::$2 4.0 (byte~) play_update_score::$4 4.0 @@ -10423,16 +11373,18 @@ VARIABLE REGISTER WEIGHTS (byte) render_screen_original::y#6 0.9166666666666666 (byte) render_screen_render (byte) render_screen_render#11 3.25 -(byte) render_screen_render#17 0.6271186440677967 +(byte) render_screen_render#17 0.9600000000000001 (byte) render_screen_render#21 8.615384615384615 (byte) render_screen_render#30 5.090909090909091 -(byte~) render_screen_render#64 5.5 -(byte~) render_screen_render#65 22.0 +(byte) render_screen_render#33 16.5 +(byte~) render_screen_render#68 5.5 +(byte~) render_screen_render#69 22.0 (byte) render_screen_show (byte) render_screen_show#13 4.333333333333333 -(byte) render_screen_show#16 0.37777777777777777 +(byte) render_screen_show#17 1.0833333333333335 +(byte) render_screen_show#29 16.5 (byte) render_screen_showing -(byte) render_screen_showing#0 0.5 +(byte) render_screen_showing#0 0.4 (byte) render_screen_showing#1 20.0 (void()) render_screen_swap() (void()) render_show() @@ -10464,17 +11416,17 @@ VARIABLE REGISTER WEIGHTS (byte*) render_show::toD0182_screen (dword[5]) score_add_bcd (dword) score_bcd -(dword) score_bcd#10 4.0 -(dword) score_bcd#12 1.3333333333333333 -(dword) score_bcd#14 2.4489795918367347 -(dword) score_bcd#20 6.0 -(dword) score_bcd#23 0.8571428571428571 +(dword) score_bcd#14 0.40540540540540543 +(dword) score_bcd#16 1.3333333333333333 +(dword) score_bcd#18 0.3653846153846153 +(dword) score_bcd#27 6.0 +(dword) score_bcd#30 0.8571428571428571 (byte*[PLAYFIELD_LINES#0]) screen_lines_1 (byte*[PLAYFIELD_LINES#0]) screen_lines_2 (byte()) sid_rnd() (byte) sid_rnd::return -(byte) sid_rnd::return#0 334.33333333333337 -(byte) sid_rnd::return#2 2002.0 +(byte) sid_rnd::return#0 34.33333333333333 +(byte) sid_rnd::return#2 202.0 (void()) sid_rnd_init() (void()) sprites_init() (byte) sprites_init::s @@ -10486,17 +11438,15 @@ VARIABLE REGISTER WEIGHTS (byte) sprites_init::xpos#1 7.333333333333333 (byte) sprites_init::xpos#2 8.25 interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -(byte~) sprites_irq::$4 4.0 +(byte/signed word/word/dword/signed dword~) sprites_irq::$0 4.0 (byte) sprites_irq::ptr (byte) sprites_irq::ptr#0 2.5 (byte) sprites_irq::ptr#1 2.6666666666666665 (byte) sprites_irq::ptr#2 4.0 (byte) sprites_irq::ptr#3 2.6666666666666665 (byte) sprites_irq::ptr#4 4.0 -(byte) sprites_irq::raster_next -(byte) sprites_irq::raster_next#0 2.6666666666666665 -(byte) sprites_irq::raster_next#1 4.0 -(byte) sprites_irq::raster_next#2 6.0 +(byte) sprites_irq::raster_sprite_gfx_modify +(byte) sprites_irq::raster_sprite_gfx_modify#0 6.5 (word~) sprites_irq::toSpritePtr2_$0 (word~) sprites_irq::toSpritePtr2_$1 (byte~) sprites_irq::toSpritePtr2_$2 @@ -10512,56 +11462,58 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() (byte*) toSpritePtr1_sprite Initial phi equivalence classes -[ render_screen_show#16 render_screen_show#13 ] -[ render_screen_render#17 render_screen_render#11 ] -[ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] +[ render_screen_show#17 render_screen_show#29 render_screen_show#13 ] +[ render_screen_render#17 render_screen_render#33 render_screen_render#11 ] +[ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] [ render_score::screen#2 ] [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] [ render_bcd::offset#6 ] [ render_bcd::only_low#6 ] [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] -[ current_ypos#9 current_ypos#86 current_ypos#87 ] -[ render_screen_render#30 render_screen_render#64 ] -[ current_xpos#47 current_xpos#112 current_xpos#113 ] -[ current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 ] -[ current_piece_char#64 current_piece_char#90 current_piece_char#91 ] +[ current_ypos#11 current_ypos#99 current_ypos#100 ] +[ render_screen_render#30 render_screen_render#68 ] +[ current_xpos#57 current_xpos#125 current_xpos#126 ] +[ current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 ] +[ current_piece_char#75 current_piece_char#103 current_piece_char#104 ] [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] [ render_moving::l#4 render_moving::l#1 ] [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 ] [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] [ render_moving::c#2 render_moving::c#1 ] -[ render_screen_render#21 render_screen_render#65 ] +[ render_screen_render#21 render_screen_render#69 ] [ render_playfield::l#2 render_playfield::l#1 ] [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] [ render_playfield::c#2 render_playfield::c#1 ] -[ play_move_rotate::return#1 ] +[ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] +[ play_move_rotate::return#2 ] [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -[ current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 ] -[ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -[ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] -[ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] +[ current_piece#16 current_piece#89 current_piece#90 current_piece#91 current_piece#92 current_piece#93 ] +[ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +[ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] +[ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] [ play_collision::l#6 play_collision::l#1 ] [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] [ play_collision::c#2 play_collision::c#1 ] -[ play_collision::return#14 ] -[ play_move_leftright::return#1 ] +[ play_collision::return#15 ] +[ play_move_leftright::return#2 ] [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -[ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] -[ lines_bcd#20 lines_bcd#13 lines_bcd#15 lines_bcd#11 lines_bcd#23 ] -[ score_bcd#20 score_bcd#12 score_bcd#14 score_bcd#10 score_bcd#23 ] -[ level#24 level#14 level#19 level#12 level#16 ] -[ current_movedown_slow#31 current_movedown_slow#19 current_movedown_slow#12 current_movedown_slow#1 current_movedown_slow#17 current_movedown_slow#60 current_movedown_slow#8 ] -[ level_bcd#25 level_bcd#15 level_bcd#20 level_bcd#13 level_bcd#55 level_bcd#17 level_bcd#6 ] -[ current_piece#20 current_piece#80 current_piece#16 current_piece#73 current_piece#10 ] -[ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] -[ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] -[ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] -[ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] -[ play_move_down::return#2 ] +[ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 ] +[ lines_bcd#27 lines_bcd#17 lines_bcd#19 lines_bcd#15 lines_bcd#30 ] +[ score_bcd#27 score_bcd#16 score_bcd#18 score_bcd#14 score_bcd#30 ] +[ level#31 level#18 level#10 level#16 level#20 ] +[ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#68 current_movedown_slow#10 ] +[ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#63 level_bcd#21 level_bcd#8 ] +[ current_piece#27 current_piece#94 current_piece#20 current_piece#14 current_piece#88 ] +[ current_piece_char#27 current_piece_char#19 current_piece_char#14 current_piece_char#16 ] +[ current_orientation#36 current_orientation#12 current_orientation#16 current_orientation#19 current_orientation#24 current_orientation#7 ] +[ current_piece_gfx#33 current_piece_gfx#105 current_piece_gfx#16 current_piece_gfx#21 current_piece_gfx#18 current_piece_gfx#19 current_piece_gfx#6 ] +[ current_xpos#41 current_xpos#115 current_xpos#17 current_xpos#28 current_xpos#20 current_xpos#24 current_xpos#7 current_xpos#5 ] +[ play_move_down::return#3 ] +[ game_over#69 game_over#26 game_over#19 game_over#14 game_over#15 ] [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] [ play_increase_level::b#2 play_increase_level::b#1 ] [ play_remove_lines::y#8 play_remove_lines::y#1 ] @@ -10598,27 +11550,18 @@ Initial phi equivalence classes [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] -[ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] -[ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +[ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] Added variable render_screen_showing#0 to zero page equivalence class [ render_screen_showing#0 ] Added variable irq_raster_next#0 to zero page equivalence class [ irq_raster_next#0 ] Added variable irq_sprite_ypos#0 to zero page equivalence class [ irq_sprite_ypos#0 ] Added variable irq_sprite_ptr#0 to zero page equivalence class [ irq_sprite_ptr#0 ] Added variable irq_cnt#0 to zero page equivalence class [ irq_cnt#0 ] +Added variable main::$9 to zero page equivalence class [ main::$9 ] Added variable keyboard_event_get::return#3 to zero page equivalence class [ keyboard_event_get::return#3 ] Added variable main::key_event#0 to zero page equivalence class [ main::key_event#0 ] -Added variable play_move_down::key_event#0 to zero page equivalence class [ play_move_down::key_event#0 ] -Added variable play_move_down::return#3 to zero page equivalence class [ play_move_down::return#3 ] -Added variable main::$12 to zero page equivalence class [ main::$12 ] +Added variable play_movement::key_event#0 to zero page equivalence class [ play_movement::key_event#0 ] +Added variable play_movement::return#3 to zero page equivalence class [ play_movement::return#3 ] Added variable main::render#1 to zero page equivalence class [ main::render#1 ] -Added variable play_move_leftright::key_event#0 to zero page equivalence class [ play_move_leftright::key_event#0 ] -Added variable play_move_leftright::return#4 to zero page equivalence class [ play_move_leftright::return#4 ] -Added variable main::$13 to zero page equivalence class [ main::$13 ] -Added variable main::render#2 to zero page equivalence class [ main::render#2 ] -Added variable play_move_rotate::key_event#0 to zero page equivalence class [ play_move_rotate::key_event#0 ] -Added variable play_move_rotate::return#4 to zero page equivalence class [ play_move_rotate::return#4 ] -Added variable main::$14 to zero page equivalence class [ main::$14 ] -Added variable main::render#3 to zero page equivalence class [ main::render#3 ] Added variable render_bcd::$3 to zero page equivalence class [ render_bcd::$3 ] Added variable render_bcd::$4 to zero page equivalence class [ render_bcd::$4 ] Added variable render_bcd::$5 to zero page equivalence class [ render_bcd::$5 ] @@ -10629,15 +11572,25 @@ Added variable render_moving::screen_line#0 to zero page equivalence class [ ren Added variable render_moving::current_cell#0 to zero page equivalence class [ render_moving::current_cell#0 ] Added variable render_playfield::$2 to zero page equivalence class [ render_playfield::$2 ] Added variable render_playfield::$3 to zero page equivalence class [ render_playfield::$3 ] +Added variable play_move_down::key_event#0 to zero page equivalence class [ play_move_down::key_event#0 ] +Added variable play_move_down::return#0 to zero page equivalence class [ play_move_down::return#0 ] +Added variable play_movement::$0 to zero page equivalence class [ play_movement::$0 ] +Added variable play_move_leftright::key_event#0 to zero page equivalence class [ play_move_leftright::key_event#0 ] +Added variable play_move_leftright::return#0 to zero page equivalence class [ play_move_leftright::return#0 ] +Added variable play_movement::$3 to zero page equivalence class [ play_movement::$3 ] +Added variable play_movement::render#2 to zero page equivalence class [ play_movement::render#2 ] +Added variable play_move_rotate::key_event#0 to zero page equivalence class [ play_move_rotate::key_event#0 ] +Added variable play_move_rotate::return#0 to zero page equivalence class [ play_move_rotate::return#0 ] +Added variable play_movement::$4 to zero page equivalence class [ play_movement::$4 ] Added variable play_move_rotate::$2 to zero page equivalence class [ play_move_rotate::$2 ] -Added variable play_collision::return#13 to zero page equivalence class [ play_collision::return#13 ] +Added variable play_collision::return#14 to zero page equivalence class [ play_collision::return#14 ] Added variable play_move_rotate::$6 to zero page equivalence class [ play_move_rotate::$6 ] Added variable play_move_rotate::$4 to zero page equivalence class [ play_move_rotate::$4 ] Added variable play_collision::piece_gfx#0 to zero page equivalence class [ play_collision::piece_gfx#0 ] Added variable play_collision::playfield_line#0 to zero page equivalence class [ play_collision::playfield_line#0 ] Added variable play_collision::i#1 to zero page equivalence class [ play_collision::i#1 ] Added variable play_collision::$7 to zero page equivalence class [ play_collision::$7 ] -Added variable play_collision::return#12 to zero page equivalence class [ play_collision::return#12 ] +Added variable play_collision::return#13 to zero page equivalence class [ play_collision::return#13 ] Added variable play_move_leftright::$4 to zero page equivalence class [ play_move_leftright::$4 ] Added variable play_collision::return#1 to zero page equivalence class [ play_collision::return#1 ] Added variable play_move_leftright::$8 to zero page equivalence class [ play_move_leftright::$8 ] @@ -10649,6 +11602,8 @@ Added variable play_remove_lines::return#0 to zero page equivalence class [ play Added variable play_move_down::removed#0 to zero page equivalence class [ play_move_down::removed#0 ] Added variable play_update_score::removed#0 to zero page equivalence class [ play_update_score::removed#0 ] Added variable play_spawn_current::$3 to zero page equivalence class [ play_spawn_current::$3 ] +Added variable play_collision::return#10 to zero page equivalence class [ play_collision::return#10 ] +Added variable play_spawn_current::$5 to zero page equivalence class [ play_spawn_current::$5 ] Added variable sid_rnd::return#2 to zero page equivalence class [ sid_rnd::return#2 ] Added variable play_spawn_current::$1 to zero page equivalence class [ play_spawn_current::$1 ] Added variable sid_rnd::return#0 to zero page equivalence class [ sid_rnd::return#0 ] @@ -10691,69 +11646,74 @@ Added variable sprites_init::s2#0 to zero page equivalence class [ sprites_init: Added variable render_init::$13 to zero page equivalence class [ render_init::$13 ] Added variable render_init::$14 to zero page equivalence class [ render_init::$14 ] Added variable sprites_irq::ypos#0 to zero page equivalence class [ sprites_irq::ypos#0 ] +Added variable sprites_irq::$0 to zero page equivalence class [ sprites_irq::$0 ] +Added variable sprites_irq::raster_sprite_gfx_modify#0 to zero page equivalence class [ sprites_irq::raster_sprite_gfx_modify#0 ] Added variable sprites_irq::ptr#0 to zero page equivalence class [ sprites_irq::ptr#0 ] Added variable sprites_irq::ptr#3 to zero page equivalence class [ sprites_irq::ptr#3 ] Added variable sprites_irq::ptr#4 to zero page equivalence class [ sprites_irq::ptr#4 ] Added variable irq_cnt#1 to zero page equivalence class [ irq_cnt#1 ] +Added variable irq_sprite_ypos#3 to zero page equivalence class [ irq_sprite_ypos#3 ] +Added variable irq_sprite_ptr#3 to zero page equivalence class [ irq_sprite_ptr#3 ] +Added variable irq_cnt#2 to zero page equivalence class [ irq_cnt#2 ] Added variable irq_sprite_ypos#2 to zero page equivalence class [ irq_sprite_ypos#2 ] Added variable irq_sprite_ptr#2 to zero page equivalence class [ irq_sprite_ptr#2 ] -Added variable sprites_irq::$4 to zero page equivalence class [ sprites_irq::$4 ] -Added variable irq_cnt#14 to zero page equivalence class [ irq_cnt#14 ] Added variable irq_sprite_ypos#1 to zero page equivalence class [ irq_sprite_ypos#1 ] Added variable irq_sprite_ptr#1 to zero page equivalence class [ irq_sprite_ptr#1 ] Added variable sprites_irq::ptr#1 to zero page equivalence class [ sprites_irq::ptr#1 ] Added variable sprites_irq::ptr#2 to zero page equivalence class [ sprites_irq::ptr#2 ] Complete equivalence classes -[ render_screen_show#16 render_screen_show#13 ] -[ render_screen_render#17 render_screen_render#11 ] -[ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] +[ render_screen_show#17 render_screen_show#29 render_screen_show#13 ] +[ render_screen_render#17 render_screen_render#33 render_screen_render#11 ] +[ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] [ render_score::screen#2 ] [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] [ render_bcd::offset#6 ] [ render_bcd::only_low#6 ] [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] -[ current_ypos#9 current_ypos#86 current_ypos#87 ] -[ render_screen_render#30 render_screen_render#64 ] -[ current_xpos#47 current_xpos#112 current_xpos#113 ] -[ current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 ] -[ current_piece_char#64 current_piece_char#90 current_piece_char#91 ] +[ current_ypos#11 current_ypos#99 current_ypos#100 ] +[ render_screen_render#30 render_screen_render#68 ] +[ current_xpos#57 current_xpos#125 current_xpos#126 ] +[ current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 ] +[ current_piece_char#75 current_piece_char#103 current_piece_char#104 ] [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] [ render_moving::l#4 render_moving::l#1 ] [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 ] [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] [ render_moving::c#2 render_moving::c#1 ] -[ render_screen_render#21 render_screen_render#65 ] +[ render_screen_render#21 render_screen_render#69 ] [ render_playfield::l#2 render_playfield::l#1 ] [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] [ render_playfield::c#2 render_playfield::c#1 ] -[ play_move_rotate::return#1 ] +[ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] +[ play_move_rotate::return#2 ] [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -[ current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 ] -[ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -[ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] -[ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] +[ current_piece#16 current_piece#89 current_piece#90 current_piece#91 current_piece#92 current_piece#93 ] +[ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +[ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] +[ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] [ play_collision::l#6 play_collision::l#1 ] [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] [ play_collision::c#2 play_collision::c#1 ] -[ play_collision::return#14 ] -[ play_move_leftright::return#1 ] +[ play_collision::return#15 ] +[ play_move_leftright::return#2 ] [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -[ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] -[ lines_bcd#20 lines_bcd#13 lines_bcd#15 lines_bcd#11 lines_bcd#23 ] -[ score_bcd#20 score_bcd#12 score_bcd#14 score_bcd#10 score_bcd#23 ] -[ level#24 level#14 level#19 level#12 level#16 ] -[ current_movedown_slow#31 current_movedown_slow#19 current_movedown_slow#12 current_movedown_slow#1 current_movedown_slow#17 current_movedown_slow#60 current_movedown_slow#8 ] -[ level_bcd#25 level_bcd#15 level_bcd#20 level_bcd#13 level_bcd#55 level_bcd#17 level_bcd#6 ] -[ current_piece#20 current_piece#80 current_piece#16 current_piece#73 current_piece#10 ] -[ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] -[ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] -[ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] -[ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] -[ play_move_down::return#2 ] +[ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 ] +[ lines_bcd#27 lines_bcd#17 lines_bcd#19 lines_bcd#15 lines_bcd#30 ] +[ score_bcd#27 score_bcd#16 score_bcd#18 score_bcd#14 score_bcd#30 ] +[ level#31 level#18 level#10 level#16 level#20 ] +[ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#68 current_movedown_slow#10 ] +[ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#63 level_bcd#21 level_bcd#8 ] +[ current_piece#27 current_piece#94 current_piece#20 current_piece#14 current_piece#88 ] +[ current_piece_char#27 current_piece_char#19 current_piece_char#14 current_piece_char#16 ] +[ current_orientation#36 current_orientation#12 current_orientation#16 current_orientation#19 current_orientation#24 current_orientation#7 ] +[ current_piece_gfx#33 current_piece_gfx#105 current_piece_gfx#16 current_piece_gfx#21 current_piece_gfx#18 current_piece_gfx#19 current_piece_gfx#6 ] +[ current_xpos#41 current_xpos#115 current_xpos#17 current_xpos#28 current_xpos#20 current_xpos#24 current_xpos#7 current_xpos#5 ] +[ play_move_down::return#3 ] +[ game_over#69 game_over#26 game_over#19 game_over#14 game_over#15 ] [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] [ play_increase_level::b#2 play_increase_level::b#1 ] [ play_remove_lines::y#8 play_remove_lines::y#1 ] @@ -10790,27 +11750,18 @@ Complete equivalence classes [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] -[ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] -[ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] +[ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] [ render_screen_showing#0 ] [ irq_raster_next#0 ] [ irq_sprite_ypos#0 ] [ irq_sprite_ptr#0 ] [ irq_cnt#0 ] +[ main::$9 ] [ keyboard_event_get::return#3 ] [ main::key_event#0 ] -[ play_move_down::key_event#0 ] -[ play_move_down::return#3 ] -[ main::$12 ] +[ play_movement::key_event#0 ] +[ play_movement::return#3 ] [ main::render#1 ] -[ play_move_leftright::key_event#0 ] -[ play_move_leftright::return#4 ] -[ main::$13 ] -[ main::render#2 ] -[ play_move_rotate::key_event#0 ] -[ play_move_rotate::return#4 ] -[ main::$14 ] -[ main::render#3 ] [ render_bcd::$3 ] [ render_bcd::$4 ] [ render_bcd::$5 ] @@ -10821,15 +11772,25 @@ Complete equivalence classes [ render_moving::current_cell#0 ] [ render_playfield::$2 ] [ render_playfield::$3 ] +[ play_move_down::key_event#0 ] +[ play_move_down::return#0 ] +[ play_movement::$0 ] +[ play_move_leftright::key_event#0 ] +[ play_move_leftright::return#0 ] +[ play_movement::$3 ] +[ play_movement::render#2 ] +[ play_move_rotate::key_event#0 ] +[ play_move_rotate::return#0 ] +[ play_movement::$4 ] [ play_move_rotate::$2 ] -[ play_collision::return#13 ] +[ play_collision::return#14 ] [ play_move_rotate::$6 ] [ play_move_rotate::$4 ] [ play_collision::piece_gfx#0 ] [ play_collision::playfield_line#0 ] [ play_collision::i#1 ] [ play_collision::$7 ] -[ play_collision::return#12 ] +[ play_collision::return#13 ] [ play_move_leftright::$4 ] [ play_collision::return#1 ] [ play_move_leftright::$8 ] @@ -10841,6 +11802,8 @@ Complete equivalence classes [ play_move_down::removed#0 ] [ play_update_score::removed#0 ] [ play_spawn_current::$3 ] +[ play_collision::return#10 ] +[ play_spawn_current::$5 ] [ sid_rnd::return#2 ] [ play_spawn_current::$1 ] [ sid_rnd::return#0 ] @@ -10883,209 +11846,220 @@ Complete equivalence classes [ render_init::$13 ] [ render_init::$14 ] [ sprites_irq::ypos#0 ] +[ sprites_irq::$0 ] +[ sprites_irq::raster_sprite_gfx_modify#0 ] [ sprites_irq::ptr#0 ] [ sprites_irq::ptr#3 ] [ sprites_irq::ptr#4 ] [ irq_cnt#1 ] +[ irq_sprite_ypos#3 ] +[ irq_sprite_ptr#3 ] +[ irq_cnt#2 ] [ irq_sprite_ypos#2 ] [ irq_sprite_ptr#2 ] -[ sprites_irq::$4 ] -[ irq_cnt#14 ] [ irq_sprite_ypos#1 ] [ irq_sprite_ptr#1 ] [ sprites_irq::ptr#1 ] [ sprites_irq::ptr#2 ] -Allocated zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] -Allocated zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#11 ] -Allocated zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] +Allocated zp ZP_BYTE:2 [ render_screen_show#17 render_screen_show#29 render_screen_show#13 ] +Allocated zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#33 render_screen_render#11 ] +Allocated zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] Allocated zp ZP_WORD:5 [ render_score::screen#2 ] Allocated zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] Allocated zp ZP_WORD:9 [ render_bcd::offset#6 ] Allocated zp ZP_BYTE:11 [ render_bcd::only_low#6 ] Allocated zp ZP_BYTE:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] Allocated zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] -Allocated zp ZP_BYTE:15 [ current_ypos#9 current_ypos#86 current_ypos#87 ] -Allocated zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#64 ] -Allocated zp ZP_BYTE:17 [ current_xpos#47 current_xpos#112 current_xpos#113 ] -Allocated zp ZP_WORD:18 [ current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 ] -Allocated zp ZP_BYTE:20 [ current_piece_char#64 current_piece_char#90 current_piece_char#91 ] +Allocated zp ZP_BYTE:15 [ current_ypos#11 current_ypos#99 current_ypos#100 ] +Allocated zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#68 ] +Allocated zp ZP_BYTE:17 [ current_xpos#57 current_xpos#125 current_xpos#126 ] +Allocated zp ZP_WORD:18 [ current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 ] +Allocated zp ZP_BYTE:20 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 ] Allocated zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] Allocated zp ZP_BYTE:22 [ render_moving::l#4 render_moving::l#1 ] Allocated zp ZP_BYTE:23 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 ] Allocated zp ZP_BYTE:24 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] Allocated zp ZP_BYTE:25 [ render_moving::c#2 render_moving::c#1 ] -Allocated zp ZP_BYTE:26 [ render_screen_render#21 render_screen_render#65 ] +Allocated zp ZP_BYTE:26 [ render_screen_render#21 render_screen_render#69 ] Allocated zp ZP_BYTE:27 [ render_playfield::l#2 render_playfield::l#1 ] Allocated zp ZP_BYTE:28 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Allocated zp ZP_WORD:29 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] Allocated zp ZP_BYTE:31 [ render_playfield::c#2 render_playfield::c#1 ] -Allocated zp ZP_BYTE:32 [ play_move_rotate::return#1 ] -Allocated zp ZP_BYTE:33 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Allocated zp ZP_WORD:34 [ current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 ] -Allocated zp ZP_BYTE:36 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Allocated zp ZP_BYTE:37 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] -Allocated zp ZP_BYTE:38 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] -Allocated zp ZP_BYTE:39 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] -Allocated zp ZP_BYTE:40 [ play_collision::l#6 play_collision::l#1 ] -Allocated zp ZP_BYTE:41 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -Allocated zp ZP_BYTE:42 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -Allocated zp ZP_BYTE:43 [ play_collision::c#2 play_collision::c#1 ] -Allocated zp ZP_BYTE:44 [ play_collision::return#14 ] -Allocated zp ZP_BYTE:45 [ play_move_leftright::return#1 ] -Allocated zp ZP_BYTE:46 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -Allocated zp ZP_BYTE:47 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] -Allocated zp ZP_WORD:48 [ lines_bcd#20 lines_bcd#13 lines_bcd#15 lines_bcd#11 lines_bcd#23 ] -Allocated zp ZP_DWORD:50 [ score_bcd#20 score_bcd#12 score_bcd#14 score_bcd#10 score_bcd#23 ] -Allocated zp ZP_BYTE:54 [ level#24 level#14 level#19 level#12 level#16 ] -Allocated zp ZP_BYTE:55 [ current_movedown_slow#31 current_movedown_slow#19 current_movedown_slow#12 current_movedown_slow#1 current_movedown_slow#17 current_movedown_slow#60 current_movedown_slow#8 ] -Allocated zp ZP_BYTE:56 [ level_bcd#25 level_bcd#15 level_bcd#20 level_bcd#13 level_bcd#55 level_bcd#17 level_bcd#6 ] -Allocated zp ZP_WORD:57 [ current_piece#20 current_piece#80 current_piece#16 current_piece#73 current_piece#10 ] -Allocated zp ZP_BYTE:59 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] -Allocated zp ZP_WORD:60 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] -Allocated zp ZP_BYTE:62 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] -Allocated zp ZP_BYTE:63 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] -Allocated zp ZP_BYTE:64 [ play_move_down::return#2 ] -Allocated zp ZP_BYTE:65 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Allocated zp ZP_BYTE:66 [ play_increase_level::b#2 play_increase_level::b#1 ] -Allocated zp ZP_BYTE:67 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Allocated zp ZP_BYTE:68 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] -Allocated zp ZP_BYTE:69 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] -Allocated zp ZP_BYTE:70 [ play_remove_lines::x#2 play_remove_lines::x#1 ] -Allocated zp ZP_BYTE:71 [ play_remove_lines::full#4 play_remove_lines::full#2 ] -Allocated zp ZP_BYTE:72 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] -Allocated zp ZP_BYTE:73 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Allocated zp ZP_BYTE:74 [ play_lock_current::l#6 play_lock_current::l#1 ] -Allocated zp ZP_BYTE:75 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -Allocated zp ZP_BYTE:76 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] -Allocated zp ZP_BYTE:77 [ play_lock_current::c#2 play_lock_current::c#1 ] -Allocated zp ZP_BYTE:78 [ keyboard_event_pressed::keycode#5 ] -Allocated zp ZP_BYTE:79 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Allocated zp ZP_BYTE:80 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Allocated zp ZP_BYTE:81 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] -Allocated zp ZP_BYTE:82 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Allocated zp ZP_BYTE:83 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] -Allocated zp ZP_BYTE:84 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] -Allocated zp ZP_BYTE:85 [ render_show::d018val#3 ] -Allocated zp ZP_BYTE:86 [ play_init::j#2 play_init::j#1 ] -Allocated zp ZP_WORD:87 [ play_init::pli#2 play_init::pli#1 ] -Allocated zp ZP_BYTE:89 [ play_init::idx#2 play_init::idx#1 ] -Allocated zp ZP_BYTE:90 [ play_init::b#2 play_init::b#1 ] -Allocated zp ZP_BYTE:91 [ sprites_init::s#2 sprites_init::s#1 ] -Allocated zp ZP_BYTE:92 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Allocated zp ZP_BYTE:93 [ render_init::i#2 render_init::i#1 ] -Allocated zp ZP_WORD:94 [ render_init::li_1#2 render_init::li_1#1 ] -Allocated zp ZP_WORD:96 [ render_init::li_2#2 render_init::li_2#1 ] -Allocated zp ZP_BYTE:98 [ render_screen_original::y#6 render_screen_original::y#1 ] -Allocated zp ZP_WORD:99 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] -Allocated zp ZP_WORD:101 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] -Allocated zp ZP_WORD:103 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] -Allocated zp ZP_WORD:105 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] -Allocated zp ZP_BYTE:107 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] -Allocated zp ZP_BYTE:108 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] -Allocated zp ZP_BYTE:109 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] -Allocated zp ZP_BYTE:110 [ render_screen_showing#0 ] -Allocated zp ZP_BYTE:111 [ irq_raster_next#0 ] -Allocated zp ZP_BYTE:112 [ irq_sprite_ypos#0 ] -Allocated zp ZP_BYTE:113 [ irq_sprite_ptr#0 ] -Allocated zp ZP_BYTE:114 [ irq_cnt#0 ] -Allocated zp ZP_BYTE:115 [ keyboard_event_get::return#3 ] -Allocated zp ZP_BYTE:116 [ main::key_event#0 ] -Allocated zp ZP_BYTE:117 [ play_move_down::key_event#0 ] -Allocated zp ZP_BYTE:118 [ play_move_down::return#3 ] -Allocated zp ZP_BYTE:119 [ main::$12 ] -Allocated zp ZP_BYTE:120 [ main::render#1 ] -Allocated zp ZP_BYTE:121 [ play_move_leftright::key_event#0 ] -Allocated zp ZP_BYTE:122 [ play_move_leftright::return#4 ] -Allocated zp ZP_BYTE:123 [ main::$13 ] -Allocated zp ZP_BYTE:124 [ main::render#2 ] -Allocated zp ZP_BYTE:125 [ play_move_rotate::key_event#0 ] -Allocated zp ZP_BYTE:126 [ play_move_rotate::return#4 ] -Allocated zp ZP_BYTE:127 [ main::$14 ] -Allocated zp ZP_BYTE:128 [ main::render#3 ] -Allocated zp ZP_BYTE:129 [ render_bcd::$3 ] -Allocated zp ZP_BYTE:130 [ render_bcd::$4 ] -Allocated zp ZP_BYTE:131 [ render_bcd::$5 ] -Allocated zp ZP_BYTE:132 [ render_bcd::$6 ] -Allocated zp ZP_WORD:133 [ render_bcd::screen_pos#1 ] -Allocated zp ZP_BYTE:135 [ render_moving::$5 ] -Allocated zp ZP_WORD:136 [ render_moving::screen_line#0 ] -Allocated zp ZP_BYTE:138 [ render_moving::current_cell#0 ] -Allocated zp ZP_BYTE:139 [ render_playfield::$2 ] -Allocated zp ZP_BYTE:140 [ render_playfield::$3 ] -Allocated zp ZP_BYTE:141 [ play_move_rotate::$2 ] -Allocated zp ZP_BYTE:142 [ play_collision::return#13 ] -Allocated zp ZP_BYTE:143 [ play_move_rotate::$6 ] -Allocated zp ZP_BYTE:144 [ play_move_rotate::$4 ] -Allocated zp ZP_WORD:145 [ play_collision::piece_gfx#0 ] -Allocated zp ZP_WORD:147 [ play_collision::playfield_line#0 ] -Allocated zp ZP_BYTE:149 [ play_collision::i#1 ] -Allocated zp ZP_BYTE:150 [ play_collision::$7 ] -Allocated zp ZP_BYTE:151 [ play_collision::return#12 ] -Allocated zp ZP_BYTE:152 [ play_move_leftright::$4 ] -Allocated zp ZP_BYTE:153 [ play_collision::return#1 ] -Allocated zp ZP_BYTE:154 [ play_move_leftright::$8 ] -Allocated zp ZP_BYTE:155 [ keyboard_event_pressed::return#12 ] -Allocated zp ZP_BYTE:156 [ play_move_down::$2 ] -Allocated zp ZP_BYTE:157 [ play_collision::return#0 ] -Allocated zp ZP_BYTE:158 [ play_move_down::$12 ] -Allocated zp ZP_BYTE:159 [ play_remove_lines::return#0 ] -Allocated zp ZP_BYTE:160 [ play_move_down::removed#0 ] -Allocated zp ZP_BYTE:161 [ play_update_score::removed#0 ] -Allocated zp ZP_BYTE:162 [ play_spawn_current::$3 ] -Allocated zp ZP_BYTE:163 [ sid_rnd::return#2 ] -Allocated zp ZP_BYTE:164 [ play_spawn_current::$1 ] -Allocated zp ZP_BYTE:165 [ sid_rnd::return#0 ] -Allocated zp ZP_BYTE:166 [ play_update_score::$2 ] -Allocated zp ZP_BYTE:167 [ play_update_score::lines_before#0 ] -Allocated zp ZP_BYTE:168 [ play_update_score::$4 ] -Allocated zp ZP_DWORD:169 [ play_update_score::add_bcd#0 ] -Allocated zp ZP_BYTE:173 [ play_update_score::$5 ] -Allocated zp ZP_BYTE:174 [ play_update_score::lines_after#0 ] -Allocated zp ZP_BYTE:175 [ play_increase_level::$1 ] -Allocated zp ZP_BYTE:176 [ play_increase_level::b4#0 ] -Allocated zp ZP_BYTE:177 [ play_remove_lines::c#0 ] -Allocated zp ZP_WORD:178 [ play_lock_current::playfield_line#0 ] -Allocated zp ZP_BYTE:180 [ play_lock_current::i#1 ] -Allocated zp ZP_BYTE:181 [ keyboard_event_pressed::$0 ] -Allocated zp ZP_BYTE:182 [ keyboard_event_pressed::row_bits#0 ] -Allocated zp ZP_BYTE:183 [ keyboard_event_pressed::$1 ] -Allocated zp ZP_BYTE:184 [ keyboard_event_pressed::return#11 ] -Allocated zp ZP_BYTE:185 [ keyboard_matrix_read::rowid#0 ] -Allocated zp ZP_BYTE:186 [ keyboard_matrix_read::return#2 ] -Allocated zp ZP_BYTE:187 [ keyboard_event_scan::row_scan#0 ] -Allocated zp ZP_BYTE:188 [ keyboard_event_pressed::return#0 ] -Allocated zp ZP_BYTE:189 [ keyboard_event_scan::$14 ] -Allocated zp ZP_BYTE:190 [ keyboard_event_pressed::return#1 ] -Allocated zp ZP_BYTE:191 [ keyboard_event_scan::$18 ] -Allocated zp ZP_BYTE:192 [ keyboard_event_pressed::return#2 ] -Allocated zp ZP_BYTE:193 [ keyboard_event_scan::$22 ] -Allocated zp ZP_BYTE:194 [ keyboard_event_pressed::return#10 ] -Allocated zp ZP_BYTE:195 [ keyboard_event_scan::$26 ] -Allocated zp ZP_BYTE:196 [ keyboard_modifiers#5 ] -Allocated zp ZP_BYTE:197 [ keyboard_event_scan::$3 ] -Allocated zp ZP_BYTE:198 [ keyboard_event_scan::$4 ] -Allocated zp ZP_BYTE:199 [ keyboard_event_scan::event_type#0 ] -Allocated zp ZP_BYTE:200 [ keyboard_event_scan::$11 ] -Allocated zp ZP_BYTE:201 [ keyboard_matrix_read::return#0 ] -Allocated zp ZP_BYTE:202 [ render_screen_showing#1 ] -Allocated zp ZP_BYTE:203 [ play_init::$1 ] -Allocated zp ZP_BYTE:204 [ play_init::b4#0 ] -Allocated zp ZP_BYTE:205 [ sprites_init::s2#0 ] -Allocated zp ZP_BYTE:206 [ render_init::$13 ] -Allocated zp ZP_BYTE:207 [ render_init::$14 ] -Allocated zp ZP_BYTE:208 [ sprites_irq::ypos#0 ] -Allocated zp ZP_BYTE:209 [ sprites_irq::ptr#0 ] -Allocated zp ZP_BYTE:210 [ sprites_irq::ptr#3 ] -Allocated zp ZP_BYTE:211 [ sprites_irq::ptr#4 ] -Allocated zp ZP_BYTE:212 [ irq_cnt#1 ] -Allocated zp ZP_BYTE:213 [ irq_sprite_ypos#2 ] -Allocated zp ZP_BYTE:214 [ irq_sprite_ptr#2 ] -Allocated zp ZP_BYTE:215 [ sprites_irq::$4 ] -Allocated zp ZP_BYTE:216 [ irq_cnt#14 ] -Allocated zp ZP_BYTE:217 [ irq_sprite_ypos#1 ] -Allocated zp ZP_BYTE:218 [ irq_sprite_ptr#1 ] -Allocated zp ZP_BYTE:219 [ sprites_irq::ptr#1 ] -Allocated zp ZP_BYTE:220 [ sprites_irq::ptr#2 ] +Allocated zp ZP_BYTE:32 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] +Allocated zp ZP_BYTE:33 [ play_move_rotate::return#2 ] +Allocated zp ZP_BYTE:34 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Allocated zp ZP_WORD:35 [ current_piece#16 current_piece#89 current_piece#90 current_piece#91 current_piece#92 current_piece#93 ] +Allocated zp ZP_BYTE:37 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +Allocated zp ZP_BYTE:38 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] +Allocated zp ZP_BYTE:39 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] +Allocated zp ZP_BYTE:40 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] +Allocated zp ZP_BYTE:41 [ play_collision::l#6 play_collision::l#1 ] +Allocated zp ZP_BYTE:42 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Allocated zp ZP_BYTE:43 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +Allocated zp ZP_BYTE:44 [ play_collision::c#2 play_collision::c#1 ] +Allocated zp ZP_BYTE:45 [ play_collision::return#15 ] +Allocated zp ZP_BYTE:46 [ play_move_leftright::return#2 ] +Allocated zp ZP_BYTE:47 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] +Allocated zp ZP_BYTE:48 [ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 ] +Allocated zp ZP_WORD:49 [ lines_bcd#27 lines_bcd#17 lines_bcd#19 lines_bcd#15 lines_bcd#30 ] +Allocated zp ZP_DWORD:51 [ score_bcd#27 score_bcd#16 score_bcd#18 score_bcd#14 score_bcd#30 ] +Allocated zp ZP_BYTE:55 [ level#31 level#18 level#10 level#16 level#20 ] +Allocated zp ZP_BYTE:56 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#68 current_movedown_slow#10 ] +Allocated zp ZP_BYTE:57 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#63 level_bcd#21 level_bcd#8 ] +Allocated zp ZP_WORD:58 [ current_piece#27 current_piece#94 current_piece#20 current_piece#14 current_piece#88 ] +Allocated zp ZP_BYTE:60 [ current_piece_char#27 current_piece_char#19 current_piece_char#14 current_piece_char#16 ] +Allocated zp ZP_BYTE:61 [ current_orientation#36 current_orientation#12 current_orientation#16 current_orientation#19 current_orientation#24 current_orientation#7 ] +Allocated zp ZP_WORD:62 [ current_piece_gfx#33 current_piece_gfx#105 current_piece_gfx#16 current_piece_gfx#21 current_piece_gfx#18 current_piece_gfx#19 current_piece_gfx#6 ] +Allocated zp ZP_BYTE:64 [ current_xpos#41 current_xpos#115 current_xpos#17 current_xpos#28 current_xpos#20 current_xpos#24 current_xpos#7 current_xpos#5 ] +Allocated zp ZP_BYTE:65 [ play_move_down::return#3 ] +Allocated zp ZP_BYTE:66 [ game_over#69 game_over#26 game_over#19 game_over#14 game_over#15 ] +Allocated zp ZP_BYTE:67 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Allocated zp ZP_BYTE:68 [ play_increase_level::b#2 play_increase_level::b#1 ] +Allocated zp ZP_BYTE:69 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Allocated zp ZP_BYTE:70 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] +Allocated zp ZP_BYTE:71 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] +Allocated zp ZP_BYTE:72 [ play_remove_lines::x#2 play_remove_lines::x#1 ] +Allocated zp ZP_BYTE:73 [ play_remove_lines::full#4 play_remove_lines::full#2 ] +Allocated zp ZP_BYTE:74 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] +Allocated zp ZP_BYTE:75 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Allocated zp ZP_BYTE:76 [ play_lock_current::l#6 play_lock_current::l#1 ] +Allocated zp ZP_BYTE:77 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +Allocated zp ZP_BYTE:78 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] +Allocated zp ZP_BYTE:79 [ play_lock_current::c#2 play_lock_current::c#1 ] +Allocated zp ZP_BYTE:80 [ keyboard_event_pressed::keycode#5 ] +Allocated zp ZP_BYTE:81 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Allocated zp ZP_BYTE:82 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Allocated zp ZP_BYTE:83 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] +Allocated zp ZP_BYTE:84 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Allocated zp ZP_BYTE:85 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Allocated zp ZP_BYTE:86 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Allocated zp ZP_BYTE:87 [ render_show::d018val#3 ] +Allocated zp ZP_BYTE:88 [ play_init::j#2 play_init::j#1 ] +Allocated zp ZP_WORD:89 [ play_init::pli#2 play_init::pli#1 ] +Allocated zp ZP_BYTE:91 [ play_init::idx#2 play_init::idx#1 ] +Allocated zp ZP_BYTE:92 [ play_init::b#2 play_init::b#1 ] +Allocated zp ZP_BYTE:93 [ sprites_init::s#2 sprites_init::s#1 ] +Allocated zp ZP_BYTE:94 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Allocated zp ZP_BYTE:95 [ render_init::i#2 render_init::i#1 ] +Allocated zp ZP_WORD:96 [ render_init::li_1#2 render_init::li_1#1 ] +Allocated zp ZP_WORD:98 [ render_init::li_2#2 render_init::li_2#1 ] +Allocated zp ZP_BYTE:100 [ render_screen_original::y#6 render_screen_original::y#1 ] +Allocated zp ZP_WORD:101 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] +Allocated zp ZP_WORD:103 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] +Allocated zp ZP_WORD:105 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] +Allocated zp ZP_WORD:107 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] +Allocated zp ZP_BYTE:109 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] +Allocated zp ZP_BYTE:110 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] +Allocated zp ZP_BYTE:111 [ render_screen_showing#0 ] +Allocated zp ZP_BYTE:112 [ irq_raster_next#0 ] +Allocated zp ZP_BYTE:113 [ irq_sprite_ypos#0 ] +Allocated zp ZP_BYTE:114 [ irq_sprite_ptr#0 ] +Allocated zp ZP_BYTE:115 [ irq_cnt#0 ] +Allocated zp ZP_BYTE:116 [ main::$9 ] +Allocated zp ZP_BYTE:117 [ keyboard_event_get::return#3 ] +Allocated zp ZP_BYTE:118 [ main::key_event#0 ] +Allocated zp ZP_BYTE:119 [ play_movement::key_event#0 ] +Allocated zp ZP_BYTE:120 [ play_movement::return#3 ] +Allocated zp ZP_BYTE:121 [ main::render#1 ] +Allocated zp ZP_BYTE:122 [ render_bcd::$3 ] +Allocated zp ZP_BYTE:123 [ render_bcd::$4 ] +Allocated zp ZP_BYTE:124 [ render_bcd::$5 ] +Allocated zp ZP_BYTE:125 [ render_bcd::$6 ] +Allocated zp ZP_WORD:126 [ render_bcd::screen_pos#1 ] +Allocated zp ZP_BYTE:128 [ render_moving::$5 ] +Allocated zp ZP_WORD:129 [ render_moving::screen_line#0 ] +Allocated zp ZP_BYTE:131 [ render_moving::current_cell#0 ] +Allocated zp ZP_BYTE:132 [ render_playfield::$2 ] +Allocated zp ZP_BYTE:133 [ render_playfield::$3 ] +Allocated zp ZP_BYTE:134 [ play_move_down::key_event#0 ] +Allocated zp ZP_BYTE:135 [ play_move_down::return#0 ] +Allocated zp ZP_BYTE:136 [ play_movement::$0 ] +Allocated zp ZP_BYTE:137 [ play_move_leftright::key_event#0 ] +Allocated zp ZP_BYTE:138 [ play_move_leftright::return#0 ] +Allocated zp ZP_BYTE:139 [ play_movement::$3 ] +Allocated zp ZP_BYTE:140 [ play_movement::render#2 ] +Allocated zp ZP_BYTE:141 [ play_move_rotate::key_event#0 ] +Allocated zp ZP_BYTE:142 [ play_move_rotate::return#0 ] +Allocated zp ZP_BYTE:143 [ play_movement::$4 ] +Allocated zp ZP_BYTE:144 [ play_move_rotate::$2 ] +Allocated zp ZP_BYTE:145 [ play_collision::return#14 ] +Allocated zp ZP_BYTE:146 [ play_move_rotate::$6 ] +Allocated zp ZP_BYTE:147 [ play_move_rotate::$4 ] +Allocated zp ZP_WORD:148 [ play_collision::piece_gfx#0 ] +Allocated zp ZP_WORD:150 [ play_collision::playfield_line#0 ] +Allocated zp ZP_BYTE:152 [ play_collision::i#1 ] +Allocated zp ZP_BYTE:153 [ play_collision::$7 ] +Allocated zp ZP_BYTE:154 [ play_collision::return#13 ] +Allocated zp ZP_BYTE:155 [ play_move_leftright::$4 ] +Allocated zp ZP_BYTE:156 [ play_collision::return#1 ] +Allocated zp ZP_BYTE:157 [ play_move_leftright::$8 ] +Allocated zp ZP_BYTE:158 [ keyboard_event_pressed::return#12 ] +Allocated zp ZP_BYTE:159 [ play_move_down::$2 ] +Allocated zp ZP_BYTE:160 [ play_collision::return#0 ] +Allocated zp ZP_BYTE:161 [ play_move_down::$12 ] +Allocated zp ZP_BYTE:162 [ play_remove_lines::return#0 ] +Allocated zp ZP_BYTE:163 [ play_move_down::removed#0 ] +Allocated zp ZP_BYTE:164 [ play_update_score::removed#0 ] +Allocated zp ZP_BYTE:165 [ play_spawn_current::$3 ] +Allocated zp ZP_BYTE:166 [ play_collision::return#10 ] +Allocated zp ZP_BYTE:167 [ play_spawn_current::$5 ] +Allocated zp ZP_BYTE:168 [ sid_rnd::return#2 ] +Allocated zp ZP_BYTE:169 [ play_spawn_current::$1 ] +Allocated zp ZP_BYTE:170 [ sid_rnd::return#0 ] +Allocated zp ZP_BYTE:171 [ play_update_score::$2 ] +Allocated zp ZP_BYTE:172 [ play_update_score::lines_before#0 ] +Allocated zp ZP_BYTE:173 [ play_update_score::$4 ] +Allocated zp ZP_DWORD:174 [ play_update_score::add_bcd#0 ] +Allocated zp ZP_BYTE:178 [ play_update_score::$5 ] +Allocated zp ZP_BYTE:179 [ play_update_score::lines_after#0 ] +Allocated zp ZP_BYTE:180 [ play_increase_level::$1 ] +Allocated zp ZP_BYTE:181 [ play_increase_level::b4#0 ] +Allocated zp ZP_BYTE:182 [ play_remove_lines::c#0 ] +Allocated zp ZP_WORD:183 [ play_lock_current::playfield_line#0 ] +Allocated zp ZP_BYTE:185 [ play_lock_current::i#1 ] +Allocated zp ZP_BYTE:186 [ keyboard_event_pressed::$0 ] +Allocated zp ZP_BYTE:187 [ keyboard_event_pressed::row_bits#0 ] +Allocated zp ZP_BYTE:188 [ keyboard_event_pressed::$1 ] +Allocated zp ZP_BYTE:189 [ keyboard_event_pressed::return#11 ] +Allocated zp ZP_BYTE:190 [ keyboard_matrix_read::rowid#0 ] +Allocated zp ZP_BYTE:191 [ keyboard_matrix_read::return#2 ] +Allocated zp ZP_BYTE:192 [ keyboard_event_scan::row_scan#0 ] +Allocated zp ZP_BYTE:193 [ keyboard_event_pressed::return#0 ] +Allocated zp ZP_BYTE:194 [ keyboard_event_scan::$14 ] +Allocated zp ZP_BYTE:195 [ keyboard_event_pressed::return#1 ] +Allocated zp ZP_BYTE:196 [ keyboard_event_scan::$18 ] +Allocated zp ZP_BYTE:197 [ keyboard_event_pressed::return#2 ] +Allocated zp ZP_BYTE:198 [ keyboard_event_scan::$22 ] +Allocated zp ZP_BYTE:199 [ keyboard_event_pressed::return#10 ] +Allocated zp ZP_BYTE:200 [ keyboard_event_scan::$26 ] +Allocated zp ZP_BYTE:201 [ keyboard_modifiers#5 ] +Allocated zp ZP_BYTE:202 [ keyboard_event_scan::$3 ] +Allocated zp ZP_BYTE:203 [ keyboard_event_scan::$4 ] +Allocated zp ZP_BYTE:204 [ keyboard_event_scan::event_type#0 ] +Allocated zp ZP_BYTE:205 [ keyboard_event_scan::$11 ] +Allocated zp ZP_BYTE:206 [ keyboard_matrix_read::return#0 ] +Allocated zp ZP_BYTE:207 [ render_screen_showing#1 ] +Allocated zp ZP_BYTE:208 [ play_init::$1 ] +Allocated zp ZP_BYTE:209 [ play_init::b4#0 ] +Allocated zp ZP_BYTE:210 [ sprites_init::s2#0 ] +Allocated zp ZP_BYTE:211 [ render_init::$13 ] +Allocated zp ZP_BYTE:212 [ render_init::$14 ] +Allocated zp ZP_BYTE:213 [ sprites_irq::ypos#0 ] +Allocated zp ZP_BYTE:214 [ sprites_irq::$0 ] +Allocated zp ZP_BYTE:215 [ sprites_irq::raster_sprite_gfx_modify#0 ] +Allocated zp ZP_BYTE:216 [ sprites_irq::ptr#0 ] +Allocated zp ZP_BYTE:217 [ sprites_irq::ptr#3 ] +Allocated zp ZP_BYTE:218 [ sprites_irq::ptr#4 ] +Allocated zp ZP_BYTE:219 [ irq_cnt#1 ] +Allocated zp ZP_BYTE:220 [ irq_sprite_ypos#3 ] +Allocated zp ZP_BYTE:221 [ irq_sprite_ptr#3 ] +Allocated zp ZP_BYTE:222 [ irq_cnt#2 ] +Allocated zp ZP_BYTE:223 [ irq_sprite_ypos#2 ] +Allocated zp ZP_BYTE:224 [ irq_sprite_ptr#2 ] +Allocated zp ZP_BYTE:225 [ irq_sprite_ypos#1 ] +Allocated zp ZP_BYTE:226 [ irq_sprite_ptr#1 ] +Allocated zp ZP_BYTE:227 [ sprites_irq::ptr#1 ] +Allocated zp ZP_BYTE:228 [ sprites_irq::ptr#2 ] INITIAL ASM //SEG0 Basic Upstart @@ -11157,7 +12131,7 @@ INITIAL ASM .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a - .const IRQ_RASTER_FIRST = $31 + .const SPRITES_FIRST_YPOS = $31 .const current_movedown_fast = 2 .const COLLISION_NONE = 0 .const COLLISION_PLAYFIELD = 1 @@ -11166,60 +12140,66 @@ INITIAL ASM .const COLLISION_RIGHT = 8 .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS .label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS + .const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13 .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 - .label keyboard_events_size = $54 - .label keyboard_modifiers = $51 - .label keyboard_modifiers_5 = $c4 - .label render_screen_showing = $6e - .label render_screen_showing_1 = $ca - .label irq_raster_next = $6f - .label irq_sprite_ypos = $70 - .label irq_sprite_ptr = $71 - .label irq_cnt = $72 - .label irq_cnt_1 = $d4 - .label irq_raster_next_1 = $6c - .label irq_sprite_ypos_1 = $d9 - .label irq_sprite_ptr_1 = $da - .label irq_raster_next_2 = $6c - .label irq_sprite_ypos_2 = $d5 - .label irq_sprite_ptr_2 = $d6 - .label current_movedown_slow = $37 - .label current_movedown_counter = 4 - .label current_ypos = $2f - .label current_piece_gfx = $3c - .label current_xpos = $3e - .label current_piece_char = $3f - .label current_orientation = $3b - .label level_bcd = $38 + .label keyboard_events_size = $56 + .label keyboard_modifiers = $53 + .label keyboard_modifiers_5 = $c9 + .label render_screen_showing = $6f + .label render_screen_showing_1 = $cf + .label irq_raster_next = $70 + .label irq_sprite_ypos = $71 + .label irq_sprite_ptr = $72 + .label irq_cnt = $73 + .label irq_cnt_1 = $db + .label irq_raster_next_1 = $6e + .label irq_sprite_ypos_1 = $e1 + .label irq_sprite_ptr_1 = $e2 + .label irq_cnt_2 = $de + .label irq_raster_next_2 = $6e + .label irq_sprite_ypos_2 = $df + .label irq_sprite_ptr_2 = $e0 + .label irq_raster_next_3 = $6e + .label irq_sprite_ypos_3 = $dc + .label irq_sprite_ptr_3 = $dd + .label irq_raster_next_4 = $6e + .label current_movedown_slow = $38 + .label current_ypos = $30 + .label current_xpos = $40 + .label current_orientation = $3d + .label current_piece_gfx = $3e + .label level_bcd = $39 + .label level = $37 .label render_screen_render = 3 .label render_screen_show = 2 - .label current_ypos_9 = $f - .label lines_bcd = $30 - .label score_bcd = $32 - .label level = $36 - .label current_piece = $39 - .label current_piece_12 = $22 + .label current_ypos_11 = $f + .label current_movedown_counter = 4 + .label lines_bcd = $31 + .label score_bcd = $33 + .label current_piece = $3a + .label current_piece_char = $3c + .label game_over = $42 + .label current_piece_16 = $23 .label render_screen_render_21 = $1a .label render_screen_render_30 = $10 - .label current_xpos_47 = $11 - .label irq_raster_next_13 = $6c - .label current_piece_gfx_53 = $12 - .label irq_cnt_14 = $d8 - .label current_piece_char_64 = $14 - .label current_ypos_86 = $f - .label current_ypos_87 = $f - .label render_screen_render_64 = $10 - .label current_xpos_112 = $11 - .label current_xpos_113 = $11 - .label current_piece_gfx_102 = $12 - .label current_piece_gfx_103 = $12 - .label current_piece_char_90 = $14 - .label current_piece_char_91 = $14 - .label render_screen_render_65 = $1a - .label current_piece_76 = $22 - .label current_piece_77 = $22 - .label current_piece_78 = $22 - .label current_piece_79 = $22 + .label current_xpos_57 = $11 + .label current_piece_gfx_62 = $12 + .label current_piece_char_75 = $14 + .label current_ypos_99 = $f + .label current_ypos_100 = $f + .label render_screen_render_68 = $10 + .label current_xpos_125 = $11 + .label current_xpos_126 = $11 + .label current_piece_gfx_115 = $12 + .label current_piece_gfx_116 = $12 + .label current_piece_char_103 = $14 + .label current_piece_char_104 = $14 + .label render_screen_render_69 = $1a + .label current_piece_89 = $23 + .label current_piece_90 = $23 + .label current_piece_91 = $23 + .label current_piece_92 = $23 + .label current_piece_93 = $23 //SEG2 @begin bbegin: jmp b14 @@ -11234,592 +12214,568 @@ b14: jmp b22 //SEG8 @22 b22: -//SEG9 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} +//SEG9 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} jmp b23 //SEG10 @23 b23: //SEG11 [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG12 [7] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 - lda #$32 +//SEG12 [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 + lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos //SEG13 [8] phi from @23 to toSpritePtr1 [phi:@23->toSpritePtr1] toSpritePtr1_from_b23: jmp toSpritePtr1 //SEG14 toSpritePtr1 toSpritePtr1: - jmp b37 -//SEG15 @37 -b37: -//SEG16 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 - lda #toSpritePtr1_return + jmp b38 +//SEG15 @38 +b38: +//SEG16 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 + lda #toSpritePtr1_return+3 sta irq_sprite_ptr //SEG17 [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt -//SEG18 [11] phi from @37 to @36 [phi:@37->@36] -b36_from_b37: - jmp b36 -//SEG19 @36 -b36: +//SEG18 [11] phi from @38 to @37 [phi:@38->@37] +b37_from_b38: + jmp b37 +//SEG19 @37 +b37: //SEG20 [12] call main -//SEG21 [14] phi from @36 to main [phi:@36->main] -main_from_b36: +//SEG21 [14] phi from @37 to main [phi:@37->main] +main_from_b37: jsr main -//SEG22 [13] phi from @36 to @end [phi:@36->@end] -bend_from_b36: +//SEG22 [13] phi from @37 to @end [phi:@37->@end] +bend_from_b37: jmp bend //SEG23 @end bend: //SEG24 main main: { - .label _12 = $77 - .label _13 = $7b - .label _14 = $7f - .label key_event = $74 - .label render = $78 - .label render_2 = $7c - .label render_3 = $80 + .label _9 = $74 + .label key_event = $76 + .label render = $79 //SEG25 [15] call sid_rnd_init jsr sid_rnd_init - jmp b15 - //SEG26 main::@15 - b15: + jmp b25 + //SEG26 main::@25 + b25: //SEG27 asm { sei } sei //SEG28 [17] call render_init - //SEG29 [454] phi from main::@15 to render_init [phi:main::@15->render_init] - render_init_from_b15: + //SEG29 [475] phi from main::@25 to render_init [phi:main::@25->render_init] + render_init_from_b25: jsr render_init - //SEG30 [18] phi from main::@15 to main::@16 [phi:main::@15->main::@16] - b16_from_b15: - jmp b16 - //SEG31 main::@16 - b16: + //SEG30 [18] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + b26_from_b25: + jmp b26 + //SEG31 main::@26 + b26: //SEG32 [19] call sprites_init jsr sprites_init - //SEG33 [20] phi from main::@16 to main::@17 [phi:main::@16->main::@17] - b17_from_b16: - jmp b17 - //SEG34 main::@17 - b17: + //SEG33 [20] phi from main::@26 to main::@27 [phi:main::@26->main::@27] + b27_from_b26: + jmp b27 + //SEG34 main::@27 + b27: //SEG35 [21] call sprites_irq_init jsr sprites_irq_init - //SEG36 [22] phi from main::@17 to main::@18 [phi:main::@17->main::@18] - b18_from_b17: - jmp b18 - //SEG37 main::@18 - b18: + //SEG36 [22] phi from main::@27 to main::@28 [phi:main::@27->main::@28] + b28_from_b27: + jmp b28 + //SEG37 main::@28 + b28: //SEG38 [23] call play_init - //SEG39 [413] phi from main::@18 to play_init [phi:main::@18->play_init] - play_init_from_b18: + //SEG39 [434] phi from main::@28 to play_init [phi:main::@28->play_init] + play_init_from_b28: jsr play_init - //SEG40 [24] phi from main::@18 to main::@19 [phi:main::@18->main::@19] - b19_from_b18: - jmp b19 - //SEG41 main::@19 - b19: + //SEG40 [24] phi from main::@28 to main::@29 [phi:main::@28->main::@29] + b29_from_b28: + jmp b29 + //SEG41 main::@29 + b29: //SEG42 [25] call play_spawn_current - //SEG43 [250] phi from main::@19 to play_spawn_current [phi:main::@19->play_spawn_current] - play_spawn_current_from_b19: + //SEG43 [262] phi from main::@29 to play_spawn_current [phi:main::@29->play_spawn_current] + play_spawn_current_from_b29: + //SEG44 [262] phi (byte) game_over#69 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#0] -- vbuz1=vbuc1 + lda #0 + sta game_over jsr play_spawn_current - //SEG44 [26] phi from main::@19 to main::@20 [phi:main::@19->main::@20] - b20_from_b19: - jmp b20 - //SEG45 main::@20 - b20: - //SEG46 [27] call render_playfield - //SEG47 [133] phi from main::@20 to render_playfield [phi:main::@20->render_playfield] - render_playfield_from_b20: - //SEG48 [133] phi (byte) render_screen_render#21 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@20->render_playfield#0] -- vbuz1=vbuc1 + //SEG45 [26] phi from main::@29 to main::@30 [phi:main::@29->main::@30] + b30_from_b29: + jmp b30 + //SEG46 main::@30 + b30: + //SEG47 [27] call render_playfield + //SEG48 [127] phi from main::@30 to render_playfield [phi:main::@30->render_playfield] + render_playfield_from_b30: + //SEG49 [127] phi (byte) render_screen_render#21 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@30->render_playfield#0] -- vbuz1=vbuc1 lda #$40 sta render_screen_render_21 jsr render_playfield - jmp b21 - //SEG49 main::@21 - b21: - //SEG50 [28] (byte~) current_ypos#86 ← (byte) current_ypos#18 -- vbuz1=vbuz2 + jmp b31 + //SEG50 main::@31 + b31: + //SEG51 [28] (byte~) current_ypos#99 ← (byte) current_ypos#22 -- vbuz1=vbuz2 lda current_ypos - sta current_ypos_86 - //SEG51 [29] (byte~) current_xpos#112 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + sta current_ypos_99 + //SEG52 [29] (byte~) current_xpos#125 ← (byte) current_xpos#28 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_112 - //SEG52 [30] (byte*~) current_piece_gfx#102 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 + sta current_xpos_125 + //SEG53 [30] (byte*~) current_piece_gfx#115 ← (byte*) current_piece_gfx#21 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_102 + sta current_piece_gfx_115 lda current_piece_gfx+1 - sta current_piece_gfx_102+1 - //SEG53 [31] (byte~) current_piece_char#90 ← (byte) current_piece_char#12 -- vbuz1=vbuz2 + sta current_piece_gfx_115+1 + //SEG54 [31] (byte~) current_piece_char#103 ← (byte) current_piece_char#16 -- vbuz1=vbuz2 lda current_piece_char - sta current_piece_char_90 - //SEG54 [32] call render_moving - //SEG55 [110] phi from main::@21 to render_moving [phi:main::@21->render_moving] - render_moving_from_b21: - //SEG56 [110] phi (byte) current_piece_char#64 = (byte~) current_piece_char#90 [phi:main::@21->render_moving#0] -- register_copy - //SEG57 [110] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#102 [phi:main::@21->render_moving#1] -- register_copy - //SEG58 [110] phi (byte) current_xpos#47 = (byte~) current_xpos#112 [phi:main::@21->render_moving#2] -- register_copy - //SEG59 [110] phi (byte) render_screen_render#30 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->render_moving#3] -- vbuz1=vbuc1 + sta current_piece_char_103 + //SEG55 [32] call render_moving + //SEG56 [104] phi from main::@31 to render_moving [phi:main::@31->render_moving] + render_moving_from_b31: + //SEG57 [104] phi (byte) current_piece_char#75 = (byte~) current_piece_char#103 [phi:main::@31->render_moving#0] -- register_copy + //SEG58 [104] phi (byte*) current_piece_gfx#62 = (byte*~) current_piece_gfx#115 [phi:main::@31->render_moving#1] -- register_copy + //SEG59 [104] phi (byte) current_xpos#57 = (byte~) current_xpos#125 [phi:main::@31->render_moving#2] -- register_copy + //SEG60 [104] phi (byte) render_screen_render#30 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@31->render_moving#3] -- vbuz1=vbuc1 lda #$40 sta render_screen_render_30 - //SEG60 [110] phi (byte) current_ypos#9 = (byte~) current_ypos#86 [phi:main::@21->render_moving#4] -- register_copy + //SEG61 [104] phi (byte) current_ypos#11 = (byte~) current_ypos#99 [phi:main::@31->render_moving#4] -- register_copy jsr render_moving - //SEG61 [33] (byte*~) current_piece#73 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG62 [33] (byte*~) current_piece#88 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG62 [34] phi from main::@21 to main::@1 [phi:main::@21->main::@1] - b1_from_b21: - //SEG63 [34] phi (byte) level_bcd#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#0] -- vbuz1=vbuc1 + //SEG63 [34] phi from main::@31 to main::@1 [phi:main::@31->main::@1] + b1_from_b31: + //SEG64 [34] phi (byte) level_bcd#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#0] -- vbuz1=vbuc1 lda #0 sta level_bcd - //SEG64 [34] phi (byte) level#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#1] -- vbuz1=vbuc1 + //SEG65 [34] phi (byte) level#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#1] -- vbuz1=vbuc1 lda #0 sta level - //SEG65 [34] phi (dword) score_bcd#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#2] -- vduz1=vbuc1 + //SEG66 [34] phi (dword) score_bcd#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#2] -- vduz1=vbuc1 lda #0 sta score_bcd lda #0 sta score_bcd+1 sta score_bcd+2 sta score_bcd+3 - //SEG66 [34] phi (word) lines_bcd#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#3] -- vwuz1=vbuc1 + //SEG67 [34] phi (word) lines_bcd#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#3] -- vwuz1=vbuc1 lda #<0 sta lines_bcd lda #>0 sta lines_bcd+1 - //SEG67 [34] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#4] -- vbuz1=vbuc1 + //SEG68 [34] phi (byte) current_movedown_counter#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#4] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG68 [34] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#5] -- vbuz1=vbuc1 + //SEG69 [34] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#5] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG69 [34] phi (byte) current_piece_char#15 = (byte) current_piece_char#12 [phi:main::@21->main::@1#6] -- register_copy - //SEG70 [34] phi (byte) current_ypos#21 = (byte) current_ypos#18 [phi:main::@21->main::@1#7] -- register_copy - //SEG71 [34] phi (byte) current_xpos#10 = (byte) current_xpos#23 [phi:main::@21->main::@1#8] -- register_copy - //SEG72 [34] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#16 [phi:main::@21->main::@1#9] -- register_copy - //SEG73 [34] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#10] -- vbuz1=vbuc1 + //SEG70 [34] phi (byte) game_over#19 = (byte) game_over#15 [phi:main::@31->main::@1#6] -- register_copy + //SEG71 [34] phi (byte) current_ypos#25 = (byte) current_ypos#22 [phi:main::@31->main::@1#7] -- register_copy + //SEG72 [34] phi (byte) current_xpos#115 = (byte) current_xpos#28 [phi:main::@31->main::@1#8] -- register_copy + //SEG73 [34] phi (byte*) current_piece_gfx#105 = (byte*) current_piece_gfx#21 [phi:main::@31->main::@1#9] -- register_copy + //SEG74 [34] phi (byte) current_orientation#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#10] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG74 [34] phi (byte*) current_piece#16 = (byte*~) current_piece#73 [phi:main::@21->main::@1#11] -- register_copy - //SEG75 [34] phi (byte) current_movedown_slow#12 = (byte) current_movedown_slow#1 [phi:main::@21->main::@1#12] -- register_copy - //SEG76 [34] phi (byte) render_screen_render#17 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->main::@1#13] -- vbuz1=vbuc1 + //SEG75 [34] phi (byte) current_piece_char#19 = (byte) current_piece_char#16 [phi:main::@31->main::@1#11] -- register_copy + //SEG76 [34] phi (byte*) current_piece#20 = (byte*~) current_piece#88 [phi:main::@31->main::@1#12] -- register_copy + //SEG77 [34] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@31->main::@1#13] -- register_copy + //SEG78 [34] phi (byte) render_screen_render#17 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@31->main::@1#14] -- vbuz1=vbuc1 lda #$40 sta render_screen_render - //SEG77 [34] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#14] -- vbuz1=vbuc1 + //SEG79 [34] phi (byte) render_screen_show#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#15] -- vbuz1=vbuc1 lda #0 sta render_screen_show jmp b1 - //SEG78 [34] phi from main::@28 to main::@1 [phi:main::@28->main::@1] - b1_from_b28: - //SEG79 [34] phi (byte) level_bcd#20 = (byte) level_bcd#13 [phi:main::@28->main::@1#0] -- register_copy - //SEG80 [34] phi (byte) level#19 = (byte) level#12 [phi:main::@28->main::@1#1] -- register_copy - //SEG81 [34] phi (dword) score_bcd#14 = (dword) score_bcd#10 [phi:main::@28->main::@1#2] -- register_copy - //SEG82 [34] phi (word) lines_bcd#15 = (word) lines_bcd#11 [phi:main::@28->main::@1#3] -- register_copy - //SEG83 [34] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@28->main::@1#4] -- register_copy - //SEG84 [34] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@28->main::@1#5] -- register_copy - //SEG85 [34] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@28->main::@1#6] -- register_copy - //SEG86 [34] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@28->main::@1#7] -- register_copy - //SEG87 [34] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@28->main::@1#8] -- register_copy - //SEG88 [34] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@28->main::@1#9] -- register_copy - //SEG89 [34] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@28->main::@1#10] -- register_copy - //SEG90 [34] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@28->main::@1#11] -- register_copy - //SEG91 [34] phi (byte) current_movedown_slow#12 = (byte) current_movedown_slow#17 [phi:main::@28->main::@1#12] -- register_copy - jmp b1 - //SEG92 main::@1 + //SEG80 main::@1 b1: jmp b4 - //SEG93 main::@4 + //SEG81 main::@4 b4: - //SEG94 [35] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG82 [35] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 - //SEG95 [36] phi from main::@4 to main::@6 [phi:main::@4->main::@6] - b6_from_b4: jmp b6 - //SEG96 main::@6 + //SEG83 main::@6 b6: - //SEG97 [37] call render_show + //SEG84 [36] (byte~) main::$9 ← (byte) render_screen_show#17 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + lda render_screen_show + lsr + lsr + lsr + lsr + sta _9 + //SEG85 [37] *((const byte*) BORDERCOL#0) ← (byte~) main::$9 -- _deref_pbuc1=vbuz1 + lda _9 + sta BORDERCOL + //SEG86 [38] call render_show jsr render_show - //SEG98 [38] phi from main::@6 to main::@23 [phi:main::@6->main::@23] - b23_from_b6: - jmp b23 - //SEG99 main::@23 - b23: - //SEG100 [39] call keyboard_event_scan - //SEG101 [350] phi from main::@23 to keyboard_event_scan [phi:main::@23->keyboard_event_scan] - keyboard_event_scan_from_b23: + //SEG87 [39] phi from main::@6 to main::@33 [phi:main::@6->main::@33] + b33_from_b6: + jmp b33 + //SEG88 main::@33 + b33: + //SEG89 [40] call keyboard_event_scan + //SEG90 [371] phi from main::@33 to keyboard_event_scan [phi:main::@33->keyboard_event_scan] + keyboard_event_scan_from_b33: jsr keyboard_event_scan - //SEG102 [40] phi from main::@23 to main::@24 [phi:main::@23->main::@24] - b24_from_b23: - jmp b24 - //SEG103 main::@24 - b24: - //SEG104 [41] call keyboard_event_get + //SEG91 [41] phi from main::@33 to main::@34 [phi:main::@33->main::@34] + b34_from_b33: + jmp b34 + //SEG92 main::@34 + b34: + //SEG93 [42] call keyboard_event_get jsr keyboard_event_get - //SEG105 [42] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 + //SEG94 [43] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 lda keyboard_event_get.return sta keyboard_event_get.return_3 - jmp b25 - //SEG106 main::@25 - b25: - //SEG107 [43] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 + jmp b35 + //SEG95 main::@35 + b35: + //SEG96 [44] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 lda keyboard_event_get.return_3 sta key_event - //SEG108 [44] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 - lda key_event - sta play_move_down.key_event - //SEG109 [45] call play_move_down - jsr play_move_down - //SEG110 [46] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuz1=vbuz2 - lda play_move_down.return - sta play_move_down.return_3 - jmp b26 - //SEG111 main::@26 - b26: - //SEG112 [47] (byte~) main::$12 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 - lda play_move_down.return_3 - sta _12 - //SEG113 [48] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 -- vbuz1=vbuc1_plus_vbuz2 - lda #0 - clc - adc _12 - sta render - //SEG114 [49] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 - lda key_event - sta play_move_leftright.key_event - //SEG115 [50] call play_move_leftright - jsr play_move_leftright - //SEG116 [51] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 -- vbuz1=vbuz2 - lda play_move_leftright.return - sta play_move_leftright.return_4 - jmp b27 - //SEG117 main::@27 - b27: - //SEG118 [52] (byte~) main::$13 ← (byte) play_move_leftright::return#4 -- vbuz1=vbuz2 - lda play_move_leftright.return_4 - sta _13 - //SEG119 [53] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 -- vbuz1=vbuz2_plus_vbuz3 - lda render - clc - adc _13 - sta render_2 - //SEG120 [54] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 - lda key_event - sta play_move_rotate.key_event - //SEG121 [55] call play_move_rotate - jsr play_move_rotate - //SEG122 [56] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 -- vbuz1=vbuz2 - lda play_move_rotate.return - sta play_move_rotate.return_4 - jmp b28 - //SEG123 main::@28 - b28: - //SEG124 [57] (byte~) main::$14 ← (byte) play_move_rotate::return#4 -- vbuz1=vbuz2 - lda play_move_rotate.return_4 - sta _14 - //SEG125 [58] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 -- vbuz1=vbuz2_plus_vbuz3 - lda render_2 - clc - adc _14 - sta render_3 - //SEG126 [59] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_eq_0_then_la1 - lda render_3 + //SEG97 [45] if((byte) game_over#19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuz1_eq_0_then_la1 + lda game_over cmp #0 - beq b1_from_b28 - jmp b13 - //SEG127 main::@13 - b13: - //SEG128 [60] (byte~) render_screen_render#65 ← (byte) render_screen_render#17 -- vbuz1=vbuz2 + beq b7 + jmp b9 + //SEG98 main::@9 + b9: + //SEG99 [46] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + inc BORDERCOL + jmp b9 + //SEG100 main::@7 + b7: + //SEG101 [47] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + lda key_event + sta play_movement.key_event + //SEG102 [48] call play_movement + jsr play_movement + //SEG103 [49] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuz1=vbuz2 + lda play_movement.return + sta play_movement.return_3 + jmp b36 + //SEG104 main::@36 + b36: + //SEG105 [50] (byte) main::render#1 ← (byte) play_movement::return#3 -- vbuz1=vbuz2 + lda play_movement.return_3 + sta render + jmp b11 + //SEG106 main::@11 + b11: + //SEG107 [51] if((byte) main::render#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12 -- vbuz1_eq_0_then_la1 + lda render + cmp #0 + beq b12_from_b11 + jmp b23 + //SEG108 main::@23 + b23: + //SEG109 [52] (byte~) render_screen_render#69 ← (byte) render_screen_render#17 -- vbuz1=vbuz2 lda render_screen_render - sta render_screen_render_65 - //SEG129 [61] call render_playfield - //SEG130 [133] phi from main::@13 to render_playfield [phi:main::@13->render_playfield] - render_playfield_from_b13: - //SEG131 [133] phi (byte) render_screen_render#21 = (byte~) render_screen_render#65 [phi:main::@13->render_playfield#0] -- register_copy + sta render_screen_render_69 + //SEG110 [53] call render_playfield + //SEG111 [127] phi from main::@23 to render_playfield [phi:main::@23->render_playfield] + render_playfield_from_b23: + //SEG112 [127] phi (byte) render_screen_render#21 = (byte~) render_screen_render#69 [phi:main::@23->render_playfield#0] -- register_copy jsr render_playfield - jmp b29 - //SEG132 main::@29 - b29: - //SEG133 [62] (byte~) current_ypos#87 ← (byte) current_ypos#13 -- vbuz1=vbuz2 + jmp b37 + //SEG113 main::@37 + b37: + //SEG114 [54] (byte~) current_ypos#100 ← (byte) current_ypos#17 -- vbuz1=vbuz2 lda current_ypos - sta current_ypos_87 - //SEG134 [63] (byte~) render_screen_render#64 ← (byte) render_screen_render#17 -- vbuz1=vbuz2 + sta current_ypos_100 + //SEG115 [55] (byte~) render_screen_render#68 ← (byte) render_screen_render#17 -- vbuz1=vbuz2 lda render_screen_render - sta render_screen_render_64 - //SEG135 [64] (byte~) current_xpos#113 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + sta render_screen_render_68 + //SEG116 [56] (byte~) current_xpos#126 ← (byte) current_xpos#17 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_113 - //SEG136 [65] (byte*~) current_piece_gfx#103 ← (byte*) current_piece_gfx#14 -- pbuz1=pbuz2 + sta current_xpos_126 + //SEG117 [57] (byte*~) current_piece_gfx#116 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_103 + sta current_piece_gfx_116 lda current_piece_gfx+1 - sta current_piece_gfx_103+1 - //SEG137 [66] (byte~) current_piece_char#91 ← (byte) current_piece_char#1 -- vbuz1=vbuz2 + sta current_piece_gfx_116+1 + //SEG118 [58] (byte~) current_piece_char#104 ← (byte) current_piece_char#14 -- vbuz1=vbuz2 lda current_piece_char - sta current_piece_char_91 - //SEG138 [67] call render_moving - //SEG139 [110] phi from main::@29 to render_moving [phi:main::@29->render_moving] - render_moving_from_b29: - //SEG140 [110] phi (byte) current_piece_char#64 = (byte~) current_piece_char#91 [phi:main::@29->render_moving#0] -- register_copy - //SEG141 [110] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#103 [phi:main::@29->render_moving#1] -- register_copy - //SEG142 [110] phi (byte) current_xpos#47 = (byte~) current_xpos#113 [phi:main::@29->render_moving#2] -- register_copy - //SEG143 [110] phi (byte) render_screen_render#30 = (byte~) render_screen_render#64 [phi:main::@29->render_moving#3] -- register_copy - //SEG144 [110] phi (byte) current_ypos#9 = (byte~) current_ypos#87 [phi:main::@29->render_moving#4] -- register_copy + sta current_piece_char_104 + //SEG119 [59] call render_moving + //SEG120 [104] phi from main::@37 to render_moving [phi:main::@37->render_moving] + render_moving_from_b37: + //SEG121 [104] phi (byte) current_piece_char#75 = (byte~) current_piece_char#104 [phi:main::@37->render_moving#0] -- register_copy + //SEG122 [104] phi (byte*) current_piece_gfx#62 = (byte*~) current_piece_gfx#116 [phi:main::@37->render_moving#1] -- register_copy + //SEG123 [104] phi (byte) current_xpos#57 = (byte~) current_xpos#126 [phi:main::@37->render_moving#2] -- register_copy + //SEG124 [104] phi (byte) render_screen_render#30 = (byte~) render_screen_render#68 [phi:main::@37->render_moving#3] -- register_copy + //SEG125 [104] phi (byte) current_ypos#11 = (byte~) current_ypos#100 [phi:main::@37->render_moving#4] -- register_copy jsr render_moving - //SEG145 [68] phi from main::@29 to main::@30 [phi:main::@29->main::@30] - b30_from_b29: - jmp b30 - //SEG146 main::@30 - b30: - //SEG147 [69] call render_score + //SEG126 [60] phi from main::@37 to main::@38 [phi:main::@37->main::@38] + b38_from_b37: + jmp b38 + //SEG127 main::@38 + b38: + //SEG128 [61] call render_score jsr render_score - //SEG148 [70] phi from main::@30 to main::@31 [phi:main::@30->main::@31] - b31_from_b30: - jmp b31 - //SEG149 main::@31 - b31: - //SEG150 [71] call render_screen_swap + //SEG129 [62] phi from main::@38 to main::@39 [phi:main::@38->main::@39] + b39_from_b38: + jmp b39 + //SEG130 main::@39 + b39: + //SEG131 [63] call render_screen_swap jsr render_screen_swap - //SEG151 [34] phi from main::@31 to main::@1 [phi:main::@31->main::@1] - b1_from_b31: - //SEG152 [34] phi (byte) level_bcd#20 = (byte) level_bcd#13 [phi:main::@31->main::@1#0] -- register_copy - //SEG153 [34] phi (byte) level#19 = (byte) level#12 [phi:main::@31->main::@1#1] -- register_copy - //SEG154 [34] phi (dword) score_bcd#14 = (dword) score_bcd#10 [phi:main::@31->main::@1#2] -- register_copy - //SEG155 [34] phi (word) lines_bcd#15 = (word) lines_bcd#11 [phi:main::@31->main::@1#3] -- register_copy - //SEG156 [34] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@31->main::@1#4] -- register_copy - //SEG157 [34] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@31->main::@1#5] -- register_copy - //SEG158 [34] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@31->main::@1#6] -- register_copy - //SEG159 [34] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@31->main::@1#7] -- register_copy - //SEG160 [34] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@31->main::@1#8] -- register_copy - //SEG161 [34] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@31->main::@1#9] -- register_copy - //SEG162 [34] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@31->main::@1#10] -- register_copy - //SEG163 [34] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@31->main::@1#11] -- register_copy - //SEG164 [34] phi (byte) current_movedown_slow#12 = (byte) current_movedown_slow#17 [phi:main::@31->main::@1#12] -- register_copy - //SEG165 [34] phi (byte) render_screen_render#17 = (byte) render_screen_render#11 [phi:main::@31->main::@1#13] -- register_copy - //SEG166 [34] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@31->main::@1#14] -- register_copy + //SEG132 [64] phi from main::@11 main::@39 to main::@12 [phi:main::@11/main::@39->main::@12] + b12_from_b11: + b12_from_b39: + //SEG133 [64] phi (byte) render_screen_render#33 = (byte) render_screen_render#17 [phi:main::@11/main::@39->main::@12#0] -- register_copy + //SEG134 [64] phi (byte) render_screen_show#29 = (byte) render_screen_show#17 [phi:main::@11/main::@39->main::@12#1] -- register_copy + jmp b12 + //SEG135 main::@12 + b12: + //SEG136 [65] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + lda #0 + sta BORDERCOL + //SEG137 [34] phi from main::@12 to main::@1 [phi:main::@12->main::@1] + b1_from_b12: + //SEG138 [34] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@12->main::@1#0] -- register_copy + //SEG139 [34] phi (byte) level#10 = (byte) level#16 [phi:main::@12->main::@1#1] -- register_copy + //SEG140 [34] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@12->main::@1#2] -- register_copy + //SEG141 [34] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@12->main::@1#3] -- register_copy + //SEG142 [34] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@12->main::@1#4] -- register_copy + //SEG143 [34] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@12->main::@1#5] -- register_copy + //SEG144 [34] phi (byte) game_over#19 = (byte) game_over#14 [phi:main::@12->main::@1#6] -- register_copy + //SEG145 [34] phi (byte) current_ypos#25 = (byte) current_ypos#17 [phi:main::@12->main::@1#7] -- register_copy + //SEG146 [34] phi (byte) current_xpos#115 = (byte) current_xpos#17 [phi:main::@12->main::@1#8] -- register_copy + //SEG147 [34] phi (byte*) current_piece_gfx#105 = (byte*) current_piece_gfx#16 [phi:main::@12->main::@1#9] -- register_copy + //SEG148 [34] phi (byte) current_orientation#12 = (byte) current_orientation#16 [phi:main::@12->main::@1#10] -- register_copy + //SEG149 [34] phi (byte) current_piece_char#19 = (byte) current_piece_char#14 [phi:main::@12->main::@1#11] -- register_copy + //SEG150 [34] phi (byte*) current_piece#20 = (byte*) current_piece#14 [phi:main::@12->main::@1#12] -- register_copy + //SEG151 [34] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@12->main::@1#13] -- register_copy + //SEG152 [34] phi (byte) render_screen_render#17 = (byte) render_screen_render#33 [phi:main::@12->main::@1#14] -- register_copy + //SEG153 [34] phi (byte) render_screen_show#17 = (byte) render_screen_show#29 [phi:main::@12->main::@1#15] -- register_copy jmp b1 } -//SEG167 render_screen_swap +//SEG154 render_screen_swap render_screen_swap: { - //SEG168 [72] (byte) render_screen_render#11 ← (byte) render_screen_render#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG155 [66] (byte) render_screen_render#11 ← (byte) render_screen_render#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_render eor #$40 sta render_screen_render - //SEG169 [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG156 [67] (byte) render_screen_show#13 ← (byte) render_screen_show#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_show eor #$40 sta render_screen_show jmp breturn - //SEG170 render_screen_swap::@return + //SEG157 render_screen_swap::@return breturn: - //SEG171 [74] return + //SEG158 [68] return rts } -//SEG172 render_score +//SEG159 render_score render_score: { .label score_bytes = score_bcd .const score_offset = $28*5+$1c .const lines_offset = $28*1+$16 .const level_offset = $28*$13+$1f .label screen = 5 - //SEG173 [75] if((byte) render_screen_render#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 -- vbuz1_eq_0_then_la1 + //SEG160 [69] if((byte) render_screen_render#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 -- vbuz1_eq_0_then_la1 lda render_screen_render cmp #0 beq b2_from_render_score - //SEG174 [76] phi from render_score to render_score::@3 [phi:render_score->render_score::@3] + //SEG161 [70] phi from render_score to render_score::@3 [phi:render_score->render_score::@3] b3_from_render_score: jmp b3 - //SEG175 render_score::@3 + //SEG162 render_score::@3 b3: - //SEG176 [77] phi from render_score::@3 to render_score::@2 [phi:render_score::@3->render_score::@2] + //SEG163 [71] phi from render_score::@3 to render_score::@2 [phi:render_score::@3->render_score::@2] b2_from_b3: - //SEG177 [77] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score::@3->render_score::@2#0] -- pbuz1=pbuc1 + //SEG164 [71] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score::@3->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta screen+1 jmp b2 - //SEG178 [77] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] + //SEG165 [71] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] b2_from_render_score: - //SEG179 [77] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 + //SEG166 [71] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta screen+1 jmp b2 - //SEG180 render_score::@2 + //SEG167 render_score::@2 b2: - //SEG181 [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 + //SEG168 [72] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG182 [79] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuz1=_deref_pbuc1 + //SEG169 [73] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuz1=_deref_pbuc1 lda score_bytes+2 sta render_bcd.bcd - //SEG183 [80] call render_bcd - //SEG184 [97] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] + //SEG170 [74] call render_bcd + //SEG171 [91] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] render_bcd_from_b2: - //SEG185 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy - //SEG186 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@2->render_bcd#1] -- vbuz1=vbuc1 + //SEG172 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy + //SEG173 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@2->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG187 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 + //SEG174 [91] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset sta render_bcd.offset+1 - //SEG188 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy + //SEG175 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy jsr render_bcd jmp b5 - //SEG189 render_score::@5 + //SEG176 render_score::@5 b5: - //SEG190 [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 + //SEG177 [75] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG191 [82] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuz1=_deref_pbuc1 + //SEG178 [76] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuz1=_deref_pbuc1 lda score_bytes+1 sta render_bcd.bcd - //SEG192 [83] call render_bcd - //SEG193 [97] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] + //SEG179 [77] call render_bcd + //SEG180 [91] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] render_bcd_from_b5: - //SEG194 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@5->render_bcd#0] -- register_copy - //SEG195 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@5->render_bcd#1] -- vbuz1=vbuc1 + //SEG181 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@5->render_bcd#0] -- register_copy + //SEG182 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@5->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG196 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_score::@5->render_bcd#2] -- vwuz1=vbuc1 + //SEG183 [91] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_score::@5->render_bcd#2] -- vwuz1=vbuc1 lda #score_offset+2 sta render_bcd.offset+1 - //SEG197 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@5->render_bcd#3] -- register_copy + //SEG184 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@5->render_bcd#3] -- register_copy jsr render_bcd jmp b6 - //SEG198 render_score::@6 + //SEG185 render_score::@6 b6: - //SEG199 [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 + //SEG186 [78] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG200 [85] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuz1=_deref_pbuc1 + //SEG187 [79] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuz1=_deref_pbuc1 lda score_bytes sta render_bcd.bcd - //SEG201 [86] call render_bcd - //SEG202 [97] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] + //SEG188 [80] call render_bcd + //SEG189 [91] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] render_bcd_from_b6: - //SEG203 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@6->render_bcd#0] -- register_copy - //SEG204 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@6->render_bcd#1] -- vbuz1=vbuc1 + //SEG190 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@6->render_bcd#0] -- register_copy + //SEG191 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@6->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG205 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:render_score::@6->render_bcd#2] -- vwuz1=vbuc1 + //SEG192 [91] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:render_score::@6->render_bcd#2] -- vwuz1=vbuc1 lda #score_offset+4 sta render_bcd.offset+1 - //SEG206 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@6->render_bcd#3] -- register_copy + //SEG193 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@6->render_bcd#3] -- register_copy jsr render_bcd jmp b7 - //SEG207 render_score::@7 + //SEG194 render_score::@7 b7: - //SEG208 [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#11 -- vbuz1=_hi_vwuz2 + //SEG195 [81] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuz1=_hi_vwuz2 lda lines_bcd+1 sta render_bcd.bcd - //SEG209 [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 + //SEG196 [82] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG210 [89] call render_bcd - //SEG211 [97] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] + //SEG197 [83] call render_bcd + //SEG198 [91] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] render_bcd_from_b7: - //SEG212 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@7->render_bcd#0] -- register_copy - //SEG213 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@7->render_bcd#1] -- vbuz1=vbuc1 + //SEG199 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@7->render_bcd#0] -- register_copy + //SEG200 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@7->render_bcd#1] -- vbuz1=vbuc1 lda #1 sta render_bcd.only_low - //SEG214 [97] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 + //SEG201 [91] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 lda #lines_offset sta render_bcd.offset+1 - //SEG215 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@7->render_bcd#3] -- register_copy + //SEG202 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@7->render_bcd#3] -- register_copy jsr render_bcd jmp b8 - //SEG216 render_score::@8 + //SEG203 render_score::@8 b8: - //SEG217 [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#11 -- vbuz1=_lo_vwuz2 + //SEG204 [84] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuz1=_lo_vwuz2 lda lines_bcd sta render_bcd.bcd - //SEG218 [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 + //SEG205 [85] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG219 [92] call render_bcd - //SEG220 [97] phi from render_score::@8 to render_bcd [phi:render_score::@8->render_bcd] + //SEG206 [86] call render_bcd + //SEG207 [91] phi from render_score::@8 to render_bcd [phi:render_score::@8->render_bcd] render_bcd_from_b8: - //SEG221 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@8->render_bcd#0] -- register_copy - //SEG222 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@8->render_bcd#1] -- vbuz1=vbuc1 + //SEG208 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@8->render_bcd#0] -- register_copy + //SEG209 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@8->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG223 [97] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@8->render_bcd#2] -- vwuz1=vbuc1 + //SEG210 [91] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@8->render_bcd#2] -- vwuz1=vbuc1 lda #lines_offset+1 sta render_bcd.offset+1 - //SEG224 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@8->render_bcd#3] -- register_copy + //SEG211 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@8->render_bcd#3] -- register_copy jsr render_bcd jmp b9 - //SEG225 render_score::@9 + //SEG212 render_score::@9 b9: - //SEG226 [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 + //SEG213 [87] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG227 [94] (byte) render_bcd::bcd#5 ← (byte) level_bcd#13 -- vbuz1=vbuz2 + //SEG214 [88] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuz1=vbuz2 lda level_bcd sta render_bcd.bcd - //SEG228 [95] call render_bcd - //SEG229 [97] phi from render_score::@9 to render_bcd [phi:render_score::@9->render_bcd] + //SEG215 [89] call render_bcd + //SEG216 [91] phi from render_score::@9 to render_bcd [phi:render_score::@9->render_bcd] render_bcd_from_b9: - //SEG230 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@9->render_bcd#0] -- register_copy - //SEG231 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@9->render_bcd#1] -- vbuz1=vbuc1 + //SEG217 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@9->render_bcd#0] -- register_copy + //SEG218 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@9->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG232 [97] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@9->render_bcd#2] -- vwuz1=vwuc1 + //SEG219 [91] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@9->render_bcd#2] -- vwuz1=vwuc1 lda #level_offset sta render_bcd.offset+1 - //SEG233 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@9->render_bcd#3] -- register_copy + //SEG220 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@9->render_bcd#3] -- register_copy jsr render_bcd jmp breturn - //SEG234 render_score::@return + //SEG221 render_score::@return breturn: - //SEG235 [96] return + //SEG222 [90] return rts } -//SEG236 render_bcd +//SEG223 render_bcd render_bcd: { - .const ZERO_CHAR = $33 - .label _3 = $81 - .label _4 = $82 - .label _5 = $83 - .label _6 = $84 + .const ZERO_CHAR = $35 + .label _3 = $7a + .label _4 = $7b + .label _5 = $7c + .label _6 = $7d .label screen = 7 .label bcd = $c .label screen_pos = $d - .label screen_pos_1 = $85 + .label screen_pos_1 = $7e .label offset = 9 .label only_low = $b - //SEG237 [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz3 + //SEG224 [92] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz3 lda screen clc adc offset @@ -11827,55 +12783,55 @@ render_bcd: { lda screen+1 adc offset+1 sta screen_pos+1 - //SEG238 [99] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 -- vbuz1_neq_0_then_la1 + //SEG225 [93] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 -- vbuz1_neq_0_then_la1 lda only_low cmp #0 bne b1_from_render_bcd jmp b2 - //SEG239 render_bcd::@2 + //SEG226 render_bcd::@2 b2: - //SEG240 [100] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG227 [94] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda bcd lsr lsr lsr lsr sta _3 - //SEG241 [101] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuz1=vbuc1_plus_vbuz2 + //SEG228 [95] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuz1=vbuc1_plus_vbuz2 lda #ZERO_CHAR clc adc _3 sta _4 - //SEG242 [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuz2 + //SEG229 [96] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuz2 lda _4 ldy #0 sta (screen_pos),y - //SEG243 [103] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 + //SEG230 [97] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 inc screen_pos bne !+ inc screen_pos+1 !: - //SEG244 [104] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] + //SEG231 [98] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] b1_from_render_bcd: b1_from_b2: - //SEG245 [104] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy + //SEG232 [98] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy jmp b1 - //SEG246 render_bcd::@1 + //SEG233 render_bcd::@1 b1: - //SEG247 [105] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG234 [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and bcd sta _5 - //SEG248 [106] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuz1=vbuc1_plus_vbuz2 + //SEG235 [100] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuz1=vbuc1_plus_vbuz2 lda #ZERO_CHAR clc adc _5 sta _6 - //SEG249 [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuz2 + //SEG236 [101] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (screen_pos),y - //SEG250 [108] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 -- pbuz1=_inc_pbuz2 + //SEG237 [102] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 -- pbuz1=_inc_pbuz2 lda screen_pos clc adc #1 @@ -11884,337 +12840,424 @@ render_bcd: { adc #0 sta screen_pos_1+1 jmp breturn - //SEG251 render_bcd::@return + //SEG238 render_bcd::@return breturn: - //SEG252 [109] return + //SEG239 [103] return rts } -//SEG253 render_moving +//SEG240 render_moving render_moving: { - .label _5 = $87 + .label _5 = $80 .label ypos2 = $15 - .label screen_line = $88 + .label screen_line = $81 .label xpos = $18 .label i = $17 .label l = $16 - .label current_cell = $8a + .label current_cell = $83 .label c = $19 - //SEG254 [111] (byte) render_moving::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 - lda current_ypos_9 + //SEG241 [105] (byte) render_moving::ypos2#0 ← (byte) current_ypos#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda current_ypos_11 asl sta ypos2 - //SEG255 [112] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] + //SEG242 [106] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] b1_from_render_moving: - //SEG256 [112] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 + //SEG243 [106] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG257 [112] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 + //SEG244 [106] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 lda #0 sta i - //SEG258 [112] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy + //SEG245 [106] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy jmp b1 - //SEG259 [112] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] + //SEG246 [106] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] b1_from_b3: - //SEG260 [112] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy - //SEG261 [112] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy - //SEG262 [112] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy + //SEG247 [106] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy + //SEG248 [106] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy + //SEG249 [106] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy jmp b1 - //SEG263 render_moving::@1 + //SEG250 render_moving::@1 b1: - //SEG264 [113] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@13 -- vbuz1_gt_vbuc1_then_la1 + //SEG251 [107] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@13 -- vbuz1_gt_vbuc1_then_la1 lda ypos2 cmp #2 beq !+ bcs b13 !: jmp b7 - //SEG265 render_moving::@7 + //SEG252 render_moving::@7 b7: - //SEG266 [114] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG253 [108] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lda #4 clc adc i sta i - //SEG267 [115] phi from render_moving::@5 render_moving::@7 to render_moving::@3 [phi:render_moving::@5/render_moving::@7->render_moving::@3] + //SEG254 [109] phi from render_moving::@5 render_moving::@7 to render_moving::@3 [phi:render_moving::@5/render_moving::@7->render_moving::@3] b3_from_b5: b3_from_b7: - //SEG268 [115] phi (byte) render_moving::i#8 = (byte) render_moving::i#10 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy + //SEG255 [109] phi (byte) render_moving::i#8 = (byte) render_moving::i#10 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy jmp b3 - //SEG269 render_moving::@3 + //SEG256 render_moving::@3 b3: - //SEG270 [116] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG257 [110] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG271 [117] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 + //SEG258 [111] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG272 [118] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG259 [112] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1_from_b3 jmp breturn - //SEG273 render_moving::@return + //SEG260 render_moving::@return breturn: - //SEG274 [119] return + //SEG261 [113] return rts - //SEG275 render_moving::@13 + //SEG262 render_moving::@13 b13: - //SEG276 [120] if((byte) render_moving::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_moving::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG263 [114] if((byte) render_moving::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_moving::@2 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b2 jmp b7 - //SEG277 render_moving::@2 + //SEG264 render_moving::@2 b2: - //SEG278 [121] (byte~) render_moving::$5 ← (byte) render_screen_render#30 + (byte) render_moving::ypos2#2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG265 [115] (byte~) render_moving::$5 ← (byte) render_screen_render#30 + (byte) render_moving::ypos2#2 -- vbuz1=vbuz2_plus_vbuz3 lda render_screen_render_30 clc adc ypos2 sta _5 - //SEG279 [122] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG266 [116] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) -- pbuz1=pptc1_derefidx_vbuz2 ldy _5 lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG280 [123] (byte) render_moving::xpos#0 ← (byte) current_xpos#47 -- vbuz1=vbuz2 - lda current_xpos_47 + //SEG267 [117] (byte) render_moving::xpos#0 ← (byte) current_xpos#57 -- vbuz1=vbuz2 + lda current_xpos_57 sta xpos - //SEG281 [124] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] + //SEG268 [118] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] b4_from_b2: - //SEG282 [124] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuz1=vbuc1 + //SEG269 [118] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG283 [124] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy - //SEG284 [124] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy + //SEG270 [118] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy + //SEG271 [118] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy jmp b4 - //SEG285 [124] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] + //SEG272 [118] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] b4_from_b5: - //SEG286 [124] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy - //SEG287 [124] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy - //SEG288 [124] phi (byte) render_moving::i#4 = (byte) render_moving::i#10 [phi:render_moving::@5->render_moving::@4#2] -- register_copy + //SEG273 [118] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy + //SEG274 [118] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy + //SEG275 [118] phi (byte) render_moving::i#4 = (byte) render_moving::i#10 [phi:render_moving::@5->render_moving::@4#2] -- register_copy jmp b4 - //SEG289 render_moving::@4 + //SEG276 render_moving::@4 b4: - //SEG290 [125] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_moving::i#4) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG277 [119] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#62 + (byte) render_moving::i#4) -- vbuz1=pbuz2_derefidx_vbuz3 ldy i - lda (current_piece_gfx_53),y + lda (current_piece_gfx_62),y sta current_cell - //SEG291 [126] (byte) render_moving::i#10 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 + //SEG278 [120] (byte) render_moving::i#10 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG292 [127] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuz1_eq_0_then_la1 + //SEG279 [121] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuz1_eq_0_then_la1 lda current_cell cmp #0 beq b5 jmp b9 - //SEG293 render_moving::@9 + //SEG280 render_moving::@9 b9: - //SEG294 [128] if((byte) render_moving::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_moving::@5 -- vbuz1_ge_vbuc1_then_la1 + //SEG281 [122] if((byte) render_moving::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_moving::@5 -- vbuz1_ge_vbuc1_then_la1 lda xpos cmp #PLAYFIELD_COLS bcs b5 jmp b10 - //SEG295 render_moving::@10 + //SEG282 render_moving::@10 b10: - //SEG296 [129] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#64 -- pbuz1_derefidx_vbuz2=vbuz3 - lda current_piece_char_64 + //SEG283 [123] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#75 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_char_75 ldy xpos sta (screen_line),y jmp b5 - //SEG297 render_moving::@5 + //SEG284 render_moving::@5 b5: - //SEG298 [130] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG285 [124] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG299 [131] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuz1=_inc_vbuz1 + //SEG286 [125] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG300 [132] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG287 [126] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b4_from_b5 jmp b3_from_b5 } -//SEG301 render_playfield +//SEG288 render_playfield render_playfield: { - .label _2 = $8b - .label _3 = $8c + .label _2 = $84 + .label _3 = $85 .label screen_line = $1d .label i = $1c .label c = $1f .label l = $1b - //SEG302 [134] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG289 [128] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG303 [134] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG290 [128] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #PLAYFIELD_COLS*2 sta i - //SEG304 [134] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG291 [128] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #2 sta l jmp b1 - //SEG305 [134] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG292 [128] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG306 [134] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG307 [134] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG293 [128] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG294 [128] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG308 render_playfield::@1 + //SEG295 render_playfield::@1 b1: - //SEG309 [135] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG296 [129] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda l asl sta _2 - //SEG310 [136] (byte~) render_playfield::$3 ← (byte) render_screen_render#21 + (byte~) render_playfield::$2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG297 [130] (byte~) render_playfield::$3 ← (byte) render_screen_render#21 + (byte~) render_playfield::$2 -- vbuz1=vbuz2_plus_vbuz3 lda render_screen_render_21 clc adc _2 sta _3 - //SEG311 [137] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG298 [131] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy _3 lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG312 [138] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG299 [132] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG313 [138] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 + //SEG300 [132] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG314 [138] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG315 [138] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG301 [132] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG302 [132] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG316 [138] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG303 [132] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG317 [138] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG318 [138] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG319 [138] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG304 [132] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG305 [132] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG306 [132] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG320 render_playfield::@2 + //SEG307 render_playfield::@2 b2: - //SEG321 [139] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG308 [133] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (screen_line),y - //SEG322 [140] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG309 [134] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG323 [141] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG310 [135] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG324 [142] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG311 [136] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG325 [143] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG312 [137] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #PLAYFIELD_COLS-1+1 bne b2_from_b2 jmp b3 - //SEG326 render_playfield::@3 + //SEG313 render_playfield::@3 b3: - //SEG327 [144] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG314 [138] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG328 [145] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG315 [139] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1_from_b3 jmp breturn - //SEG329 render_playfield::@return + //SEG316 render_playfield::@return breturn: - //SEG330 [146] return + //SEG317 [140] return rts } -//SEG331 play_move_rotate -play_move_rotate: { - .label _2 = $8d - .label _4 = $90 - .label _6 = $8f - .label orientation = $21 +//SEG318 play_movement +play_movement: { + .label _0 = $88 + .label _3 = $8b + .label _4 = $8f + .label render = $20 + .label render_2 = $8c .label return = $20 - .label key_event = $7d - .label return_4 = $7e - //SEG332 [147] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 + .label key_event = $77 + .label return_3 = $78 + //SEG319 [141] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 + lda key_event + sta play_move_down.key_event + //SEG320 [142] call play_move_down + jsr play_move_down + //SEG321 [143] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 + lda play_move_down.return_3 + sta play_move_down.return + jmp b5 + //SEG322 play_movement::@5 + b5: + //SEG323 [144] (byte~) play_movement::$0 ← (byte) play_move_down::return#0 -- vbuz1=vbuz2 + lda play_move_down.return + sta _0 + //SEG324 [145] (byte) play_movement::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_movement::$0 -- vbuz1=vbuc1_plus_vbuz2 + lda #0 + clc + adc _0 + sta render + //SEG325 [146] if((byte) game_over#14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 + lda game_over + cmp #0 + beq b1 + //SEG326 [147] phi from play_movement::@5 play_movement::@7 to play_movement::@return [phi:play_movement::@5/play_movement::@7->play_movement::@return] + breturn_from_b5: + breturn_from_b7: + //SEG327 [147] phi (byte) current_xpos#17 = (byte) current_xpos#20 [phi:play_movement::@5/play_movement::@7->play_movement::@return#0] -- register_copy + //SEG328 [147] phi (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#18 [phi:play_movement::@5/play_movement::@7->play_movement::@return#1] -- register_copy + //SEG329 [147] phi (byte) current_orientation#16 = (byte) current_orientation#19 [phi:play_movement::@5/play_movement::@7->play_movement::@return#2] -- register_copy + //SEG330 [147] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@5/play_movement::@7->play_movement::@return#3] -- register_copy + jmp breturn + //SEG331 play_movement::@return + breturn: + //SEG332 [148] return + rts + //SEG333 play_movement::@1 + b1: + //SEG334 [149] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 + lda key_event + sta play_move_leftright.key_event + //SEG335 [150] call play_move_leftright + jsr play_move_leftright + //SEG336 [151] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 -- vbuz1=vbuz2 + lda play_move_leftright.return_2 + sta play_move_leftright.return + jmp b6 + //SEG337 play_movement::@6 + b6: + //SEG338 [152] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 -- vbuz1=vbuz2 + lda play_move_leftright.return + sta _3 + //SEG339 [153] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz2_plus_vbuz3 + lda render + clc + adc _3 + sta render_2 + //SEG340 [154] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 + lda key_event + sta play_move_rotate.key_event + //SEG341 [155] call play_move_rotate + jsr play_move_rotate + //SEG342 [156] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 -- vbuz1=vbuz2 + lda play_move_rotate.return_2 + sta play_move_rotate.return + jmp b7 + //SEG343 play_movement::@7 + b7: + //SEG344 [157] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 -- vbuz1=vbuz2 + lda play_move_rotate.return + sta _4 + //SEG345 [158] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz2_plus_vbuz3 + lda render_2 + clc + adc _4 + sta return + jmp breturn_from_b7 +} +//SEG346 play_move_rotate +play_move_rotate: { + .label _2 = $90 + .label _4 = $93 + .label _6 = $92 + .label key_event = $8d + .label return = $8e + .label orientation = $22 + .label return_2 = $21 + //SEG347 [159] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 lda key_event cmp #KEY_Z beq b1 jmp b6 - //SEG333 play_move_rotate::@6 + //SEG348 play_move_rotate::@6 b6: - //SEG334 [148] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG349 [160] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuz1_eq_vbuc1_then_la1 lda key_event cmp #KEY_X beq b2 - //SEG335 [149] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + //SEG350 [161] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] breturn_from_b14: breturn_from_b6: - //SEG336 [149] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#1 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG337 [149] phi (byte) current_orientation#19 = (byte) current_orientation#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG338 [149] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuz1=vbuc1 + //SEG351 [161] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG352 [161] phi (byte) current_orientation#24 = (byte) current_orientation#19 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG353 [161] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuz1=vbuc1 lda #0 - sta return + sta return_2 jmp breturn - //SEG339 play_move_rotate::@return + //SEG354 play_move_rotate::@return breturn: - //SEG340 [150] return + //SEG355 [162] return rts - //SEG341 play_move_rotate::@2 + //SEG356 play_move_rotate::@2 b2: - //SEG342 [151] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_plus_vbuc1 + //SEG357 [163] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#19 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_plus_vbuc1 lda #$10 clc adc current_orientation sta _2 - //SEG343 [152] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 + //SEG358 [164] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 lda #$3f and _2 sta orientation - //SEG344 [153] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + //SEG359 [165] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] b4_from_b1: b4_from_b2: - //SEG345 [153] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + //SEG360 [165] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy jmp b4 - //SEG346 play_move_rotate::@4 + //SEG361 play_move_rotate::@4 b4: - //SEG347 [154] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + //SEG362 [166] (byte) play_collision::xpos#3 ← (byte) current_xpos#24 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG348 [155] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 -- vbuz1=vbuz2 + //SEG363 [167] (byte) play_collision::ypos#3 ← (byte) current_ypos#17 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG349 [156] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG364 [168] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta play_collision.orientation - //SEG350 [157] (byte*~) current_piece#79 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG365 [169] (byte*~) current_piece#92 ← (byte*) current_piece#14 -- pbuz1=pbuz2 lda current_piece - sta current_piece_79 + sta current_piece_92 lda current_piece+1 - sta current_piece_79+1 - //SEG351 [158] call play_collision - //SEG352 [166] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + sta current_piece_92+1 + //SEG366 [170] call play_collision + //SEG367 [178] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] play_collision_from_b4: - //SEG353 [166] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy - //SEG354 [166] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy - //SEG355 [166] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy - //SEG356 [166] phi (byte*) current_piece#12 = (byte*~) current_piece#79 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + //SEG368 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG369 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG370 [178] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG371 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#92 [phi:play_move_rotate::@4->play_collision#3] -- register_copy jsr play_collision - //SEG357 [159] (byte) play_collision::return#13 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 - lda play_collision.return_14 - sta play_collision.return_13 + //SEG372 [171] (byte) play_collision::return#14 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + lda play_collision.return_15 + sta play_collision.return_14 jmp b14 - //SEG358 play_move_rotate::@14 + //SEG373 play_move_rotate::@14 b14: - //SEG359 [160] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 -- vbuz1=vbuz2 - lda play_collision.return_13 + //SEG374 [172] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + lda play_collision.return_14 sta _6 - //SEG360 [161] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG375 [173] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuz1_neq_vbuc1_then_la1 lda _6 cmp #COLLISION_NONE bne breturn_from_b14 jmp b11 - //SEG361 play_move_rotate::@11 + //SEG376 play_move_rotate::@11 b11: - //SEG362 [162] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG377 [174] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG363 [163] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + //SEG378 [175] (byte*) current_piece_gfx#6 ← (byte*) current_piece#14 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -12222,711 +13265,767 @@ play_move_rotate: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG364 [149] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG379 [161] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] breturn_from_b11: - //SEG365 [149] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#3 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG366 [149] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG367 [149] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuz1=vbuc1 + //SEG380 [161] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#6 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG381 [161] phi (byte) current_orientation#24 = (byte) current_orientation#7 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG382 [161] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuz1=vbuc1 lda #1 - sta return + sta return_2 jmp breturn - //SEG368 play_move_rotate::@1 + //SEG383 play_move_rotate::@1 b1: - //SEG369 [164] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_minus_vbuc1 + //SEG384 [176] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#19 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_minus_vbuc1 lda current_orientation sec sbc #$10 sta _4 - //SEG370 [165] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 + //SEG385 [177] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 lda #$3f and _4 sta orientation jmp b4_from_b1 } -//SEG371 play_collision +//SEG386 play_collision play_collision: { - .label _7 = $96 - .label xpos = $26 - .label ypos = $25 - .label orientation = $24 - .label return = $9d - .label return_1 = $99 - .label piece_gfx = $91 - .label ypos2 = $27 - .label playfield_line = $93 - .label i = $95 - .label col = $2a - .label c = $2b - .label l = $28 - .label return_12 = $97 - .label return_13 = $8e - .label i_2 = $29 - .label return_14 = $2c - .label i_3 = $29 - .label i_11 = $29 - .label i_13 = $29 - //SEG372 [167] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + .label _7 = $99 + .label xpos = $27 + .label ypos = $26 + .label orientation = $25 + .label return = $a0 + .label return_1 = $9c + .label piece_gfx = $94 + .label ypos2 = $28 + .label playfield_line = $96 + .label i = $98 + .label col = $2b + .label c = $2c + .label l = $29 + .label return_10 = $a6 + .label return_13 = $9a + .label return_14 = $91 + .label i_2 = $2a + .label return_15 = $2d + .label i_3 = $2a + .label i_11 = $2a + .label i_13 = $2a + //SEG387 [179] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#16 + (byte) play_collision::orientation#5 -- pbuz1=pbuz2_plus_vbuz3 lda orientation clc - adc current_piece_12 + adc current_piece_16 sta piece_gfx lda #0 - adc current_piece_12+1 + adc current_piece_16+1 sta piece_gfx+1 - //SEG373 [168] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG388 [180] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda ypos asl sta ypos2 - //SEG374 [169] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG389 [181] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] b1_from_play_collision: - //SEG375 [169] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 + //SEG390 [181] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG376 [169] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 + //SEG391 [181] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG377 [169] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG392 [181] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy jmp b1 - //SEG378 play_collision::@1 + //SEG393 play_collision::@1 b1: - //SEG379 [170] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG394 [182] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG380 [171] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 + //SEG395 [183] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 lda xpos sta col - //SEG381 [172] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG396 [184] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] b2_from_b1: - //SEG382 [172] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuz1=vbuc1 + //SEG397 [184] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG383 [172] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG384 [172] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG398 [184] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG399 [184] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy jmp b2 - //SEG385 play_collision::@2 + //SEG400 play_collision::@2 b2: - //SEG386 [173] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG401 [185] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG387 [174] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG402 [186] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b8 - //SEG388 play_collision::@8 + //SEG403 play_collision::@8 b8: - //SEG389 [175] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG404 [187] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG390 [176] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG405 [188] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] breturn_from_b8: - //SEG391 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG406 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_BOTTOM - sta return_14 + sta return_15 jmp breturn - //SEG392 play_collision::@return + //SEG407 play_collision::@return breturn: - //SEG393 [177] return + //SEG408 [189] return rts - //SEG394 play_collision::@4 + //SEG409 play_collision::@4 b4: - //SEG395 [178] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG410 [190] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and col sta _7 - //SEG396 [179] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuz1_eq_0_then_la1 + //SEG411 [191] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuz1_eq_0_then_la1 lda _7 cmp #0 beq b5 - //SEG397 [176] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG412 [188] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] breturn_from_b4: - //SEG398 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG413 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_LEFT - sta return_14 + sta return_15 jmp breturn - //SEG399 play_collision::@5 + //SEG414 play_collision::@5 b5: - //SEG400 [180] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG415 [192] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG401 [176] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG416 [188] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] breturn_from_b5: - //SEG402 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG417 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_RIGHT - sta return_14 + sta return_15 jmp breturn - //SEG403 play_collision::@6 + //SEG418 play_collision::@6 b6: - //SEG404 [181] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG419 [193] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG405 [176] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG420 [188] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] breturn_from_b6: - //SEG406 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG421 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_PLAYFIELD - sta return_14 + sta return_15 jmp breturn - //SEG407 play_collision::@3 + //SEG422 play_collision::@3 b3: - //SEG408 [182] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG423 [194] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG409 [183] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuz1=_inc_vbuz1 + //SEG424 [195] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG410 [184] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuz1_neq_vbuc1_then_la1 + //SEG425 [196] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b21 jmp b17 - //SEG411 play_collision::@17 + //SEG426 play_collision::@17 b17: - //SEG412 [185] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG427 [197] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG413 [186] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG428 [198] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG414 [187] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG429 [199] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG415 [176] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] + //SEG430 [188] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] breturn_from_b17: - //SEG416 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG431 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_NONE - sta return_14 + sta return_15 jmp breturn - //SEG417 play_collision::@20 + //SEG432 play_collision::@20 b20: - //SEG418 [188] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG433 [200] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG419 [169] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] + //SEG434 [181] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] b1_from_b20: - //SEG420 [169] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy - //SEG421 [169] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy - //SEG422 [169] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy + //SEG435 [181] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG436 [181] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG437 [181] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG423 play_collision::@21 + //SEG438 play_collision::@21 b21: - //SEG424 [189] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG439 [201] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG425 [172] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] + //SEG440 [184] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] b2_from_b21: - //SEG426 [172] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy - //SEG427 [172] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy - //SEG428 [172] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy + //SEG441 [184] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG442 [184] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG443 [184] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } -//SEG429 play_move_leftright +//SEG444 play_move_leftright play_move_leftright: { - .label _4 = $98 - .label _8 = $9a - .label return = $2d - .label key_event = $79 - .label return_4 = $7a - //SEG430 [190] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 + .label _4 = $9b + .label _8 = $9d + .label key_event = $89 + .label return = $8a + .label return_2 = $2e + //SEG445 [202] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 lda key_event cmp #KEY_COMMA beq b1 jmp b6 - //SEG431 play_move_leftright::@6 + //SEG446 play_move_leftright::@6 b6: - //SEG432 [191] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG447 [203] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda key_event cmp #KEY_DOT bne breturn_from_b6 jmp b7 - //SEG433 play_move_leftright::@7 + //SEG448 play_move_leftright::@7 b7: - //SEG434 [192] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG449 [204] (byte) play_collision::xpos#2 ← (byte) current_xpos#20 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG435 [193] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 -- vbuz1=vbuz2 + //SEG450 [205] (byte) play_collision::ypos#2 ← (byte) current_ypos#17 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG436 [194] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuz1=vbuz2 + //SEG451 [206] (byte) play_collision::orientation#2 ← (byte) current_orientation#19 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG437 [195] (byte*~) current_piece#78 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG452 [207] (byte*~) current_piece#91 ← (byte*) current_piece#14 -- pbuz1=pbuz2 lda current_piece - sta current_piece_78 + sta current_piece_91 lda current_piece+1 - sta current_piece_78+1 - //SEG438 [196] call play_collision - //SEG439 [166] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + sta current_piece_91+1 + //SEG453 [208] call play_collision + //SEG454 [178] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] play_collision_from_b7: - //SEG440 [166] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy - //SEG441 [166] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy - //SEG442 [166] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy - //SEG443 [166] phi (byte*) current_piece#12 = (byte*~) current_piece#78 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + //SEG455 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG456 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG457 [178] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG458 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#91 [phi:play_move_leftright::@7->play_collision#3] -- register_copy jsr play_collision - //SEG444 [197] (byte) play_collision::return#12 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 - lda play_collision.return_14 - sta play_collision.return_12 + //SEG459 [209] (byte) play_collision::return#13 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + lda play_collision.return_15 + sta play_collision.return_13 jmp b15 - //SEG445 play_move_leftright::@15 + //SEG460 play_move_leftright::@15 b15: - //SEG446 [198] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 -- vbuz1=vbuz2 - lda play_collision.return_12 + //SEG461 [210] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 -- vbuz1=vbuz2 + lda play_collision.return_13 sta _4 - //SEG447 [199] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG462 [211] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda _4 cmp #COLLISION_NONE bne breturn_from_b15 jmp b8 - //SEG448 play_move_leftright::@8 + //SEG463 play_move_leftright::@8 b8: - //SEG449 [200] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 -- vbuz1=_inc_vbuz1 + //SEG464 [212] (byte) current_xpos#5 ← ++ (byte) current_xpos#20 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG450 [201] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + //SEG465 [213] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] breturn_from_b11: breturn_from_b8: - //SEG451 [201] phi (byte) current_xpos#19 = (byte) current_xpos#4 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG452 [201] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuz1=vbuc1 + //SEG466 [213] phi (byte) current_xpos#24 = (byte) current_xpos#7 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG467 [213] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuz1=vbuc1 lda #1 - sta return + sta return_2 jmp breturn - //SEG453 [201] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + //SEG468 [213] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] breturn_from_b14: breturn_from_b15: breturn_from_b6: - //SEG454 [201] phi (byte) current_xpos#19 = (byte) current_xpos#1 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG455 [201] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuz1=vbuc1 + //SEG469 [213] phi (byte) current_xpos#24 = (byte) current_xpos#20 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG470 [213] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuz1=vbuc1 lda #0 - sta return + sta return_2 jmp breturn - //SEG456 play_move_leftright::@return + //SEG471 play_move_leftright::@return breturn: - //SEG457 [202] return + //SEG472 [214] return rts - //SEG458 play_move_leftright::@1 + //SEG473 play_move_leftright::@1 b1: - //SEG459 [203] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG474 [215] (byte) play_collision::xpos#1 ← (byte) current_xpos#20 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG460 [204] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 -- vbuz1=vbuz2 + //SEG475 [216] (byte) play_collision::ypos#1 ← (byte) current_ypos#17 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG461 [205] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuz1=vbuz2 + //SEG476 [217] (byte) play_collision::orientation#1 ← (byte) current_orientation#19 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG462 [206] (byte*~) current_piece#77 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG477 [218] (byte*~) current_piece#90 ← (byte*) current_piece#14 -- pbuz1=pbuz2 lda current_piece - sta current_piece_77 + sta current_piece_90 lda current_piece+1 - sta current_piece_77+1 - //SEG463 [207] call play_collision - //SEG464 [166] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + sta current_piece_90+1 + //SEG478 [219] call play_collision + //SEG479 [178] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] play_collision_from_b1: - //SEG465 [166] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG466 [166] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG467 [166] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG468 [166] phi (byte*) current_piece#12 = (byte*~) current_piece#77 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG480 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG481 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG482 [178] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG483 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#90 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG469 [208] (byte) play_collision::return#1 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 - lda play_collision.return_14 + //SEG484 [220] (byte) play_collision::return#1 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + lda play_collision.return_15 sta play_collision.return_1 jmp b14 - //SEG470 play_move_leftright::@14 + //SEG485 play_move_leftright::@14 b14: - //SEG471 [209] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 -- vbuz1=vbuz2 + //SEG486 [221] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 -- vbuz1=vbuz2 lda play_collision.return_1 sta _8 - //SEG472 [210] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG487 [222] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda _8 cmp #COLLISION_NONE bne breturn_from_b14 jmp b11 - //SEG473 play_move_leftright::@11 + //SEG488 play_move_leftright::@11 b11: - //SEG474 [211] (byte) current_xpos#4 ← -- (byte) current_xpos#1 -- vbuz1=_dec_vbuz1 + //SEG489 [223] (byte) current_xpos#7 ← -- (byte) current_xpos#20 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b11 } -//SEG475 play_move_down +//SEG490 play_move_down play_move_down: { - .label _2 = $9c - .label _12 = $9e - .label movedown = $2e - .label removed = $a0 - .label return = $40 - .label key_event = $75 - .label return_3 = $76 - //SEG476 [212] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 + .label _2 = $9f + .label _12 = $a1 + .label key_event = $86 + .label return = $87 + .label movedown = $2f + .label removed = $a3 + .label return_3 = $41 + //SEG491 [224] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG477 [213] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG492 [225] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuz1_neq_vbuc1_then_la1 lda key_event cmp #KEY_SPACE bne b1_from_play_move_down - //SEG478 [214] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG493 [226] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] b8_from_play_move_down: jmp b8 - //SEG479 play_move_down::@8 + //SEG494 play_move_down::@8 b8: - //SEG480 [215] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG495 [227] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] b1_from_b8: - //SEG481 [215] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuz1=vbuc1 + //SEG496 [227] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuz1=vbuc1 lda #1 sta movedown jmp b1 - //SEG482 [215] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG497 [227] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG483 [215] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuz1=vbuc1 + //SEG498 [227] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuz1=vbuc1 lda #0 sta movedown jmp b1 - //SEG484 play_move_down::@1 + //SEG499 play_move_down::@1 b1: - //SEG485 [216] call keyboard_event_pressed - //SEG486 [339] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG500 [228] call keyboard_event_pressed + //SEG501 [360] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG487 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG502 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG488 [217] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG503 [229] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_12 jmp b17 - //SEG489 play_move_down::@17 + //SEG504 play_move_down::@17 b17: - //SEG490 [218] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 + //SEG505 [230] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_12 sta _2 - //SEG491 [219] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuz1_eq_0_then_la1 + //SEG506 [231] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b17 jmp b9 - //SEG492 play_move_down::@9 + //SEG507 play_move_down::@9 b9: - //SEG493 [220] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG508 [232] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_fast bcc b2_from_b9 jmp b10 - //SEG494 play_move_down::@10 + //SEG509 play_move_down::@10 b10: - //SEG495 [221] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 + //SEG510 [233] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 inc movedown - //SEG496 [222] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] + //SEG511 [234] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] b2_from_b10: b2_from_b17: b2_from_b9: - //SEG497 [222] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy + //SEG512 [234] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy jmp b2 - //SEG498 play_move_down::@2 + //SEG513 play_move_down::@2 b2: - //SEG499 [223] if((byte) current_movedown_counter#1<(byte) current_movedown_slow#12) goto play_move_down::@4 -- vbuz1_lt_vbuz2_then_la1 + //SEG514 [235] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@4 -- vbuz1_lt_vbuz2_then_la1 lda current_movedown_counter cmp current_movedown_slow bcc b4_from_b2 jmp b11 - //SEG500 play_move_down::@11 + //SEG515 play_move_down::@11 b11: - //SEG501 [224] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 + //SEG516 [236] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 inc movedown - //SEG502 [225] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] + //SEG517 [237] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] b4_from_b11: b4_from_b2: - //SEG503 [225] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy + //SEG518 [237] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy jmp b4 - //SEG504 play_move_down::@4 + //SEG519 play_move_down::@4 b4: - //SEG505 [226] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuz1_eq_0_then_la1 + //SEG520 [238] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuz1_eq_0_then_la1 lda movedown cmp #0 beq breturn_from_b4 jmp b12 - //SEG506 play_move_down::@12 + //SEG521 play_move_down::@12 b12: - //SEG507 [227] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG522 [239] (byte) play_collision::ypos#0 ← (byte) current_ypos#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty play_collision.ypos - //SEG508 [228] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 + //SEG523 [240] (byte) play_collision::xpos#0 ← (byte) current_xpos#115 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG509 [229] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuz1=vbuz2 + //SEG524 [241] (byte) play_collision::orientation#0 ← (byte) current_orientation#12 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG510 [230] (byte*~) current_piece#76 ← (byte*) current_piece#16 -- pbuz1=pbuz2 + //SEG525 [242] (byte*~) current_piece#89 ← (byte*) current_piece#20 -- pbuz1=pbuz2 lda current_piece - sta current_piece_76 + sta current_piece_89 lda current_piece+1 - sta current_piece_76+1 - //SEG511 [231] call play_collision - //SEG512 [166] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + sta current_piece_89+1 + //SEG526 [243] call play_collision + //SEG527 [178] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] play_collision_from_b12: - //SEG513 [166] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy - //SEG514 [166] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy - //SEG515 [166] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy - //SEG516 [166] phi (byte*) current_piece#12 = (byte*~) current_piece#76 [phi:play_move_down::@12->play_collision#3] -- register_copy + //SEG528 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG529 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG530 [178] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG531 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#89 [phi:play_move_down::@12->play_collision#3] -- register_copy jsr play_collision - //SEG517 [232] (byte) play_collision::return#0 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 - lda play_collision.return_14 + //SEG532 [244] (byte) play_collision::return#0 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + lda play_collision.return_15 sta play_collision.return jmp b18 - //SEG518 play_move_down::@18 + //SEG533 play_move_down::@18 b18: - //SEG519 [233] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 -- vbuz1=vbuz2 + //SEG534 [245] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 -- vbuz1=vbuz2 lda play_collision.return sta _12 - //SEG520 [234] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuz1_eq_vbuc1_then_la1 + //SEG535 [246] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuz1_eq_vbuc1_then_la1 lda _12 cmp #COLLISION_NONE beq b6 - //SEG521 [235] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG536 [247] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] b13_from_b18: jmp b13 - //SEG522 play_move_down::@13 + //SEG537 play_move_down::@13 b13: - //SEG523 [236] call play_lock_current + //SEG538 [248] call play_lock_current jsr play_lock_current - //SEG524 [237] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG539 [249] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] b19_from_b13: jmp b19 - //SEG525 play_move_down::@19 + //SEG540 play_move_down::@19 b19: - //SEG526 [238] call play_remove_lines - //SEG527 [299] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + //SEG541 [250] call play_remove_lines + //SEG542 [320] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] play_remove_lines_from_b19: jsr play_remove_lines - //SEG528 [239] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 -- vbuz1=vbuz2 + //SEG543 [251] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 -- vbuz1=vbuz2 lda play_remove_lines.removed sta play_remove_lines.return jmp b20 - //SEG529 play_move_down::@20 + //SEG544 play_move_down::@20 b20: - //SEG530 [240] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 -- vbuz1=vbuz2 + //SEG545 [252] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 -- vbuz1=vbuz2 lda play_remove_lines.return sta removed - //SEG531 [241] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuz1=vbuz2 + //SEG546 [253] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuz1=vbuz2 lda removed sta play_update_score.removed - //SEG532 [242] call play_update_score + //SEG547 [254] call play_update_score jsr play_update_score - //SEG533 [243] phi from play_move_down::@20 to play_move_down::@21 [phi:play_move_down::@20->play_move_down::@21] + //SEG548 [255] phi from play_move_down::@20 to play_move_down::@21 [phi:play_move_down::@20->play_move_down::@21] b21_from_b20: jmp b21 - //SEG534 play_move_down::@21 + //SEG549 play_move_down::@21 b21: - //SEG535 [244] call play_spawn_current - //SEG536 [250] phi from play_move_down::@21 to play_spawn_current [phi:play_move_down::@21->play_spawn_current] + //SEG550 [256] call play_spawn_current + //SEG551 [262] phi from play_move_down::@21 to play_spawn_current [phi:play_move_down::@21->play_spawn_current] play_spawn_current_from_b21: + //SEG552 [262] phi (byte) game_over#69 = (byte) game_over#19 [phi:play_move_down::@21->play_spawn_current#0] -- register_copy jsr play_spawn_current - //SEG537 [245] (byte*~) current_piece#80 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG553 [257] (byte*~) current_piece#94 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG538 [246] phi from play_move_down::@21 to play_move_down::@7 [phi:play_move_down::@21->play_move_down::@7] + //SEG554 [258] phi from play_move_down::@21 to play_move_down::@7 [phi:play_move_down::@21->play_move_down::@7] b7_from_b21: - //SEG539 [246] phi (byte) current_piece_char#20 = (byte) current_piece_char#12 [phi:play_move_down::@21->play_move_down::@7#0] -- register_copy - //SEG540 [246] phi (byte) current_xpos#33 = (byte) current_xpos#23 [phi:play_move_down::@21->play_move_down::@7#1] -- register_copy - //SEG541 [246] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#16 [phi:play_move_down::@21->play_move_down::@7#2] -- register_copy - //SEG542 [246] phi (byte) current_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@21->play_move_down::@7#3] -- vbuz1=vbuc1 + //SEG555 [258] phi (byte) game_over#26 = (byte) game_over#15 [phi:play_move_down::@21->play_move_down::@7#0] -- register_copy + //SEG556 [258] phi (byte) current_xpos#41 = (byte) current_xpos#28 [phi:play_move_down::@21->play_move_down::@7#1] -- register_copy + //SEG557 [258] phi (byte*) current_piece_gfx#33 = (byte*) current_piece_gfx#21 [phi:play_move_down::@21->play_move_down::@7#2] -- register_copy + //SEG558 [258] phi (byte) current_orientation#36 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@21->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG543 [246] phi (byte*) current_piece#20 = (byte*~) current_piece#80 [phi:play_move_down::@21->play_move_down::@7#4] -- register_copy - //SEG544 [246] phi (byte) level_bcd#25 = (byte) level_bcd#15 [phi:play_move_down::@21->play_move_down::@7#5] -- register_copy - //SEG545 [246] phi (byte) current_movedown_slow#31 = (byte) current_movedown_slow#19 [phi:play_move_down::@21->play_move_down::@7#6] -- register_copy - //SEG546 [246] phi (byte) level#24 = (byte) level#14 [phi:play_move_down::@21->play_move_down::@7#7] -- register_copy - //SEG547 [246] phi (dword) score_bcd#20 = (dword) score_bcd#12 [phi:play_move_down::@21->play_move_down::@7#8] -- register_copy - //SEG548 [246] phi (word) lines_bcd#20 = (word) lines_bcd#13 [phi:play_move_down::@21->play_move_down::@7#9] -- register_copy - //SEG549 [246] phi (byte) current_ypos#29 = (byte) current_ypos#18 [phi:play_move_down::@21->play_move_down::@7#10] -- register_copy + //SEG559 [258] phi (byte) current_piece_char#27 = (byte) current_piece_char#16 [phi:play_move_down::@21->play_move_down::@7#4] -- register_copy + //SEG560 [258] phi (byte*) current_piece#27 = (byte*~) current_piece#94 [phi:play_move_down::@21->play_move_down::@7#5] -- register_copy + //SEG561 [258] phi (byte) level_bcd#32 = (byte) level_bcd#19 [phi:play_move_down::@21->play_move_down::@7#6] -- register_copy + //SEG562 [258] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#23 [phi:play_move_down::@21->play_move_down::@7#7] -- register_copy + //SEG563 [258] phi (byte) level#31 = (byte) level#18 [phi:play_move_down::@21->play_move_down::@7#8] -- register_copy + //SEG564 [258] phi (dword) score_bcd#27 = (dword) score_bcd#16 [phi:play_move_down::@21->play_move_down::@7#9] -- register_copy + //SEG565 [258] phi (word) lines_bcd#27 = (word) lines_bcd#17 [phi:play_move_down::@21->play_move_down::@7#10] -- register_copy + //SEG566 [258] phi (byte) current_ypos#36 = (byte) current_ypos#22 [phi:play_move_down::@21->play_move_down::@7#11] -- register_copy jmp b7 - //SEG550 play_move_down::@7 + //SEG567 play_move_down::@7 b7: - //SEG551 [247] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG568 [259] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG552 [247] phi (byte) current_piece_char#1 = (byte) current_piece_char#20 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG553 [247] phi (byte) current_xpos#1 = (byte) current_xpos#33 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG554 [247] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#26 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG555 [247] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG556 [247] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG557 [247] phi (byte) level_bcd#13 = (byte) level_bcd#25 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG558 [247] phi (byte) current_movedown_slow#17 = (byte) current_movedown_slow#31 [phi:play_move_down::@7->play_move_down::@return#6] -- register_copy - //SEG559 [247] phi (byte) level#12 = (byte) level#24 [phi:play_move_down::@7->play_move_down::@return#7] -- register_copy - //SEG560 [247] phi (dword) score_bcd#10 = (dword) score_bcd#20 [phi:play_move_down::@7->play_move_down::@return#8] -- register_copy - //SEG561 [247] phi (word) lines_bcd#11 = (word) lines_bcd#20 [phi:play_move_down::@7->play_move_down::@return#9] -- register_copy - //SEG562 [247] phi (byte) current_ypos#13 = (byte) current_ypos#29 [phi:play_move_down::@7->play_move_down::@return#10] -- register_copy - //SEG563 [247] phi (byte) current_movedown_counter#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#11] -- vbuz1=vbuc1 + //SEG569 [259] phi (byte) game_over#14 = (byte) game_over#26 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG570 [259] phi (byte) current_xpos#20 = (byte) current_xpos#41 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG571 [259] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#33 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG572 [259] phi (byte) current_orientation#19 = (byte) current_orientation#36 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG573 [259] phi (byte) current_piece_char#14 = (byte) current_piece_char#27 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG574 [259] phi (byte*) current_piece#14 = (byte*) current_piece#27 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG575 [259] phi (byte) level_bcd#17 = (byte) level_bcd#32 [phi:play_move_down::@7->play_move_down::@return#6] -- register_copy + //SEG576 [259] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#38 [phi:play_move_down::@7->play_move_down::@return#7] -- register_copy + //SEG577 [259] phi (byte) level#16 = (byte) level#31 [phi:play_move_down::@7->play_move_down::@return#8] -- register_copy + //SEG578 [259] phi (dword) score_bcd#14 = (dword) score_bcd#27 [phi:play_move_down::@7->play_move_down::@return#9] -- register_copy + //SEG579 [259] phi (word) lines_bcd#15 = (word) lines_bcd#27 [phi:play_move_down::@7->play_move_down::@return#10] -- register_copy + //SEG580 [259] phi (byte) current_ypos#17 = (byte) current_ypos#36 [phi:play_move_down::@7->play_move_down::@return#11] -- register_copy + //SEG581 [259] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#12] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG564 [247] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#12] -- vbuz1=vbuc1 + //SEG582 [259] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#13] -- vbuz1=vbuc1 lda #1 - sta return + sta return_3 jmp breturn - //SEG565 [247] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG583 [259] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG566 [247] phi (byte) current_piece_char#1 = (byte) current_piece_char#15 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG567 [247] phi (byte) current_xpos#1 = (byte) current_xpos#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG568 [247] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#20 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG569 [247] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG570 [247] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG571 [247] phi (byte) level_bcd#13 = (byte) level_bcd#20 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG572 [247] phi (byte) current_movedown_slow#17 = (byte) current_movedown_slow#12 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG573 [247] phi (byte) level#12 = (byte) level#19 [phi:play_move_down::@4->play_move_down::@return#7] -- register_copy - //SEG574 [247] phi (dword) score_bcd#10 = (dword) score_bcd#14 [phi:play_move_down::@4->play_move_down::@return#8] -- register_copy - //SEG575 [247] phi (word) lines_bcd#11 = (word) lines_bcd#15 [phi:play_move_down::@4->play_move_down::@return#9] -- register_copy - //SEG576 [247] phi (byte) current_ypos#13 = (byte) current_ypos#21 [phi:play_move_down::@4->play_move_down::@return#10] -- register_copy - //SEG577 [247] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#11] -- register_copy - //SEG578 [247] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#12] -- vbuz1=vbuc1 + //SEG584 [259] phi (byte) game_over#14 = (byte) game_over#19 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG585 [259] phi (byte) current_xpos#20 = (byte) current_xpos#115 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG586 [259] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#105 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG587 [259] phi (byte) current_orientation#19 = (byte) current_orientation#12 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG588 [259] phi (byte) current_piece_char#14 = (byte) current_piece_char#19 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG589 [259] phi (byte*) current_piece#14 = (byte*) current_piece#20 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG590 [259] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG591 [259] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@4->play_move_down::@return#7] -- register_copy + //SEG592 [259] phi (byte) level#16 = (byte) level#10 [phi:play_move_down::@4->play_move_down::@return#8] -- register_copy + //SEG593 [259] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@4->play_move_down::@return#9] -- register_copy + //SEG594 [259] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@4->play_move_down::@return#10] -- register_copy + //SEG595 [259] phi (byte) current_ypos#17 = (byte) current_ypos#25 [phi:play_move_down::@4->play_move_down::@return#11] -- register_copy + //SEG596 [259] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@4->play_move_down::@return#12] -- register_copy + //SEG597 [259] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#13] -- vbuz1=vbuc1 lda #0 - sta return + sta return_3 jmp breturn - //SEG579 play_move_down::@return + //SEG598 play_move_down::@return breturn: - //SEG580 [248] return + //SEG599 [260] return rts - //SEG581 play_move_down::@6 + //SEG600 play_move_down::@6 b6: - //SEG582 [249] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 -- vbuz1=_inc_vbuz1 + //SEG601 [261] (byte) current_ypos#2 ← ++ (byte) current_ypos#25 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG583 [246] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG602 [258] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG584 [246] phi (byte) current_piece_char#20 = (byte) current_piece_char#15 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG585 [246] phi (byte) current_xpos#33 = (byte) current_xpos#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG586 [246] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#20 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG587 [246] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG588 [246] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG589 [246] phi (byte) level_bcd#25 = (byte) level_bcd#20 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy - //SEG590 [246] phi (byte) current_movedown_slow#31 = (byte) current_movedown_slow#12 [phi:play_move_down::@6->play_move_down::@7#6] -- register_copy - //SEG591 [246] phi (byte) level#24 = (byte) level#19 [phi:play_move_down::@6->play_move_down::@7#7] -- register_copy - //SEG592 [246] phi (dword) score_bcd#20 = (dword) score_bcd#14 [phi:play_move_down::@6->play_move_down::@7#8] -- register_copy - //SEG593 [246] phi (word) lines_bcd#20 = (word) lines_bcd#15 [phi:play_move_down::@6->play_move_down::@7#9] -- register_copy - //SEG594 [246] phi (byte) current_ypos#29 = (byte) current_ypos#0 [phi:play_move_down::@6->play_move_down::@7#10] -- register_copy + //SEG603 [258] phi (byte) game_over#26 = (byte) game_over#19 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG604 [258] phi (byte) current_xpos#41 = (byte) current_xpos#115 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG605 [258] phi (byte*) current_piece_gfx#33 = (byte*) current_piece_gfx#105 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG606 [258] phi (byte) current_orientation#36 = (byte) current_orientation#12 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG607 [258] phi (byte) current_piece_char#27 = (byte) current_piece_char#19 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG608 [258] phi (byte*) current_piece#27 = (byte*) current_piece#20 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG609 [258] phi (byte) level_bcd#32 = (byte) level_bcd#11 [phi:play_move_down::@6->play_move_down::@7#6] -- register_copy + //SEG610 [258] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#14 [phi:play_move_down::@6->play_move_down::@7#7] -- register_copy + //SEG611 [258] phi (byte) level#31 = (byte) level#10 [phi:play_move_down::@6->play_move_down::@7#8] -- register_copy + //SEG612 [258] phi (dword) score_bcd#27 = (dword) score_bcd#18 [phi:play_move_down::@6->play_move_down::@7#9] -- register_copy + //SEG613 [258] phi (word) lines_bcd#27 = (word) lines_bcd#19 [phi:play_move_down::@6->play_move_down::@7#10] -- register_copy + //SEG614 [258] phi (byte) current_ypos#36 = (byte) current_ypos#2 [phi:play_move_down::@6->play_move_down::@7#11] -- register_copy jmp b7 } -//SEG595 play_spawn_current +//SEG615 play_spawn_current play_spawn_current: { - .label _1 = $a4 - .label _3 = $a2 - .label piece_idx = $41 - //SEG596 [251] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] + .label _1 = $a9 + .label _3 = $a5 + .label _5 = $a7 + .label piece_idx = $43 + //SEG616 [263] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] b1_from_play_spawn_current: - //SEG597 [251] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuz1=vbuc1 + //SEG617 [263] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuz1=vbuc1 lda #7 sta piece_idx jmp b1 - //SEG598 play_spawn_current::@1 + //SEG618 play_spawn_current::@1 b1: - //SEG599 [252] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG619 [264] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuz1_eq_vbuc1_then_la1 lda piece_idx cmp #7 beq b2_from_b1 jmp b3 - //SEG600 play_spawn_current::@3 + //SEG620 play_spawn_current::@3 b3: - //SEG601 [253] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG621 [265] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda piece_idx asl sta _3 - //SEG602 [254] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + //SEG622 [266] (byte) current_piece_char#16 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy piece_idx + lda PIECES_CHARS,y + sta current_piece_char + //SEG623 [267] (byte*) current_piece_gfx#21 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 ldy _3 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG603 [255] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG624 [268] (byte) current_xpos#28 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy piece_idx lda PIECES_START_X,y sta current_xpos - //SEG604 [256] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG625 [269] (byte) current_ypos#22 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy piece_idx lda PIECES_START_Y,y sta current_ypos - //SEG605 [257] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 - ldy piece_idx - lda PIECES_CHARS,y - sta current_piece_char + //SEG626 [270] (byte) play_collision::xpos#4 ← (byte) current_xpos#28 -- vbuz1=vbuz2 + lda current_xpos + sta play_collision.xpos + //SEG627 [271] (byte) play_collision::ypos#4 ← (byte) current_ypos#22 -- vbuz1=vbuz2 + lda current_ypos + sta play_collision.ypos + //SEG628 [272] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + ldy _3 + lda PIECES,y + sta current_piece_93 + lda PIECES+1,y + sta current_piece_93+1 + //SEG629 [273] call play_collision + //SEG630 [178] phi from play_spawn_current::@3 to play_collision [phi:play_spawn_current::@3->play_collision] + play_collision_from_b3: + //SEG631 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current::@3->play_collision#0] -- register_copy + //SEG632 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#4 [phi:play_spawn_current::@3->play_collision#1] -- register_copy + //SEG633 [178] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current::@3->play_collision#2] -- vbuz1=vbuc1 + lda #0 + sta play_collision.orientation + //SEG634 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#93 [phi:play_spawn_current::@3->play_collision#3] -- register_copy + jsr play_collision + //SEG635 [274] (byte) play_collision::return#10 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + lda play_collision.return_15 + sta play_collision.return_10 + jmp b10 + //SEG636 play_spawn_current::@10 + b10: + //SEG637 [275] (byte~) play_spawn_current::$5 ← (byte) play_collision::return#10 -- vbuz1=vbuz2 + lda play_collision.return_10 + sta _5 + //SEG638 [276] if((byte~) play_spawn_current::$5!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@11 -- vbuz1_neq_vbuc1_then_la1 + lda _5 + cmp #COLLISION_PLAYFIELD + bne b11_from_b10 + //SEG639 [277] phi from play_spawn_current::@10 to play_spawn_current::@return [phi:play_spawn_current::@10->play_spawn_current::@return] + breturn_from_b10: + //SEG640 [277] phi (byte) game_over#15 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@10->play_spawn_current::@return#0] -- vbuz1=vbuc1 + lda #1 + sta game_over jmp breturn - //SEG606 play_spawn_current::@return + //SEG641 play_spawn_current::@return breturn: - //SEG607 [258] return + //SEG642 [278] return rts - //SEG608 [259] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG643 [279] phi from play_spawn_current::@10 to play_spawn_current::@11 [phi:play_spawn_current::@10->play_spawn_current::@11] + b11_from_b10: + jmp b11 + //SEG644 play_spawn_current::@11 + b11: + //SEG645 [277] phi from play_spawn_current::@11 to play_spawn_current::@return [phi:play_spawn_current::@11->play_spawn_current::@return] + breturn_from_b11: + //SEG646 [277] phi (byte) game_over#15 = (byte) game_over#69 [phi:play_spawn_current::@11->play_spawn_current::@return#0] -- register_copy + jmp breturn + //SEG647 [280] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] b2_from_b1: jmp b2 - //SEG609 play_spawn_current::@2 + //SEG648 play_spawn_current::@2 b2: - //SEG610 [260] call sid_rnd + //SEG649 [281] call sid_rnd jsr sid_rnd - //SEG611 [261] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 + //SEG650 [282] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 lda sid_rnd.return sta sid_rnd.return_2 - jmp b7 - //SEG612 play_spawn_current::@7 - b7: - //SEG613 [262] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 + jmp b9 + //SEG651 play_spawn_current::@9 + b9: + //SEG652 [283] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 lda sid_rnd.return_2 sta _1 - //SEG614 [263] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG653 [284] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and _1 sta piece_idx - //SEG615 [251] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] - b1_from_b7: - //SEG616 [251] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@7->play_spawn_current::@1#0] -- register_copy + //SEG654 [263] phi from play_spawn_current::@9 to play_spawn_current::@1 [phi:play_spawn_current::@9->play_spawn_current::@1] + b1_from_b9: + //SEG655 [263] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@9->play_spawn_current::@1#0] -- register_copy jmp b1 } -//SEG617 sid_rnd +//SEG656 sid_rnd sid_rnd: { - .label return = $a5 - .label return_2 = $a3 - //SEG618 [264] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 + .label return = $aa + .label return_2 = $a8 + //SEG657 [285] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 lda SID_VOICE3_OSC sta return jmp breturn - //SEG619 sid_rnd::@return + //SEG658 sid_rnd::@return breturn: - //SEG620 [265] return + //SEG659 [286] return rts } -//SEG621 play_update_score +//SEG660 play_update_score play_update_score: { - .label _2 = $a6 - .label _4 = $a8 - .label _5 = $ad - .label removed = $a1 - .label lines_before = $a7 - .label add_bcd = $a9 - .label lines_after = $ae - //SEG622 [266] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuz1_eq_0_then_la1 + .label _2 = $ab + .label _4 = $ad + .label _5 = $b2 + .label removed = $a4 + .label lines_before = $ac + .label add_bcd = $ae + .label lines_after = $b3 + //SEG661 [287] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuz1_eq_0_then_la1 lda removed cmp #0 beq breturn_from_play_update_score jmp b3 - //SEG623 play_update_score::@3 + //SEG662 play_update_score::@3 b3: - //SEG624 [267] (byte~) play_update_score::$2 ← < (word) lines_bcd#15 -- vbuz1=_lo_vwuz2 + //SEG663 [288] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuz1=_lo_vwuz2 lda lines_bcd sta _2 - //SEG625 [268] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuz2_band_vbuc1 + //SEG664 [289] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuz2_band_vbuc1 lda #$f0 and _2 sta lines_before - //SEG626 [269] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 + //SEG665 [290] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 lda removed asl asl sta _4 - //SEG627 [270] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuz2 + //SEG666 [291] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuz2 ldy _4 lda score_add_bcd,y sta add_bcd @@ -12936,9 +14035,9 @@ play_update_score: { sta add_bcd+2 lda score_add_bcd+3,y sta add_bcd+3 - //SEG628 asm { sed } + //SEG667 asm { sed } sed - //SEG629 [272] (word) lines_bcd#23 ← (word) lines_bcd#15 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuz2 + //SEG668 [293] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuz2 lda removed clc adc lines_bcd @@ -12946,7 +14045,7 @@ play_update_score: { lda #0 adc lines_bcd+1 sta lines_bcd+1 - //SEG630 [273] (dword) score_bcd#23 ← (dword) score_bcd#14 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 + //SEG669 [294] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 lda score_bcd clc adc add_bcd @@ -12960,118 +14059,118 @@ play_update_score: { lda score_bcd+3 adc add_bcd+3 sta score_bcd+3 - //SEG631 asm { cld } + //SEG670 asm { cld } cld - //SEG632 [275] (byte~) play_update_score::$5 ← < (word) lines_bcd#23 -- vbuz1=_lo_vwuz2 + //SEG671 [296] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 -- vbuz1=_lo_vwuz2 lda lines_bcd sta _5 - //SEG633 [276] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuz2_band_vbuc1 + //SEG672 [297] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuz2_band_vbuc1 lda #$f0 and _5 sta lines_after - //SEG634 [277] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuz2_then_la1 + //SEG673 [298] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuz2_then_la1 lda lines_before cmp lines_after beq breturn_from_b3 - //SEG635 [278] phi from play_update_score::@3 to play_update_score::@4 [phi:play_update_score::@3->play_update_score::@4] + //SEG674 [299] phi from play_update_score::@3 to play_update_score::@4 [phi:play_update_score::@3->play_update_score::@4] b4_from_b3: jmp b4 - //SEG636 play_update_score::@4 + //SEG675 play_update_score::@4 b4: - //SEG637 [279] call play_increase_level + //SEG676 [300] call play_increase_level jsr play_increase_level - //SEG638 [280] phi from play_update_score play_update_score::@3 play_update_score::@4 to play_update_score::@return [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return] + //SEG677 [301] phi from play_update_score play_update_score::@3 play_update_score::@4 to play_update_score::@return [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return] breturn_from_play_update_score: breturn_from_b3: breturn_from_b4: - //SEG639 [280] phi (byte) level_bcd#15 = (byte) level_bcd#20 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#0] -- register_copy - //SEG640 [280] phi (byte) current_movedown_slow#19 = (byte) current_movedown_slow#12 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#1] -- register_copy - //SEG641 [280] phi (byte) level#14 = (byte) level#19 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#2] -- register_copy - //SEG642 [280] phi (dword) score_bcd#12 = (dword) score_bcd#14 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#3] -- register_copy - //SEG643 [280] phi (word) lines_bcd#13 = (word) lines_bcd#15 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#4] -- register_copy + //SEG678 [301] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#0] -- register_copy + //SEG679 [301] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#1] -- register_copy + //SEG680 [301] phi (byte) level#18 = (byte) level#10 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#2] -- register_copy + //SEG681 [301] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#3] -- register_copy + //SEG682 [301] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#4] -- register_copy jmp breturn - //SEG644 play_update_score::@return + //SEG683 play_update_score::@return breturn: - //SEG645 [281] return + //SEG684 [302] return rts } -//SEG646 play_increase_level +//SEG685 play_increase_level play_increase_level: { - .label _1 = $af - .label b4 = $b0 - .label b = $42 - //SEG647 [282] (byte) level#16 ← ++ (byte) level#19 -- vbuz1=_inc_vbuz1 + .label _1 = $b4 + .label b4 = $b5 + .label b = $44 + //SEG686 [303] (byte) level#20 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 inc level - //SEG648 [283] if((byte) level#16>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 -- vbuz1_gt_vbuc1_then_la1 + //SEG687 [304] if((byte) level#20>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 -- vbuz1_gt_vbuc1_then_la1 lda level cmp #$1d beq !+ bcs b2_from_play_increase_level !: jmp b5 - //SEG649 play_increase_level::@5 + //SEG688 play_increase_level::@5 b5: - //SEG650 [284] (byte) current_movedown_slow#8 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#16) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG689 [305] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#20) -- vbuz1=pbuc1_derefidx_vbuz2 ldy level lda MOVEDOWN_SLOW_SPEEDS,y sta current_movedown_slow - //SEG651 [285] phi from play_increase_level::@5 to play_increase_level::@2 [phi:play_increase_level::@5->play_increase_level::@2] + //SEG690 [306] phi from play_increase_level::@5 to play_increase_level::@2 [phi:play_increase_level::@5->play_increase_level::@2] b2_from_b5: - //SEG652 [285] phi (byte) current_movedown_slow#60 = (byte) current_movedown_slow#8 [phi:play_increase_level::@5->play_increase_level::@2#0] -- register_copy + //SEG691 [306] phi (byte) current_movedown_slow#68 = (byte) current_movedown_slow#10 [phi:play_increase_level::@5->play_increase_level::@2#0] -- register_copy jmp b2 - //SEG653 [285] phi from play_increase_level to play_increase_level::@2 [phi:play_increase_level->play_increase_level::@2] + //SEG692 [306] phi from play_increase_level to play_increase_level::@2 [phi:play_increase_level->play_increase_level::@2] b2_from_play_increase_level: - //SEG654 [285] phi (byte) current_movedown_slow#60 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@2#0] -- vbuz1=vbuc1 + //SEG693 [306] phi (byte) current_movedown_slow#68 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@2#0] -- vbuz1=vbuc1 lda #1 sta current_movedown_slow jmp b2 - //SEG655 play_increase_level::@2 + //SEG694 play_increase_level::@2 b2: - //SEG656 [286] (byte) level_bcd#17 ← ++ (byte) level_bcd#20 -- vbuz1=_inc_vbuz1 + //SEG695 [307] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 inc level_bcd - //SEG657 [287] (byte~) play_increase_level::$1 ← (byte) level_bcd#17 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG696 [308] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and level_bcd sta _1 - //SEG658 [288] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG697 [309] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 -- vbuz1_neq_vbuc1_then_la1 lda _1 cmp #$a bne b3_from_b2 jmp b7 - //SEG659 play_increase_level::@7 + //SEG698 play_increase_level::@7 b7: - //SEG660 [289] (byte) level_bcd#6 ← (byte) level_bcd#17 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 + //SEG699 [310] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 lda #6 clc adc level_bcd sta level_bcd - //SEG661 [290] phi from play_increase_level::@2 play_increase_level::@7 to play_increase_level::@3 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3] + //SEG700 [311] phi from play_increase_level::@2 play_increase_level::@7 to play_increase_level::@3 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3] b3_from_b2: b3_from_b7: - //SEG662 [290] phi (byte) level_bcd#55 = (byte) level_bcd#17 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3#0] -- register_copy + //SEG701 [311] phi (byte) level_bcd#63 = (byte) level_bcd#21 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3#0] -- register_copy jmp b3 - //SEG663 play_increase_level::@3 + //SEG702 play_increase_level::@3 b3: - //SEG664 asm { sed } + //SEG703 asm { sed } sed - //SEG665 [292] phi from play_increase_level::@3 to play_increase_level::@4 [phi:play_increase_level::@3->play_increase_level::@4] + //SEG704 [313] phi from play_increase_level::@3 to play_increase_level::@4 [phi:play_increase_level::@3->play_increase_level::@4] b4_from_b3: - //SEG666 [292] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@3->play_increase_level::@4#0] -- vbuz1=vbuc1 + //SEG705 [313] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@3->play_increase_level::@4#0] -- vbuz1=vbuc1 lda #0 sta b jmp b4 - //SEG667 [292] phi from play_increase_level::@4 to play_increase_level::@4 [phi:play_increase_level::@4->play_increase_level::@4] + //SEG706 [313] phi from play_increase_level::@4 to play_increase_level::@4 [phi:play_increase_level::@4->play_increase_level::@4] b4_from_b4: - //SEG668 [292] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@4->play_increase_level::@4#0] -- register_copy + //SEG707 [313] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@4->play_increase_level::@4#0] -- register_copy jmp b4 - //SEG669 play_increase_level::@4 + //SEG708 play_increase_level::@4 b4: - //SEG670 [293] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 + //SEG709 [314] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 lda b asl asl sta b4 - //SEG671 [294] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuz1=pduc1_derefidx_vbuz1_plus_pduc2_derefidx_vbuz1 + //SEG710 [315] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuz1=pduc1_derefidx_vbuz1_plus_pduc2_derefidx_vbuz1 ldy b4 clc lda score_add_bcd,y @@ -13086,783 +14185,783 @@ play_increase_level: { lda score_add_bcd+3,y adc SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG672 [295] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuz1=_inc_vbuz1 + //SEG711 [316] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG673 [296] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG712 [317] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 -- vbuz1_neq_vbuc1_then_la1 lda b cmp #5 bne b4_from_b4 jmp b8 - //SEG674 play_increase_level::@8 + //SEG713 play_increase_level::@8 b8: - //SEG675 asm { cld } + //SEG714 asm { cld } cld jmp breturn - //SEG676 play_increase_level::@return + //SEG715 play_increase_level::@return breturn: - //SEG677 [298] return + //SEG716 [319] return rts } -//SEG678 play_remove_lines +//SEG717 play_remove_lines play_remove_lines: { - .label return = $9f - .label c = $b1 - .label r = $45 - .label w = $48 - .label x = $46 - .label y = $43 - .label removed = $44 - .label full = $47 - //SEG679 [300] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + .label return = $a2 + .label c = $b6 + .label r = $47 + .label w = $4a + .label x = $48 + .label y = $45 + .label removed = $46 + .label full = $49 + //SEG718 [321] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] b1_from_play_remove_lines: - //SEG680 [300] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG719 [321] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta removed - //SEG681 [300] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG720 [321] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG682 [300] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuz1=vbuc1 + //SEG721 [321] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuz1=vbuc1 lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 sta w - //SEG683 [300] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuz1=vbuc1 + //SEG722 [321] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuz1=vbuc1 lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 sta r jmp b1 - //SEG684 [300] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] + //SEG723 [321] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] b1_from_b4: - //SEG685 [300] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#7 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy - //SEG686 [300] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy - //SEG687 [300] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy - //SEG688 [300] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#3] -- register_copy + //SEG724 [321] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#7 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy + //SEG725 [321] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy + //SEG726 [321] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy + //SEG727 [321] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#3] -- register_copy jmp b1 - //SEG689 play_remove_lines::@1 + //SEG728 play_remove_lines::@1 b1: - //SEG690 [301] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG729 [322] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] b2_from_b1: - //SEG691 [301] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG730 [322] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG692 [301] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG731 [322] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG693 [301] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy - //SEG694 [301] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy + //SEG732 [322] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG733 [322] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG695 [301] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG734 [322] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] b2_from_b3: - //SEG696 [301] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy - //SEG697 [301] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy - //SEG698 [301] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy - //SEG699 [301] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy + //SEG735 [322] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG736 [322] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG737 [322] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG738 [322] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG700 play_remove_lines::@2 + //SEG739 play_remove_lines::@2 b2: - //SEG701 [302] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG740 [323] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy r lda playfield,y sta c - //SEG702 [303] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuz1=_dec_vbuz1 + //SEG741 [324] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuz1=_dec_vbuz1 dec r - //SEG703 [304] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 -- vbuz1_neq_0_then_la1 + //SEG742 [325] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b18_from_b2 - //SEG704 [305] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG743 [326] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] b3_from_b2: - //SEG705 [305] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG744 [326] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full jmp b3 - //SEG706 play_remove_lines::@3 + //SEG745 play_remove_lines::@3 b3: - //SEG707 [306] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG746 [327] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda c ldy w sta playfield,y - //SEG708 [307] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuz1=_dec_vbuz1 + //SEG747 [328] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuz1=_dec_vbuz1 dec w - //SEG709 [308] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG748 [329] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG710 [309] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG749 [330] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2_from_b3 jmp b9 - //SEG711 play_remove_lines::@9 + //SEG750 play_remove_lines::@9 b9: - //SEG712 [310] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG751 [331] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4_from_b9 jmp b10 - //SEG713 play_remove_lines::@10 + //SEG752 play_remove_lines::@10 b10: - //SEG714 [311] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG753 [332] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc w sta w - //SEG715 [312] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 + //SEG754 [333] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 inc removed - //SEG716 [313] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] + //SEG755 [334] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] b4_from_b10: b4_from_b9: - //SEG717 [313] phi (byte) play_remove_lines::removed#7 = (byte) play_remove_lines::removed#1 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy - //SEG718 [313] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#1] -- register_copy + //SEG756 [334] phi (byte) play_remove_lines::removed#7 = (byte) play_remove_lines::removed#1 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy + //SEG757 [334] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#1] -- register_copy jmp b4 - //SEG719 play_remove_lines::@4 + //SEG758 play_remove_lines::@4 b4: - //SEG720 [314] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG759 [335] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG721 [315] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG760 [336] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1_from_b4 - //SEG722 [316] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] + //SEG761 [337] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] b5_from_b4: b5_from_b6: - //SEG723 [316] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy + //SEG762 [337] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy jmp b5 - //SEG724 play_remove_lines::@5 + //SEG763 play_remove_lines::@5 b5: - //SEG725 [317] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG764 [338] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 lda w cmp #$ff bne b6 jmp breturn - //SEG726 play_remove_lines::@return + //SEG765 play_remove_lines::@return breturn: - //SEG727 [318] return + //SEG766 [339] return rts - //SEG728 play_remove_lines::@6 + //SEG767 play_remove_lines::@6 b6: - //SEG729 [319] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG768 [340] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy w lda #0 sta playfield,y - //SEG730 [320] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuz1=_dec_vbuz1 + //SEG769 [341] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuz1=_dec_vbuz1 dec w jmp b5_from_b6 - //SEG731 [321] phi from play_remove_lines::@2 to play_remove_lines::@18 [phi:play_remove_lines::@2->play_remove_lines::@18] + //SEG770 [342] phi from play_remove_lines::@2 to play_remove_lines::@18 [phi:play_remove_lines::@2->play_remove_lines::@18] b18_from_b2: jmp b18 - //SEG732 play_remove_lines::@18 + //SEG771 play_remove_lines::@18 b18: - //SEG733 [305] phi from play_remove_lines::@18 to play_remove_lines::@3 [phi:play_remove_lines::@18->play_remove_lines::@3] + //SEG772 [326] phi from play_remove_lines::@18 to play_remove_lines::@3 [phi:play_remove_lines::@18->play_remove_lines::@3] b3_from_b18: - //SEG734 [305] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@18->play_remove_lines::@3#0] -- register_copy + //SEG773 [326] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@18->play_remove_lines::@3#0] -- register_copy jmp b3 } -//SEG735 play_lock_current +//SEG774 play_lock_current play_lock_current: { - .label ypos2 = $49 - .label playfield_line = $b2 - .label col = $4c - .label i = $b4 - .label c = $4d - .label l = $4a - .label i_2 = $4b - .label i_3 = $4b - .label i_7 = $4b - .label i_9 = $4b - //SEG736 [322] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + .label ypos2 = $4b + .label playfield_line = $b7 + .label col = $4e + .label i = $b9 + .label c = $4f + .label l = $4c + .label i_2 = $4d + .label i_3 = $4d + .label i_7 = $4d + .label i_9 = $4d + //SEG775 [343] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#25 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda current_ypos asl sta ypos2 - //SEG737 [323] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG776 [344] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] b1_from_play_lock_current: - //SEG738 [323] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 + //SEG777 [344] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG739 [323] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 + //SEG778 [344] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG740 [323] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG779 [344] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG741 play_lock_current::@1 + //SEG780 play_lock_current::@1 b1: - //SEG742 [324] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG781 [345] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG743 [325] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 + //SEG782 [346] (byte) play_lock_current::col#0 ← (byte) current_xpos#115 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG744 [326] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG783 [347] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] b2_from_b1: - //SEG745 [326] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuz1=vbuc1 + //SEG784 [347] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG746 [326] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy - //SEG747 [326] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy + //SEG785 [347] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG786 [347] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy jmp b2 - //SEG748 play_lock_current::@2 + //SEG787 play_lock_current::@2 b2: - //SEG749 [327] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG788 [348] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG750 [328] if(*((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG789 [349] if(*((byte*) current_piece_gfx#105 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG751 play_lock_current::@4 + //SEG790 play_lock_current::@4 b4: - //SEG752 [329] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG791 [350] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#19 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy col sta (playfield_line),y jmp b3 - //SEG753 play_lock_current::@3 + //SEG792 play_lock_current::@3 b3: - //SEG754 [330] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG793 [351] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG755 [331] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG794 [352] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG756 [332] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG795 [353] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b8 jmp b5 - //SEG757 play_lock_current::@5 + //SEG796 play_lock_current::@5 b5: - //SEG758 [333] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG797 [354] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG759 [334] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG798 [355] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG760 [335] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG799 [356] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 jmp breturn - //SEG761 play_lock_current::@return + //SEG800 play_lock_current::@return breturn: - //SEG762 [336] return + //SEG801 [357] return rts - //SEG763 play_lock_current::@7 + //SEG802 play_lock_current::@7 b7: - //SEG764 [337] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG803 [358] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG765 [323] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] + //SEG804 [344] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] b1_from_b7: - //SEG766 [323] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy - //SEG767 [323] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy - //SEG768 [323] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy + //SEG805 [344] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy + //SEG806 [344] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy + //SEG807 [344] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG769 play_lock_current::@8 + //SEG808 play_lock_current::@8 b8: - //SEG770 [338] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG809 [359] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG771 [326] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] + //SEG810 [347] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] b2_from_b8: - //SEG772 [326] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy - //SEG773 [326] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy - //SEG774 [326] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy + //SEG811 [347] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy + //SEG812 [347] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy + //SEG813 [347] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG775 keyboard_event_pressed +//SEG814 keyboard_event_pressed keyboard_event_pressed: { - .label _0 = $b5 - .label _1 = $b7 - .label return = $bc - .label return_1 = $be - .label return_2 = $c0 - .label row_bits = $b6 - .label return_10 = $c2 - .label keycode = $4e - .label return_11 = $b8 - .label return_12 = $9b - //SEG776 [340] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 + .label _0 = $ba + .label _1 = $bc + .label return = $c1 + .label return_1 = $c3 + .label return_2 = $c5 + .label row_bits = $bb + .label return_10 = $c7 + .label keycode = $50 + .label return_11 = $bd + .label return_12 = $9e + //SEG815 [361] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 lda keycode lsr lsr lsr sta _0 - //SEG777 [341] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG816 [362] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda keyboard_scan_values,y sta row_bits - //SEG778 [342] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG817 [363] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and keycode sta _1 - //SEG779 [343] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG818 [364] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda row_bits ldy _1 and keyboard_matrix_col_bitmask,y sta return_11 jmp breturn - //SEG780 keyboard_event_pressed::@return + //SEG819 keyboard_event_pressed::@return breturn: - //SEG781 [344] return + //SEG820 [365] return rts } -//SEG782 keyboard_event_get +//SEG821 keyboard_event_get keyboard_event_get: { - .label return = $4f - .label return_3 = $73 - //SEG783 [345] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + .label return = $51 + .label return_3 = $75 + //SEG822 [366] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq breturn_from_keyboard_event_get jmp b3 - //SEG784 keyboard_event_get::@3 + //SEG823 keyboard_event_get::@3 b3: - //SEG785 [346] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG824 [367] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG786 [347] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG825 [368] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 ldy keyboard_events_size lda keyboard_events,y sta return - //SEG787 [348] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG826 [369] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG788 [348] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG789 [348] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG827 [369] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG828 [369] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG790 [348] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG829 [369] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG791 [348] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG792 [348] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 + //SEG830 [369] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG831 [369] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 lda #$ff sta return jmp breturn - //SEG793 keyboard_event_get::@return + //SEG832 keyboard_event_get::@return breturn: - //SEG794 [349] return + //SEG833 [370] return rts } -//SEG795 keyboard_event_scan +//SEG834 keyboard_event_scan keyboard_event_scan: { - .label _3 = $c5 - .label _4 = $c6 - .label _11 = $c8 - .label _14 = $bd - .label _18 = $bf - .label _22 = $c1 - .label _26 = $c3 - .label row_scan = $bb - .label keycode = $53 - .label row = $50 - .label col = $52 - .label event_type = $c7 - //SEG796 [351] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + .label _3 = $ca + .label _4 = $cb + .label _11 = $cd + .label _14 = $c2 + .label _18 = $c4 + .label _22 = $c6 + .label _26 = $c8 + .label row_scan = $c0 + .label keycode = $55 + .label row = $52 + .label col = $54 + .label event_type = $cc + //SEG835 [372] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG797 [351] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG798 [351] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG836 [372] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG837 [372] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG799 [351] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG838 [372] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 lda #0 sta row jmp b1 - //SEG800 [351] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG839 [372] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG801 [351] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG802 [351] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG803 [351] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG840 [372] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG841 [372] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG842 [372] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy jmp b1 - //SEG804 keyboard_event_scan::@1 + //SEG843 keyboard_event_scan::@1 b1: - //SEG805 [352] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 + //SEG844 [373] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 lda row sta keyboard_matrix_read.rowid - //SEG806 [353] call keyboard_matrix_read + //SEG845 [374] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG807 [354] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG846 [375] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 lda keyboard_matrix_read.return sta keyboard_matrix_read.return_2 jmp b25 - //SEG808 keyboard_event_scan::@25 + //SEG847 keyboard_event_scan::@25 b25: - //SEG809 [355] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG848 [376] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta row_scan - //SEG810 [356] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG849 [377] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b4_from_b25 jmp b13 - //SEG811 keyboard_event_scan::@13 + //SEG850 keyboard_event_scan::@13 b13: - //SEG812 [357] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG851 [378] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG813 [358] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG852 [379] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] b3_from_b13: b3_from_b19: - //SEG814 [358] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG815 [358] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG853 [379] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG854 [379] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy jmp b3 - //SEG816 keyboard_event_scan::@3 + //SEG855 keyboard_event_scan::@3 b3: - //SEG817 [359] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG856 [380] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG818 [360] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG857 [381] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1_from_b3 - //SEG819 [361] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG858 [382] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] b20_from_b3: jmp b20 - //SEG820 keyboard_event_scan::@20 + //SEG859 keyboard_event_scan::@20 b20: - //SEG821 [362] call keyboard_event_pressed - //SEG822 [339] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG860 [383] call keyboard_event_pressed + //SEG861 [360] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG823 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG862 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG824 [363] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG863 [384] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return jmp b26 - //SEG825 keyboard_event_scan::@26 + //SEG864 keyboard_event_scan::@26 b26: - //SEG826 [364] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 + //SEG865 [385] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_event_pressed.return sta _14 - //SEG827 [365] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuz1_eq_0_then_la1 + //SEG866 [386] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuz1_eq_0_then_la1 lda _14 cmp #0 beq b9_from_b26 - //SEG828 [366] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG867 [387] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] b21_from_b26: jmp b21 - //SEG829 keyboard_event_scan::@21 + //SEG868 keyboard_event_scan::@21 b21: - //SEG830 [367] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG869 [388] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] b9_from_b21: - //SEG831 [367] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 + //SEG870 [388] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 lda #0|KEY_MODIFIER_LSHIFT sta keyboard_modifiers jmp b9 - //SEG832 [367] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG871 [388] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b26: - //SEG833 [367] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 + //SEG872 [388] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 lda #0 sta keyboard_modifiers jmp b9 - //SEG834 keyboard_event_scan::@9 + //SEG873 keyboard_event_scan::@9 b9: - //SEG835 [368] call keyboard_event_pressed - //SEG836 [339] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG874 [389] call keyboard_event_pressed + //SEG875 [360] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG837 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG876 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG838 [369] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG877 [390] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_1 jmp b27 - //SEG839 keyboard_event_scan::@27 + //SEG878 keyboard_event_scan::@27 b27: - //SEG840 [370] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 + //SEG879 [391] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_1 sta _18 - //SEG841 [371] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 + //SEG880 [392] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 lda _18 cmp #0 beq b10_from_b27 jmp b22 - //SEG842 keyboard_event_scan::@22 + //SEG881 keyboard_event_scan::@22 b22: - //SEG843 [372] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG882 [393] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 lda #KEY_MODIFIER_RSHIFT ora keyboard_modifiers sta keyboard_modifiers - //SEG844 [373] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG883 [394] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] b10_from_b22: b10_from_b27: - //SEG845 [373] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy + //SEG884 [394] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy jmp b10 - //SEG846 keyboard_event_scan::@10 + //SEG885 keyboard_event_scan::@10 b10: - //SEG847 [374] call keyboard_event_pressed - //SEG848 [339] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG886 [395] call keyboard_event_pressed + //SEG887 [360] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG849 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG888 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG850 [375] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG889 [396] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_2 jmp b28 - //SEG851 keyboard_event_scan::@28 + //SEG890 keyboard_event_scan::@28 b28: - //SEG852 [376] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 + //SEG891 [397] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_2 sta _22 - //SEG853 [377] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 + //SEG892 [398] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 lda _22 cmp #0 beq b11_from_b28 jmp b23 - //SEG854 keyboard_event_scan::@23 + //SEG893 keyboard_event_scan::@23 b23: - //SEG855 [378] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG894 [399] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 lda #KEY_MODIFIER_CTRL ora keyboard_modifiers sta keyboard_modifiers - //SEG856 [379] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG895 [400] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] b11_from_b23: b11_from_b28: - //SEG857 [379] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy + //SEG896 [400] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy jmp b11 - //SEG858 keyboard_event_scan::@11 + //SEG897 keyboard_event_scan::@11 b11: - //SEG859 [380] call keyboard_event_pressed - //SEG860 [339] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG898 [401] call keyboard_event_pressed + //SEG899 [360] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG861 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG900 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG862 [381] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG901 [402] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_10 jmp b29 - //SEG863 keyboard_event_scan::@29 + //SEG902 keyboard_event_scan::@29 b29: - //SEG864 [382] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 + //SEG903 [403] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_10 sta _26 - //SEG865 [383] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 + //SEG904 [404] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 lda _26 cmp #0 beq breturn jmp b24 - //SEG866 keyboard_event_scan::@24 + //SEG905 keyboard_event_scan::@24 b24: - //SEG867 [384] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz2_bor_vbuc1 + //SEG906 [405] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz2_bor_vbuc1 lda #KEY_MODIFIER_COMMODORE ora keyboard_modifiers sta keyboard_modifiers_5 jmp breturn - //SEG868 keyboard_event_scan::@return + //SEG907 keyboard_event_scan::@return breturn: - //SEG869 [385] return + //SEG908 [406] return rts - //SEG870 [386] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG909 [407] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG871 [386] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG872 [386] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG873 [386] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuz1=vbuc1 + //SEG910 [407] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG911 [407] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG912 [407] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuz1=vbuc1 lda #0 sta col jmp b4 - //SEG874 [386] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG913 [407] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG875 [386] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG876 [386] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG877 [386] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG914 [407] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG915 [407] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG916 [407] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy jmp b4 - //SEG878 keyboard_event_scan::@4 + //SEG917 keyboard_event_scan::@4 b4: - //SEG879 [387] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3 + //SEG918 [408] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3 lda row_scan ldy row eor keyboard_scan_values,y sta _3 - //SEG880 [388] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG919 [409] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda _3 ldy col and keyboard_matrix_col_bitmask,y sta _4 - //SEG881 [389] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuz1_eq_0_then_la1 + //SEG920 [410] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuz1_eq_0_then_la1 lda _4 cmp #0 beq b5_from_b4 jmp b15 - //SEG882 keyboard_event_scan::@15 + //SEG921 keyboard_event_scan::@15 b15: - //SEG883 [390] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG922 [411] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5_from_b15 jmp b16 - //SEG884 keyboard_event_scan::@16 + //SEG923 keyboard_event_scan::@16 b16: - //SEG885 [391] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG924 [412] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda row_scan ldy col and keyboard_matrix_col_bitmask,y sta event_type - //SEG886 [392] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuz1_eq_0_then_la1 + //SEG925 [413] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuz1_eq_0_then_la1 lda event_type cmp #0 beq b7 jmp b17 - //SEG887 keyboard_event_scan::@17 + //SEG926 keyboard_event_scan::@17 b17: - //SEG888 [393] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG927 [414] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG889 [394] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG928 [415] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG890 [395] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG929 [416] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] b5_from_b15: b5_from_b17: b5_from_b4: b5_from_b7: - //SEG891 [395] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG930 [416] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy jmp b5 - //SEG892 keyboard_event_scan::@5 + //SEG931 keyboard_event_scan::@5 b5: - //SEG893 [396] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG932 [417] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG894 [397] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 + //SEG933 [418] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG895 [398] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG934 [419] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuz1_neq_vbuc1_then_la1 lda col cmp #8 bne b4_from_b5 jmp b19 - //SEG896 keyboard_event_scan::@19 + //SEG935 keyboard_event_scan::@19 b19: - //SEG897 [399] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG936 [420] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3_from_b19 - //SEG898 keyboard_event_scan::@7 + //SEG937 keyboard_event_scan::@7 b7: - //SEG899 [400] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz2_bor_vbuc1 + //SEG938 [421] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz2_bor_vbuc1 lda #$40 ora keycode sta _11 - //SEG900 [401] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG939 [422] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 lda _11 ldy keyboard_events_size sta keyboard_events,y - //SEG901 [402] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG940 [423] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG902 keyboard_matrix_read +//SEG941 keyboard_matrix_read keyboard_matrix_read: { - .label return = $c9 - .label rowid = $b9 - .label return_2 = $ba - //SEG903 [403] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + .label return = $ce + .label rowid = $be + .label return_2 = $bf + //SEG942 [424] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy rowid lda keyboard_matrix_row_bitmask,y sta CIA1_PORT_A - //SEG904 [404] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG943 [425] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff sta return jmp breturn - //SEG905 keyboard_matrix_read::@return + //SEG944 keyboard_matrix_read::@return breturn: - //SEG906 [405] return + //SEG945 [426] return rts } -//SEG907 render_show +//SEG946 render_show render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f - .label d018val = $55 - //SEG908 [406] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + .label d018val = $57 + //SEG947 [427] if((byte) render_screen_show#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181_from_render_show - //SEG909 [407] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG948 [428] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] toD0182_from_render_show: jmp toD0182 - //SEG910 render_show::toD0182 + //SEG949 render_show::toD0182 toD0182: - //SEG911 [408] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] + //SEG950 [429] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] b2_from_toD0182: - //SEG912 [408] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuz1=vbuc1 + //SEG951 [429] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuz1=vbuc1 lda #toD0182_return sta d018val jmp b2 - //SEG913 render_show::@2 + //SEG952 render_show::@2 b2: - //SEG914 [409] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuz1 + //SEG953 [430] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuz1 lda d018val sta D018 - //SEG915 [410] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + //SEG954 [431] (byte) render_screen_showing#1 ← (byte) render_screen_show#17 -- vbuz1=vbuz2 lda render_screen_show sta render_screen_showing_1 jmp breturn - //SEG916 render_show::@return + //SEG955 render_show::@return breturn: - //SEG917 [411] return + //SEG956 [432] return rts - //SEG918 [412] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG957 [433] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] toD0181_from_render_show: jmp toD0181 - //SEG919 render_show::toD0181 + //SEG958 render_show::toD0181 toD0181: - //SEG920 [408] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] + //SEG959 [429] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] b2_from_toD0181: - //SEG921 [408] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuz1=vbuc1 + //SEG960 [429] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuz1=vbuc1 lda #toD0181_return sta d018val jmp b2 } -//SEG922 play_init +//SEG961 play_init play_init: { - .label _1 = $cb - .label pli = $57 - .label idx = $59 - .label j = $56 - .label b4 = $cc - .label b = $5a - //SEG923 [414] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + .label _1 = $d0 + .label pli = $59 + .label idx = $5b + .label j = $58 + .label b4 = $d1 + .label b = $5c + //SEG962 [435] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] b1_from_play_init: - //SEG924 [414] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 + //SEG963 [435] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG925 [414] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 + //SEG964 [435] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG926 [414] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuz1=vbuc1 + //SEG965 [435] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuz1=vbuc1 lda #0 sta j jmp b1 - //SEG927 [414] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG966 [435] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] b1_from_b1: - //SEG928 [414] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG929 [414] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG930 [414] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG967 [435] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG968 [435] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG969 [435] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy jmp b1 - //SEG931 play_init::@1 + //SEG970 play_init::@1 b1: - //SEG932 [415] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG971 [436] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda j asl sta _1 - //SEG933 [416] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG972 [437] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _1 lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG934 [417] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG973 [438] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda idx ldy j sta playfield_lines_idx,y - //SEG935 [418] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG974 [439] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -13870,44 +14969,44 @@ play_init: { bcc !+ inc pli+1 !: - //SEG936 [419] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG975 [440] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG937 [420] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuz1=_inc_vbuz1 + //SEG976 [441] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG938 [421] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG977 [442] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp b3 - //SEG939 play_init::@3 + //SEG978 play_init::@3 b3: - //SEG940 [422] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 + //SEG979 [443] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES - //SEG941 [423] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 + //SEG980 [444] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 lda MOVEDOWN_SLOW_SPEEDS sta current_movedown_slow - //SEG942 [424] phi from play_init::@3 to play_init::@2 [phi:play_init::@3->play_init::@2] + //SEG981 [445] phi from play_init::@3 to play_init::@2 [phi:play_init::@3->play_init::@2] b2_from_b3: - //SEG943 [424] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@3->play_init::@2#0] -- vbuz1=vbuc1 + //SEG982 [445] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@3->play_init::@2#0] -- vbuz1=vbuc1 lda #0 sta b jmp b2 - //SEG944 [424] phi from play_init::@2 to play_init::@2 [phi:play_init::@2->play_init::@2] + //SEG983 [445] phi from play_init::@2 to play_init::@2 [phi:play_init::@2->play_init::@2] b2_from_b2: - //SEG945 [424] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@2->play_init::@2#0] -- register_copy + //SEG984 [445] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@2->play_init::@2#0] -- register_copy jmp b2 - //SEG946 play_init::@2 + //SEG985 play_init::@2 b2: - //SEG947 [425] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 + //SEG986 [446] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 lda b asl asl sta b4 - //SEG948 [426] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuz1=pduc2_derefidx_vbuz1 + //SEG987 [447] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuz1=pduc2_derefidx_vbuz1 ldy b4 lda SCORE_BASE_BCD,y sta score_add_bcd,y @@ -13917,235 +15016,235 @@ play_init: { sta score_add_bcd+2,y lda SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG949 [427] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuz1=_inc_vbuz1 + //SEG988 [448] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG950 [428] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG989 [449] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 -- vbuz1_neq_vbuc1_then_la1 lda b cmp #5 bne b2_from_b2 jmp breturn - //SEG951 play_init::@return + //SEG990 play_init::@return breturn: - //SEG952 [429] return + //SEG991 [450] return rts } -//SEG953 sprites_irq_init +//SEG992 sprites_irq_init sprites_irq_init: { - //SEG954 asm { sei } + //SEG993 asm { sei } sei - //SEG955 [431] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG994 [452] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG956 asm { ldaCIA1_INTERRUPT } + //SEG995 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG957 [433] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG996 [454] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG958 [434] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG997 [455] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG959 [435] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG998 [456] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG960 [436] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG999 [457] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda VIC_CONTROL and #$7f sta VIC_CONTROL - //SEG961 [437] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG1000 [458] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG962 [438] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1001 [459] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG963 [439] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG1002 [460] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG964 asm { cli } + //SEG1003 asm { cli } cli jmp breturn - //SEG965 sprites_irq_init::@return + //SEG1004 sprites_irq_init::@return breturn: - //SEG966 [441] return + //SEG1005 [462] return rts } -//SEG967 sprites_init +//SEG1006 sprites_init sprites_init: { - .label s2 = $cd - .label xpos = $5c - .label s = $5b - //SEG968 [442] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + .label s2 = $d2 + .label xpos = $5e + .label s = $5d + //SEG1007 [463] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG969 [443] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1008 [464] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG970 [444] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1009 [465] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG971 [445] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1010 [466] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG972 [446] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG1011 [467] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG973 [446] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG1012 [467] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG974 [446] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuz1=vbuc1 + //SEG1013 [467] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuz1=vbuc1 lda #0 sta s jmp b1 - //SEG975 [446] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG1014 [467] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG976 [446] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG977 [446] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG1015 [467] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG1016 [467] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG978 sprites_init::@1 + //SEG1017 sprites_init::@1 b1: - //SEG979 [447] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG1018 [468] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda s asl sta s2 - //SEG980 [448] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1019 [469] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda xpos ldy s2 sta SPRITES_XPOS,y - //SEG981 [449] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG1020 [470] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy s lda #BLACK sta SPRITES_COLS,y - //SEG982 [450] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1021 [471] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG983 [451] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 + //SEG1022 [472] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG984 [452] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1023 [473] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda s cmp #4 bne b1_from_b1 jmp breturn - //SEG985 sprites_init::@return + //SEG1024 sprites_init::@return breturn: - //SEG986 [453] return + //SEG1025 [474] return rts } -//SEG987 render_init +//SEG1026 render_init render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)>>6 - .label _13 = $ce - .label _14 = $cf - .label li_1 = $5e - .label li_2 = $60 - .label i = $5d + .label _13 = $d3 + .label _14 = $d4 + .label li_1 = $60 + .label li_2 = $62 + .label i = $5f jmp vicSelectGfxBank1 - //SEG988 render_init::vicSelectGfxBank1 + //SEG1027 render_init::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG989 [455] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1028 [476] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG990 [456] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG1029 [477] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG991 render_init::vicSelectGfxBank1_toDd001 + //SEG1030 render_init::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG992 render_init::vicSelectGfxBank1_@1 + //SEG1031 render_init::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG993 [457] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG1032 [478] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A jmp b3 - //SEG994 render_init::@3 + //SEG1033 render_init::@3 b3: - //SEG995 [458] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1034 [479] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG996 [459] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1035 [480] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG997 [460] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1036 [481] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG998 [461] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG1037 [482] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL2 - //SEG999 [462] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 + //SEG1038 [483] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 lda #CYAN sta BGCOL3 - //SEG1000 [463] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG1039 [484] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG1001 [464] call render_screen_original - //SEG1002 [477] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] + //SEG1040 [485] call render_screen_original + //SEG1041 [498] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] render_screen_original_from_b3: - //SEG1003 [477] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1042 [498] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1004 [465] phi from render_init::@3 to render_init::@4 [phi:render_init::@3->render_init::@4] + //SEG1043 [486] phi from render_init::@3 to render_init::@4 [phi:render_init::@3->render_init::@4] b4_from_b3: jmp b4 - //SEG1005 render_init::@4 + //SEG1044 render_init::@4 b4: - //SEG1006 [466] call render_screen_original - //SEG1007 [477] phi from render_init::@4 to render_screen_original [phi:render_init::@4->render_screen_original] + //SEG1045 [487] call render_screen_original + //SEG1046 [498] phi from render_init::@4 to render_screen_original [phi:render_init::@4->render_screen_original] render_screen_original_from_b4: - //SEG1008 [477] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@4->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1047 [498] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@4->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1009 [467] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] + //SEG1048 [488] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] b1_from_b4: - //SEG1010 [467] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#0] -- pbuz1=pbuc1 + //SEG1049 [488] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG1011 [467] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#1] -- pbuz1=pbuc1 + //SEG1050 [488] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG1012 [467] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@1#2] -- vbuz1=vbuc1 + //SEG1051 [488] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG1013 [467] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG1052 [488] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] b1_from_b1: - //SEG1014 [467] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG1015 [467] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG1016 [467] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy + //SEG1053 [488] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG1054 [488] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG1055 [488] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy jmp b1 - //SEG1017 render_init::@1 + //SEG1056 render_init::@1 b1: - //SEG1018 [468] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG1057 [489] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _13 - //SEG1019 [469] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG1058 [490] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _13 lda li_1 sta screen_lines_1,y lda li_1+1 sta screen_lines_1+1,y - //SEG1020 [470] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG1059 [491] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _14 - //SEG1021 [471] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG1060 [492] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _14 lda li_2 sta screen_lines_2,y lda li_2+1 sta screen_lines_2+1,y - //SEG1022 [472] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1061 [493] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_1 clc adc #$28 @@ -14153,7 +15252,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG1023 [473] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1062 [494] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_2 clc adc #$28 @@ -14161,351 +15260,343 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG1024 [474] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG1063 [495] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG1025 [475] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1064 [496] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp breturn - //SEG1026 render_init::@return + //SEG1065 render_init::@return breturn: - //SEG1027 [476] return + //SEG1066 [497] return rts } -//SEG1028 render_screen_original +//SEG1067 render_screen_original render_screen_original: { .const SPACE = 0 - .label screen = $67 - .label cols = $69 - .label x = $6b - .label oscr = $63 - .label ocols = $65 - .label y = $62 - //SEG1029 [478] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + .label screen = $69 + .label cols = $6b + .label x = $6d + .label oscr = $65 + .label ocols = $67 + .label y = $64 + //SEG1068 [499] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] b1_from_render_screen_original: - //SEG1030 [478] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG1069 [499] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1031 [478] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG1070 [499] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_COLORS_ORIGINAL+$20*2 sta ocols+1 - //SEG1032 [478] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG1071 [499] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta oscr+1 - //SEG1033 [478] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 + //SEG1072 [499] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 lda #COLS sta cols+1 - //SEG1034 [478] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy + //SEG1073 [499] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1035 [478] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] + //SEG1074 [499] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] b1_from_b7: - //SEG1036 [478] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy - //SEG1037 [478] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy - //SEG1038 [478] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy - //SEG1039 [478] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@7->render_screen_original::@1#3] -- register_copy - //SEG1040 [478] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@7->render_screen_original::@1#4] -- register_copy + //SEG1075 [499] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy + //SEG1076 [499] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy + //SEG1077 [499] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy + //SEG1078 [499] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@7->render_screen_original::@1#3] -- register_copy + //SEG1079 [499] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@7->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1041 render_screen_original::@1 + //SEG1080 render_screen_original::@1 b1: - //SEG1042 [479] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG1081 [500] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] b2_from_b1: - //SEG1043 [479] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuz1=vbuc1 + //SEG1082 [500] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG1044 [479] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy - //SEG1045 [479] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy + //SEG1083 [500] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG1084 [500] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1046 [479] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG1085 [500] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] b2_from_b2: - //SEG1047 [479] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy - //SEG1048 [479] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy - //SEG1049 [479] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy + //SEG1086 [500] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy + //SEG1087 [500] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG1088 [500] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1050 render_screen_original::@2 + //SEG1089 render_screen_original::@2 b2: - //SEG1051 [480] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1090 [501] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1052 [481] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG1091 [502] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1053 [482] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1092 [503] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1054 [483] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 + //SEG1093 [504] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1055 [484] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuz1=_inc_vbuz1 + //SEG1094 [505] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuz1=_inc_vbuz1 inc x - //SEG1056 [485] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1095 [506] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #4 bne b2_from_b2 - //SEG1057 [486] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] + //SEG1096 [507] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] b3_from_b2: b3_from_b3: - //SEG1058 [486] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy - //SEG1059 [486] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG1060 [486] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy - //SEG1061 [486] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy - //SEG1062 [486] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy + //SEG1097 [507] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy + //SEG1098 [507] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG1099 [507] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG1100 [507] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy + //SEG1101 [507] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy jmp b3 - //SEG1063 render_screen_original::@3 + //SEG1102 render_screen_original::@3 b3: - //SEG1064 [487] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1103 [508] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (oscr),y ldy #0 sta (screen),y - //SEG1065 [488] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG1104 [509] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1066 [489] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 + //SEG1105 [510] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 inc oscr bne !+ inc oscr+1 !: - //SEG1067 [490] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1106 [511] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (ocols),y ldy #0 sta (cols),y - //SEG1068 [491] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 + //SEG1107 [512] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1069 [492] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 + //SEG1108 [513] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 inc ocols bne !+ inc ocols+1 !: - //SEG1070 [493] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuz1=_inc_vbuz1 + //SEG1109 [514] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuz1=_inc_vbuz1 inc x - //SEG1071 [494] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG1110 [515] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$24 bne b3_from_b3 - //SEG1072 [495] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] + //SEG1111 [516] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] b4_from_b3: b4_from_b4: - //SEG1073 [495] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy - //SEG1074 [495] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy - //SEG1075 [495] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy + //SEG1112 [516] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy + //SEG1113 [516] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG1114 [516] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy jmp b4 - //SEG1076 render_screen_original::@4 + //SEG1115 render_screen_original::@4 b4: - //SEG1077 [496] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1116 [517] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1078 [497] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG1117 [518] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1079 [498] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1118 [519] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1080 [499] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 + //SEG1119 [520] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1081 [500] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuz1=_inc_vbuz1 + //SEG1120 [521] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuz1=_inc_vbuz1 inc x - //SEG1082 [501] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG1121 [522] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$28 bne b4_from_b4 jmp b7 - //SEG1083 render_screen_original::@7 + //SEG1122 render_screen_original::@7 b7: - //SEG1084 [502] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG1123 [523] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1085 [503] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1124 [524] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1_from_b7 jmp breturn - //SEG1086 render_screen_original::@return + //SEG1125 render_screen_original::@return breturn: - //SEG1087 [504] return + //SEG1126 [525] return rts } -//SEG1088 sid_rnd_init +//SEG1127 sid_rnd_init sid_rnd_init: { - //SEG1089 [505] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG1128 [526] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG1090 [506] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG1129 [527] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL jmp breturn - //SEG1091 sid_rnd_init::@return + //SEG1130 sid_rnd_init::@return breturn: - //SEG1092 [507] return + //SEG1131 [528] return rts } -//SEG1093 sprites_irq +//SEG1132 sprites_irq sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 - .label _4 = $d7 - .label ypos = $d0 - .label ptr = $d1 - .label ptr_1 = $db - .label ptr_2 = $dc - .label ptr_3 = $d2 - .label ptr_4 = $d3 - .label raster_next = $6d - //SEG1094 entry interrupt(HARDWARE_CLOBBER) + .label _0 = $d6 + .label ypos = $d5 + .label raster_sprite_gfx_modify = $d7 + .label ptr = $d8 + .label ptr_1 = $e3 + .label ptr_2 = $e4 + .label ptr_3 = $d9 + .label ptr_4 = $da + //SEG1133 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 sty regy+1 - //SEG1095 asm { cld } + //SEG1134 asm { cld } cld - //SEG1096 [509] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 + //SEG1135 [530] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 lda irq_sprite_ypos sta ypos - //SEG1097 [510] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1136 [531] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS - //SEG1098 [511] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1137 [532] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+2 - //SEG1099 [512] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1138 [533] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+4 - //SEG1100 [513] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1139 [534] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+6 + //SEG1140 [535] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + ldy irq_raster_next + iny + sty _0 + //SEG1141 [536] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuz2 + lda _0 + sta raster_sprite_gfx_modify jmp b1 - //SEG1101 sprites_irq::@1 + //SEG1142 sprites_irq::@1 b1: - //SEG1102 [514] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG1143 [537] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER - cmp irq_sprite_ypos + cmp raster_sprite_gfx_modify bcc b1 - jmp b7 - //SEG1103 sprites_irq::@7 - b7: - //SEG1104 [515] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 + jmp b8 + //SEG1144 sprites_irq::@8 + b8: + //SEG1145 [538] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 lda irq_sprite_ptr sta ptr - //SEG1105 [516] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + //SEG1146 [539] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b2 - jmp b8 - //SEG1106 sprites_irq::@8 - b8: - //SEG1107 [517] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + jmp b9 + //SEG1147 sprites_irq::@9 + b9: + //SEG1148 [540] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_2 - //SEG1108 [518] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG1149 [541] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_3 - //SEG1109 [519] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + //SEG1150 [542] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG1110 [520] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + //SEG1151 [543] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG1111 [521] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 + //SEG1152 [544] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 ldy ptr_3 iny sty ptr_4 - //SEG1112 [522] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 + //SEG1153 [545] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 lda ptr_4 sta PLAYFIELD_SPRITE_PTRS_2+3 jmp b3 - //SEG1113 sprites_irq::@3 + //SEG1154 sprites_irq::@3 b3: - //SEG1114 [523] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 + //SEG1155 [546] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 ldy irq_cnt iny sty irq_cnt_1 - //SEG1115 [524] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG1156 [547] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + lda irq_cnt_1 + cmp #9 + beq b4 + jmp b11 + //SEG1157 sprites_irq::@11 + b11: + //SEG1158 [548] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt_1 cmp #$a - beq b4 - jmp b10 - //SEG1116 sprites_irq::@10 - b10: - //SEG1117 [525] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 - lda #$15 + beq b5 + jmp b12 + //SEG1159 sprites_irq::@12 + b12: + //SEG1160 [549] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz2_plus_vbuc1 + lda #$14 clc adc irq_raster_next - sta irq_raster_next_2 - //SEG1118 [526] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + sta irq_raster_next_3 + //SEG1161 [550] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 lda #$15 clc adc irq_sprite_ypos - sta irq_sprite_ypos_2 - //SEG1119 [527] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + sta irq_sprite_ypos_3 + //SEG1162 [551] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 lda #3 clc adc irq_sprite_ptr - sta irq_sprite_ptr_2 - //SEG1120 [528] phi from sprites_irq::@10 sprites_irq::@13 to sprites_irq::@5 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5] - b5_from_b10: - b5_from_b13: - //SEG1121 [528] phi (byte) irq_raster_next#13 = (byte) irq_raster_next#2 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5#0] -- register_copy - jmp b5 - //SEG1122 sprites_irq::@5 - b5: - //SEG1123 [529] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 -- vbuz1=vbuz2 - lda irq_raster_next_13 - sta raster_next - //SEG1124 [530] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 - lda #7 - and raster_next - sta _4 - //SEG1125 [531] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 -- vbuz1_neq_vbuc1_then_la1 - lda _4 - cmp #3 - bne b6_from_b5 - jmp b12 - //SEG1126 sprites_irq::@12 - b12: - //SEG1127 [532] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_minus_1 - dec raster_next - //SEG1128 [533] phi from sprites_irq::@12 sprites_irq::@5 to sprites_irq::@6 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6] - b6_from_b12: - b6_from_b5: - //SEG1129 [533] phi (byte) sprites_irq::raster_next#2 = (byte) sprites_irq::raster_next#1 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6#0] -- register_copy - jmp b6 - //SEG1130 sprites_irq::@6 - b6: - //SEG1131 [534] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 -- _deref_pbuc1=vbuz1 - lda raster_next + sta irq_sprite_ptr_3 + //SEG1163 [552] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] + b7_from_b12: + b7_from_b15: + b7_from_b5: + //SEG1164 [552] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy + jmp b7 + //SEG1165 sprites_irq::@7 + b7: + //SEG1166 [553] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + lda irq_raster_next_4 sta RASTER - //SEG1132 [535] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1167 [554] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG1133 sprites_irq::@return + //SEG1168 sprites_irq::@return breturn: - //SEG1134 [536] return - exit interrupt(HARDWARE_CLOBBER) + //SEG1169 [555] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: @@ -14513,49 +15604,67 @@ sprites_irq: { regy: ldy #00 rti - //SEG1135 sprites_irq::@4 - b4: - //SEG1136 [537] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG1170 sprites_irq::@5 + b5: + //SEG1171 [556] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 - sta irq_cnt_14 - //SEG1137 [538] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + sta irq_cnt_2 + //SEG1172 [557] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST + sta irq_raster_next_2 + //SEG1173 [558] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + lda #$15 + clc + adc irq_sprite_ypos + sta irq_sprite_ypos_2 + //SEG1174 [559] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + lda #3 + clc + adc irq_sprite_ptr + sta irq_sprite_ptr_2 + jmp b7_from_b5 + //SEG1175 sprites_irq::@4 + b4: + //SEG1176 [560] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + lda #$15 + clc + adc irq_raster_next sta irq_raster_next_1 - //SEG1138 [539] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 - lda #$32 + //SEG1177 [561] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos_1 - //SEG1139 [540] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + //SEG1178 [562] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] toSpritePtr2_from_b4: jmp toSpritePtr2 - //SEG1140 sprites_irq::toSpritePtr2 + //SEG1179 sprites_irq::toSpritePtr2 toSpritePtr2: - jmp b13 - //SEG1141 sprites_irq::@13 - b13: - //SEG1142 [541] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + jmp b15 + //SEG1180 sprites_irq::@15 + b15: + //SEG1181 [563] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr_1 - jmp b5_from_b13 - //SEG1143 sprites_irq::@2 + jmp b7_from_b15 + //SEG1182 sprites_irq::@2 b2: - //SEG1144 [542] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG1183 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_1 - //SEG1145 [543] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG1184 [565] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_1 - //SEG1146 [544] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG1185 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG1147 [545] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG1186 [567] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG1148 [546] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 + //SEG1187 [568] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 ldy ptr_1 iny sty ptr_2 - //SEG1149 [547] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 + //SEG1188 [569] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 lda ptr_2 sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 @@ -14581,9 +15690,9 @@ sprites_irq: { PIECES_CHARS: .byte $64, $65, $a5, $65, $64, $64, $a5 PIECES_START_X: .byte 4, 4, 4, 4, 4, 4, 4 PIECES_START_Y: .byte 1, 1, 1, 1, 1, 0, 1 + MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 SCORE_BASE_BCD: .dword 0, $40, $100, $300, $1200 score_add_bcd: .fill 4*5, 0 - MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 .align $80 screen_lines_1: .fill 2*PLAYFIELD_LINES, 0 .align $40 @@ -14611,11 +15720,14 @@ sprites_irq: { .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 @@ -14626,969 +15738,1007 @@ sprites_irq: { REGISTER UPLIFT POTENTIAL REGISTERS Statement [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a Statement [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a -Statement [7] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a -Statement [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a +Statement [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 [ ] ( ) always clobbers reg byte a +Statement [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( ) always clobbers reg byte a Statement [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a -Statement [30] (byte*~) current_piece_gfx#102 ← (byte*) current_piece_gfx#16 [ current_ypos#86 current_ypos#18 current_xpos#112 current_xpos#23 current_piece_gfx#102 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 ] ( main:12 [ current_ypos#86 current_ypos#18 current_xpos#112 current_xpos#23 current_piece_gfx#102 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ current_ypos#9 current_ypos#86 current_ypos#87 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ current_xpos#47 current_xpos#112 current_xpos#113 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:62 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:63 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:162 [ play_spawn_current::$3 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ current_movedown_slow#31 current_movedown_slow#19 current_movedown_slow#12 current_movedown_slow#1 current_movedown_slow#17 current_movedown_slow#60 current_movedown_slow#8 ] -Statement [33] (byte*~) current_piece#73 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#73 current_movedown_slow#1 ] ( main:12 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#73 current_movedown_slow#1 ] ) always clobbers reg byte a -Statement [35] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 keyboard_events_size#19 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 ] ( main:12 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 keyboard_events_size#19 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#11 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:59 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:84 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ level#24 level#14 level#19 level#12 level#16 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ level_bcd#25 level_bcd#15 level_bcd#20 level_bcd#13 level_bcd#55 level_bcd#17 level_bcd#6 ] -Statement [48] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#1 current_xpos#1 ] ( main:12 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#1 current_xpos#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:116 [ main::key_event#0 ] -Statement [53] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#1 ] ( main:12 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#1 ] ) always clobbers reg byte a -Statement [58] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#3 ] ( main:12 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#3 ] ) always clobbers reg byte a -Statement [65] (byte*~) current_piece_gfx#103 ← (byte*) current_piece_gfx#14 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 current_ypos#87 render_screen_render#64 current_xpos#113 current_piece_gfx#103 ] ( main:12 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 current_ypos#87 render_screen_render#64 current_xpos#113 current_piece_gfx#103 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#64 ] -Statement [72] (byte) render_screen_render#11 ← (byte) render_screen_render#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#16 render_screen_render#11 ] ( main:12::render_screen_swap:71 [ current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a -Statement [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#13 render_screen_render#11 ] ( main:12::render_screen_swap:71 [ current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a -Statement [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen#0 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen#0 ] ) always clobbers reg byte a -Statement [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen#1 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen#1 ] ) always clobbers reg byte a -Statement [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen#2 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen#2 ] ) always clobbers reg byte a -Statement [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#11 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#3 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#3 ] ) always clobbers reg byte a -Statement [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#3 render_bcd::screen#3 ] ) always clobbers reg byte a +Statement [30] (byte*~) current_piece_gfx#115 ← (byte*) current_piece_gfx#21 [ current_ypos#99 current_ypos#22 current_xpos#125 current_xpos#28 current_piece_gfx#115 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 ] ( main:12 [ current_ypos#99 current_ypos#22 current_xpos#125 current_xpos#28 current_piece_gfx#115 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ current_ypos#11 current_ypos#99 current_ypos#100 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ current_xpos#57 current_xpos#125 current_xpos#126 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:64 [ current_xpos#41 current_xpos#115 current_xpos#17 current_xpos#28 current_xpos#20 current_xpos#24 current_xpos#7 current_xpos#5 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ current_piece_char#27 current_piece_char#19 current_piece_char#14 current_piece_char#16 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:165 [ play_spawn_current::$3 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#68 current_movedown_slow#10 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:66 [ game_over#69 game_over#26 game_over#19 game_over#14 game_over#15 ] +Statement [33] (byte*~) current_piece#88 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 current_piece#88 current_movedown_slow#1 game_over#15 ] ( main:12 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 current_piece#88 current_movedown_slow#1 game_over#15 ] ) always clobbers reg byte a +Statement [35] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ( main:12 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ render_screen_show#17 render_screen_show#29 render_screen_show#13 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#33 render_screen_render#11 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:61 [ current_orientation#36 current_orientation#12 current_orientation#16 current_orientation#19 current_orientation#24 current_orientation#7 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:86 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ level#31 level#18 level#10 level#16 level#20 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#63 level_bcd#21 level_bcd#8 ] +Statement [36] (byte~) main::$9 ← (byte) render_screen_show#17 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 main::$9 ] ( main:12 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 main::$9 ] ) always clobbers reg byte a +Statement [57] (byte*~) current_piece_gfx#116 ← (byte*) current_piece_gfx#16 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 current_ypos#100 render_screen_render#68 current_xpos#126 current_piece_gfx#116 ] ( main:12 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 current_ypos#100 render_screen_render#68 current_xpos#126 current_piece_gfx#116 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#68 ] +Statement [65] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_screen_show#29 render_screen_render#33 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 ] ( main:12 [ render_screen_show#29 render_screen_render#33 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 ] ) always clobbers reg byte a +Statement [66] (byte) render_screen_render#11 ← (byte) render_screen_render#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#17 render_screen_render#11 ] ( main:12::render_screen_swap:63 [ current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_show#17 render_screen_render#11 ] ) always clobbers reg byte a +Statement [67] (byte) render_screen_show#13 ← (byte) render_screen_show#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#13 render_screen_render#11 ] ( main:12::render_screen_swap:63 [ current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a +Statement [72] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen#0 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen#0 ] ) always clobbers reg byte a +Statement [75] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen#1 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen#1 ] ) always clobbers reg byte a +Statement [78] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen#2 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen#2 ] ) always clobbers reg byte a +Statement [81] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#3 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#3 ] ) always clobbers reg byte a +Statement [82] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#3 render_bcd::screen#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] -Statement [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#11 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#4 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#4 ] ) always clobbers reg byte a -Statement [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#4 render_bcd::screen#4 ] ) always clobbers reg byte a -Statement [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::screen#5 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::screen#5 ] ) always clobbers reg byte a -Statement [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte a +Statement [84] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#4 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#4 ] ) always clobbers reg byte a +Statement [85] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#4 render_bcd::screen#4 ] ) always clobbers reg byte a +Statement [87] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ) always clobbers reg byte a +Statement [92] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ render_bcd::only_low#6 ] -Statement [100] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] ) always clobbers reg byte a -Statement [101] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] ) always clobbers reg byte a -Statement [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:55 [ current_movedown_slow#31 current_movedown_slow#19 current_movedown_slow#12 current_movedown_slow#1 current_movedown_slow#17 current_movedown_slow#60 current_movedown_slow#8 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:59 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:62 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:47 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:63 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:84 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:54 [ level#24 level#14 level#19 level#12 level#16 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#11 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:56 [ level_bcd#25 level_bcd#15 level_bcd#20 level_bcd#13 level_bcd#55 level_bcd#17 level_bcd#6 ] +Statement [94] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] ) always clobbers reg byte a +Statement [95] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] ) always clobbers reg byte a +Statement [96] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ render_screen_show#17 render_screen_show#29 render_screen_show#13 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:56 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#68 current_movedown_slow#10 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:60 [ current_piece_char#27 current_piece_char#19 current_piece_char#14 current_piece_char#16 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:61 [ current_orientation#36 current_orientation#12 current_orientation#16 current_orientation#19 current_orientation#24 current_orientation#7 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:64 [ current_xpos#41 current_xpos#115 current_xpos#17 current_xpos#28 current_xpos#20 current_xpos#24 current_xpos#7 current_xpos#5 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:48 [ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:66 [ game_over#69 game_over#26 game_over#19 game_over#14 game_over#15 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:86 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:55 [ level#31 level#18 level#10 level#16 level#20 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#33 render_screen_render#11 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:57 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#63 level_bcd#21 level_bcd#8 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] -Statement [105] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ render_bcd::screen_pos#3 render_bcd::$5 ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::screen_pos#3 render_bcd::$5 ] ) always clobbers reg byte a -Statement [106] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 [ render_bcd::screen_pos#3 render_bcd::$6 ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::screen_pos#3 render_bcd::$6 ] ) always clobbers reg byte a -Statement [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 [ render_bcd::screen_pos#3 ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::screen_pos#3 ] ) always clobbers reg byte y -Statement [108] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 [ ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 ] ) always clobbers reg byte a -Statement [111] (byte) render_moving::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#0 ] ( main:12::render_moving:32 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#0 ] main:12::render_moving:67 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ current_piece_char#64 current_piece_char#90 current_piece_char#91 ] -Statement [114] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ( main:12::render_moving:32 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] main:12::render_moving:67 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a +Statement [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ render_bcd::screen_pos#3 render_bcd::$5 ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$5 ] ) always clobbers reg byte a +Statement [100] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 [ render_bcd::screen_pos#3 render_bcd::$6 ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$6 ] ) always clobbers reg byte a +Statement [101] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 [ render_bcd::screen_pos#3 ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 ] ) always clobbers reg byte y +Statement [102] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 [ ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte a +Statement [105] (byte) render_moving::ypos2#0 ← (byte) current_ypos#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#0 ] ( main:12::render_moving:32 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#0 ] main:12::render_moving:59 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 ] +Statement [108] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ( main:12::render_moving:32 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] main:12::render_moving:59 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ render_moving::l#4 render_moving::l#1 ] -Statement [121] (byte~) render_moving::$5 ← (byte) render_screen_render#30 + (byte) render_moving::ypos2#2 [ render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$5 ] ( main:12::render_moving:32 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$5 ] main:12::render_moving:67 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$5 ] ) always clobbers reg byte a +Statement [115] (byte~) render_moving::$5 ← (byte) render_screen_render#30 + (byte) render_moving::ypos2#2 [ render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$5 ] ( main:12::render_moving:32 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$5 ] main:12::render_moving:59 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$5 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 ] -Statement [122] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) [ render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:12::render_moving:32 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:12::render_moving:67 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a -Statement [125] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_moving::i#4) [ render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:12::render_moving:32 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:12::render_moving:67 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a +Statement [116] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) [ render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:12::render_moving:32 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:12::render_moving:59 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a +Statement [119] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#62 + (byte) render_moving::i#4) [ render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:12::render_moving:32 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:12::render_moving:59 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ render_moving::c#2 render_moving::c#1 ] -Statement [129] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#64 [ render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::i#10 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:12::render_moving:32 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::i#10 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:12::render_moving:67 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::i#10 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a -Statement [135] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:12::render_playfield:27 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:12::render_playfield:61 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ render_screen_render#21 render_screen_render#65 ] +Statement [123] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#75 [ render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::i#10 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:12::render_moving:32 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::i#10 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:12::render_moving:59 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::i#10 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a +Statement [129] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:12::render_playfield:27 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:12::render_playfield:53 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ render_screen_render#21 render_screen_render#69 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Statement [136] (byte~) render_playfield::$3 ← (byte) render_screen_render#21 + (byte~) render_playfield::$2 [ render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:12::render_playfield:27 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:12::render_playfield:61 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a -Statement [137] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) [ render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:12::render_playfield:27 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:12::render_playfield:61 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a -Statement [139] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#21 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:12::render_playfield:27 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#21 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:12::render_playfield:61 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#21 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:162 [ play_spawn_current::$3 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:26 [ render_screen_render#21 render_screen_render#65 ] +Statement [130] (byte~) render_playfield::$3 ← (byte) render_screen_render#21 + (byte~) render_playfield::$2 [ render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:12::render_playfield:27 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:12::render_playfield:53 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a +Statement [131] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) [ render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:12::render_playfield:27 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:12::render_playfield:53 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a +Statement [133] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#21 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:12::render_playfield:27 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#21 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:12::render_playfield:53 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#21 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:165 [ play_spawn_current::$3 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:26 [ render_screen_render#21 render_screen_render#69 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:27 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:28 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:31 [ render_playfield::c#2 render_playfield::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:31 [ render_playfield::c#2 render_playfield::c#1 ] -Statement [151] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$2 ] ( main:12::play_move_rotate:55 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:124 [ main::render#2 ] -Statement [152] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#2 ] ( main:12::play_move_rotate:55 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#2 ] ) always clobbers reg byte a -Statement [157] (byte*~) current_piece#79 ← (byte*) current_piece#10 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#79 ] ( main:12::play_move_rotate:55 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#79 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:38 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Statement [163] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#4 current_piece_gfx#3 ] ( main:12::play_move_rotate:55 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#4 current_piece_gfx#3 ] ) always clobbers reg byte a -Statement [164] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$4 ] ( main:12::play_move_rotate:55 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$4 ] ) always clobbers reg byte a -Statement [165] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#1 ] ( main:12::play_move_rotate:55 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#1 ] ) always clobbers reg byte a -Statement [167] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 [ play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ( main:12::play_move_rotate:55::play_collision:158 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:12::play_move_leftright:50::play_collision:196 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:12::play_move_leftright:50::play_collision:207 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:12::play_move_down:45::play_collision:231 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:120 [ main::render#1 ] -Statement [168] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ( main:12::play_move_rotate:55::play_collision:158 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_move_leftright:50::play_collision:196 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_move_leftright:50::play_collision:207 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_move_down:45::play_collision:231 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a -Statement [170] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:12::play_move_rotate:55::play_collision:158 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_move_leftright:50::play_collision:196 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_move_leftright:50::play_collision:207 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_move_down:45::play_collision:231 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:41 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ play_collision::l#6 play_collision::l#1 ] -Statement [174] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_move_rotate:55::play_collision:158 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_move_leftright:50::play_collision:196 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_move_leftright:50::play_collision:207 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_move_down:45::play_collision:231 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ play_collision::c#2 play_collision::c#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:149 [ play_collision::i#1 ] -Statement [178] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ( main:12::play_move_rotate:55::play_collision:158 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_move_leftright:50::play_collision:196 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_move_leftright:50::play_collision:207 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_move_down:45::play_collision:231 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ) always clobbers reg byte a -Statement [181] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_move_rotate:55::play_collision:158 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_move_leftright:50::play_collision:196 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_move_leftright:50::play_collision:207 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_move_down:45::play_collision:231 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [195] (byte*~) current_piece#78 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#13 current_orientation#14 current_piece#78 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#1 ] ( main:12::play_move_leftright:50 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_piece#78 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#1 ] ) always clobbers reg byte a -Statement [206] (byte*~) current_piece#77 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#13 current_orientation#14 current_piece#77 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#1 ] ( main:12::play_move_leftright:50 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_piece#77 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#1 ] ) always clobbers reg byte a -Statement [230] (byte*~) current_piece#76 ← (byte*) current_piece#16 [ current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_piece#76 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_move_down:45 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_piece#76 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [245] (byte*~) current_piece#80 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#80 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 ] ( main:12::play_move_down:45 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#80 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 ] ) always clobbers reg byte a -Statement [253] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:12::play_move_down:45::play_spawn_current:244 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:65 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Statement [254] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:12::play_move_down:45::play_spawn_current:244 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [255] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) [ current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:12::play_move_down:45::play_spawn_current:244 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [256] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:12::play_move_down:45::play_spawn_current:244 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [257] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] main:12::play_move_down:45::play_spawn_current:244 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ) always clobbers reg byte a -Statement [263] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ play_spawn_current::piece_idx#1 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::piece_idx#1 ] main:12::play_move_down:45::play_spawn_current:244 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [267] (byte~) play_update_score::$2 ← < (word) lines_bcd#15 [ current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:161 [ play_update_score::removed#0 ] -Statement [268] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 [ current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::lines_before#0 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::lines_before#0 ] ) always clobbers reg byte a -Statement [269] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:167 [ play_update_score::lines_before#0 ] -Statement [270] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) [ current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a -Statement [272] (word) lines_bcd#23 ← (word) lines_bcd#15 + (byte) play_update_score::removed#0 [ current_movedown_slow#12 score_bcd#14 level#19 level_bcd#20 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#23 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 score_bcd#14 level#19 level_bcd#20 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#23 ] ) always clobbers reg byte a -Statement [273] (dword) score_bcd#23 ← (dword) score_bcd#14 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#12 level#19 level_bcd#20 play_update_score::lines_before#0 lines_bcd#23 score_bcd#23 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 level#19 level_bcd#20 play_update_score::lines_before#0 lines_bcd#23 score_bcd#23 ] ) always clobbers reg byte a -Statement [275] (byte~) play_update_score::$5 ← < (word) lines_bcd#23 [ current_movedown_slow#12 level#19 level_bcd#20 play_update_score::lines_before#0 lines_bcd#23 score_bcd#23 play_update_score::$5 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 level#19 level_bcd#20 play_update_score::lines_before#0 lines_bcd#23 score_bcd#23 play_update_score::$5 ] ) always clobbers reg byte a -Statement [276] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 [ current_movedown_slow#12 level#19 level_bcd#20 play_update_score::lines_before#0 lines_bcd#23 score_bcd#23 play_update_score::lines_after#0 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 level#19 level_bcd#20 play_update_score::lines_before#0 lines_bcd#23 score_bcd#23 play_update_score::lines_after#0 ] ) always clobbers reg byte a -Statement [283] if((byte) level#16>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 [ level_bcd#20 level#16 ] ( main:12::play_move_down:45::play_update_score:242::play_increase_level:279 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#23 score_bcd#23 level_bcd#20 level#16 ] ) always clobbers reg byte a -Statement [284] (byte) current_movedown_slow#8 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#16) [ level_bcd#20 level#16 current_movedown_slow#8 ] ( main:12::play_move_down:45::play_update_score:242::play_increase_level:279 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#23 score_bcd#23 level_bcd#20 level#16 current_movedown_slow#8 ] ) always clobbers reg byte a -Statement [287] (byte~) play_increase_level::$1 ← (byte) level_bcd#17 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ level#16 current_movedown_slow#60 level_bcd#17 play_increase_level::$1 ] ( main:12::play_move_down:45::play_update_score:242::play_increase_level:279 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#23 score_bcd#23 level#16 current_movedown_slow#60 level_bcd#17 play_increase_level::$1 ] ) always clobbers reg byte a -Statement [289] (byte) level_bcd#6 ← (byte) level_bcd#17 + (byte/signed byte/word/signed word/dword/signed dword) 6 [ level#16 current_movedown_slow#60 level_bcd#6 ] ( main:12::play_move_down:45::play_update_score:242::play_increase_level:279 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#23 score_bcd#23 level#16 current_movedown_slow#60 level_bcd#6 ] ) always clobbers reg byte a -Statement [293] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ level#16 current_movedown_slow#60 level_bcd#55 play_increase_level::b#2 play_increase_level::b4#0 ] ( main:12::play_move_down:45::play_update_score:242::play_increase_level:279 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#23 score_bcd#23 level#16 current_movedown_slow#60 level_bcd#55 play_increase_level::b#2 play_increase_level::b4#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:66 [ play_increase_level::b#2 play_increase_level::b#1 ] -Statement [294] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) [ level#16 current_movedown_slow#60 level_bcd#55 play_increase_level::b#2 ] ( main:12::play_move_down:45::play_update_score:242::play_increase_level:279 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#23 score_bcd#23 level#16 current_movedown_slow#60 level_bcd#55 play_increase_level::b#2 ] ) always clobbers reg byte a -Statement [311] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:12::play_move_down:45::play_remove_lines:238 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:67 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:69 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] -Statement [319] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::removed#7 play_remove_lines::w#6 ] ( main:12::play_move_down:45::play_remove_lines:238 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_remove_lines::removed#7 play_remove_lines::w#6 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:72 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] -Statement [322] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#0 ] ( main:12::play_move_down:45::play_lock_current:236 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#0 ] ) always clobbers reg byte a -Statement [324] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:12::play_move_down:45::play_lock_current:236 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:75 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:74 [ play_lock_current::l#6 play_lock_current::l#1 ] -Statement [328] if(*((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_move_down:45::play_lock_current:236 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:76 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:77 [ play_lock_current::c#2 play_lock_current::c#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:180 [ play_lock_current::i#1 ] -Statement [329] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_move_down:45::play_lock_current:236 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [340] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:12::play_move_down:45::keyboard_event_pressed:216 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:362 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:368 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:374 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:380 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:78 [ keyboard_event_pressed::keycode#5 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:81 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] -Statement [342] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:12::play_move_down:45::keyboard_event_pressed:216 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:362 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:368 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:374 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:380 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:182 [ keyboard_event_pressed::row_bits#0 ] -Statement [343] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:12::play_move_down:45::keyboard_event_pressed:216 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:362 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:368 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:374 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:380 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [357] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:80 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Statement [372] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a -Statement [378] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a -Statement [384] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [387] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:187 [ keyboard_event_scan::row_scan#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:82 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:83 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] -Statement [388] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a -Statement [391] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [393] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a -Statement [399] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [400] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a -Statement [403] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:12::keyboard_event_scan:39::keyboard_matrix_read:353 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a -Statement [404] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:12::keyboard_event_scan:39::keyboard_matrix_read:353 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [415] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:86 [ play_init::j#2 play_init::j#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:89 [ play_init::idx#2 play_init::idx#1 ] -Statement [416] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [417] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [418] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a -Statement [419] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a -Statement [422] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:12::play_init:23 [ ] ) always clobbers reg byte a -Statement [425] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:90 [ play_init::b#2 play_init::b#1 ] -Statement [426] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) [ current_movedown_slow#1 play_init::b#2 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a -Statement [431] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [145] (byte) play_movement::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_movement::$0 [ current_movedown_slow#21 current_piece#14 current_piece_char#14 current_ypos#17 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#19 current_piece_gfx#18 current_xpos#20 ] ( main:12::play_movement:48 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_ypos#17 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#19 current_piece_gfx#18 current_xpos#20 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:119 [ play_movement::key_event#0 ] +Statement [153] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#14 current_piece_char#14 current_ypos#17 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_movement::render#2 ] ( main:12::play_movement:48 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_ypos#17 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_movement::render#2 ] ) always clobbers reg byte a +Statement [158] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#14 current_piece_char#14 current_ypos#17 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::return#0 current_orientation#24 current_piece_gfx#19 current_xpos#24 ] ( main:12::play_movement:48 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_ypos#17 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::return#0 current_orientation#24 current_piece_gfx#19 current_xpos#24 ] ) always clobbers reg byte a +Statement [163] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#19 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::$2 ] ( main:12::play_movement:48::play_move_rotate:155 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:140 [ play_movement::render#2 ] +Statement [164] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#2 ] ( main:12::play_movement:48::play_move_rotate:155 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#2 ] ) always clobbers reg byte a +Statement [169] (byte*~) current_piece#92 ← (byte*) current_piece#14 [ current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#92 ] ( main:12::play_movement:48::play_move_rotate:155 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#92 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:38 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +Statement [175] (byte*) current_piece_gfx#6 ← (byte*) current_piece#14 + (byte) current_orientation#7 [ current_piece#14 current_ypos#17 current_xpos#24 current_orientation#7 current_piece_gfx#6 ] ( main:12::play_movement:48::play_move_rotate:155 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_xpos#24 current_orientation#7 current_piece_gfx#6 ] ) always clobbers reg byte a +Statement [176] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#19 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::$4 ] ( main:12::play_movement:48::play_move_rotate:155 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::$4 ] ) always clobbers reg byte a +Statement [177] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#1 ] ( main:12::play_movement:48::play_move_rotate:155 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#1 ] ) always clobbers reg byte a +Statement [179] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#16 + (byte) play_collision::orientation#5 [ play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:12::play_movement:48::play_move_rotate:155::play_collision:170 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:48::play_move_leftright:150::play_collision:208 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:48::play_move_leftright:150::play_collision:219 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:48::play_move_down:142::play_collision:243 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:25::play_collision:273 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256::play_collision:273 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:32 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] +Statement [180] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ( main:12::play_movement:48::play_move_rotate:155::play_collision:170 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:48::play_move_leftright:150::play_collision:208 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:48::play_move_leftright:150::play_collision:219 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:48::play_move_down:142::play_collision:243 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_spawn_current:25::play_collision:273 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256::play_collision:273 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a +Statement [182] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:12::play_movement:48::play_move_rotate:155::play_collision:170 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:48::play_move_leftright:150::play_collision:208 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:48::play_move_leftright:150::play_collision:219 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:48::play_move_down:142::play_collision:243 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:25::play_collision:273 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256::play_collision:273 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:41 [ play_collision::l#6 play_collision::l#1 ] +Statement [186] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:48::play_move_rotate:155::play_collision:170 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_leftright:150::play_collision:208 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_leftright:150::play_collision:219 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_down:142::play_collision:243 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:273 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256::play_collision:273 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ play_collision::c#2 play_collision::c#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:152 [ play_collision::i#1 ] +Statement [190] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ( main:12::play_movement:48::play_move_rotate:155::play_collision:170 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:48::play_move_leftright:150::play_collision:208 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:48::play_move_leftright:150::play_collision:219 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:48::play_move_down:142::play_collision:243 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_spawn_current:25::play_collision:273 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256::play_collision:273 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ) always clobbers reg byte a +Statement [193] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:48::play_move_rotate:155::play_collision:170 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_leftright:150::play_collision:208 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_leftright:150::play_collision:219 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_down:142::play_collision:243 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:273 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256::play_collision:273 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [207] (byte*~) current_piece#91 ← (byte*) current_piece#14 [ current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 current_piece#91 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:12::play_movement:48::play_move_leftright:150 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 current_piece#91 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a +Statement [218] (byte*~) current_piece#90 ← (byte*) current_piece#14 [ current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 current_piece#90 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:12::play_movement:48::play_move_leftright:150 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 current_piece#90 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a +Statement [242] (byte*~) current_piece#89 ← (byte*) current_piece#20 [ current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#89 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_movement:48::play_move_down:142 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#89 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a +Statement [257] (byte*~) current_piece#94 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 game_over#15 current_piece#94 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:48::play_move_down:142 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 game_over#15 current_piece#94 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a +Statement [265] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:67 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Statement [266] (byte) current_piece_char#16 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) [ current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [267] (byte*) current_piece_gfx#21 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [268] (byte) current_xpos#28 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) [ current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [269] (byte) current_ypos#22 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 ] ) always clobbers reg byte a +Statement [272] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_piece#93 play_collision::ypos#4 play_collision::xpos#4 game_over#69 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_piece#93 play_collision::ypos#4 play_collision::xpos#4 game_over#69 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_piece#93 play_collision::ypos#4 play_collision::xpos#4 game_over#69 ] ) always clobbers reg byte a +Statement [284] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ game_over#69 play_spawn_current::piece_idx#1 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 game_over#69 play_spawn_current::piece_idx#1 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 game_over#69 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a +Statement [288] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:164 [ play_update_score::removed#0 ] +Statement [289] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 ] ) always clobbers reg byte a +Statement [290] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:172 [ play_update_score::lines_before#0 ] +Statement [291] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a +Statement [293] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ) always clobbers reg byte a +Statement [294] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ) always clobbers reg byte a +Statement [296] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ) always clobbers reg byte a +Statement [297] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::lines_after#0 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::lines_after#0 ] ) always clobbers reg byte a +Statement [304] if((byte) level#20>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 [ level_bcd#11 level#20 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254::play_increase_level:300 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 lines_bcd#30 score_bcd#30 level_bcd#11 level#20 ] ) always clobbers reg byte a +Statement [305] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#20) [ level_bcd#11 level#20 current_movedown_slow#10 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254::play_increase_level:300 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 lines_bcd#30 score_bcd#30 level_bcd#11 level#20 current_movedown_slow#10 ] ) always clobbers reg byte a +Statement [308] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ level#20 current_movedown_slow#68 level_bcd#21 play_increase_level::$1 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254::play_increase_level:300 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 lines_bcd#30 score_bcd#30 level#20 current_movedown_slow#68 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a +Statement [310] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 [ level#20 current_movedown_slow#68 level_bcd#8 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254::play_increase_level:300 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 lines_bcd#30 score_bcd#30 level#20 current_movedown_slow#68 level_bcd#8 ] ) always clobbers reg byte a +Statement [314] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ level#20 current_movedown_slow#68 level_bcd#63 play_increase_level::b#2 play_increase_level::b4#0 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254::play_increase_level:300 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 lines_bcd#30 score_bcd#30 level#20 current_movedown_slow#68 level_bcd#63 play_increase_level::b#2 play_increase_level::b4#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ play_increase_level::b#2 play_increase_level::b#1 ] +Statement [315] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) [ level#20 current_movedown_slow#68 level_bcd#63 play_increase_level::b#2 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254::play_increase_level:300 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 lines_bcd#30 score_bcd#30 level#20 current_movedown_slow#68 level_bcd#63 play_increase_level::b#2 ] ) always clobbers reg byte a +Statement [332] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:12::play_movement:48::play_move_down:142::play_remove_lines:250 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:69 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:70 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:71 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] +Statement [340] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::removed#7 play_remove_lines::w#6 ] ( main:12::play_movement:48::play_move_down:142::play_remove_lines:250 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#7 play_remove_lines::w#6 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:74 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] +Statement [343] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#25 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#0 ] ( main:12::play_movement:48::play_move_down:142::play_lock_current:248 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#0 ] ) always clobbers reg byte a +Statement [345] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:12::play_movement:48::play_move_down:142::play_lock_current:248 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:75 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:77 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:76 [ play_lock_current::l#6 play_lock_current::l#1 ] +Statement [349] if(*((byte*) current_piece_gfx#105 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:48::play_move_down:142::play_lock_current:248 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:78 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ play_lock_current::c#2 play_lock_current::c#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:185 [ play_lock_current::i#1 ] +Statement [350] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#19 [ current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:48::play_move_down:142::play_lock_current:248 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [361] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:12::play_movement:48::play_move_down:142::keyboard_event_pressed:228 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:383 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:389 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:395 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:401 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:80 [ keyboard_event_pressed::keycode#5 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:83 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] +Statement [363] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:12::play_movement:48::play_move_down:142::keyboard_event_pressed:228 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:383 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:389 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:395 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:401 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:187 [ keyboard_event_pressed::row_bits#0 ] +Statement [364] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:12::play_movement:48::play_move_down:142::keyboard_event_pressed:228 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:383 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:389 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:395 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:401 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [378] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:82 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Statement [393] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a +Statement [399] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a +Statement [405] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a +Statement [408] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:192 [ keyboard_event_scan::row_scan#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:84 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:85 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Statement [409] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a +Statement [412] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a +Statement [414] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a +Statement [420] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [421] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a +Statement [424] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:12::keyboard_event_scan:40::keyboard_matrix_read:374 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a +Statement [425] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:12::keyboard_event_scan:40::keyboard_matrix_read:374 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [436] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:88 [ play_init::j#2 play_init::j#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:91 [ play_init::idx#2 play_init::idx#1 ] +Statement [437] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [438] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [439] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a +Statement [440] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a +Statement [443] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:12::play_init:23 [ ] ) always clobbers reg byte a +Statement [446] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:92 [ play_init::b#2 play_init::b#1 ] +Statement [447] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) [ current_movedown_slow#1 play_init::b#2 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a +Statement [452] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [433] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [434] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [435] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [436] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [437] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [438] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [439] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [442] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [443] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [444] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [445] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [447] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:91 [ sprites_init::s#2 sprites_init::s#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:92 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Statement [448] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [449] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [450] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [455] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [457] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [458] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [459] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [460] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [461] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [462] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [463] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [468] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:93 [ render_init::i#2 render_init::i#1 ] -Statement [469] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [470] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ) always clobbers reg byte a -Statement [471] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [472] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a -Statement [473] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a -Statement [480] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:12::render_init:17::render_screen_original:464 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:12::render_init:17::render_screen_original:466 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ render_screen_original::y#6 render_screen_original::y#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:98 [ render_screen_original::y#6 render_screen_original::y#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:107 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:107 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] -Statement [482] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:12::render_init:17::render_screen_original:464 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:12::render_init:17::render_screen_original:466 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [487] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:12::render_init:17::render_screen_original:464 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:12::render_init:17::render_screen_original:466 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y -Statement [490] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:12::render_init:17::render_screen_original:464 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:12::render_init:17::render_screen_original:466 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y -Statement [496] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:464 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:466 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [498] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:464 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:466 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [505] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [506] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [514] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a -Statement [516] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:209 [ sprites_irq::ptr#0 ] -Statement [523] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte y -Statement [524] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [525] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [526] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [527] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a -Statement [530] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ sprites_irq::raster_next#0 sprites_irq::$4 ] ( [ sprites_irq::raster_next#0 sprites_irq::$4 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:109 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] -Statement [535] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [536] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [537] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [538] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [539] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [541] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [454] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [455] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [456] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [457] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [458] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [459] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [460] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [463] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [464] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [465] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [466] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [468] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:93 [ sprites_init::s#2 sprites_init::s#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:94 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Statement [469] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [470] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [471] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [476] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [478] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [479] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [480] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [481] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [482] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [483] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [484] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [489] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:95 [ render_init::i#2 render_init::i#1 ] +Statement [490] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [491] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ) always clobbers reg byte a +Statement [492] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [493] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a +Statement [494] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a +Statement [501] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:12::render_init:17::render_screen_original:485 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:12::render_init:17::render_screen_original:487 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:100 [ render_screen_original::y#6 render_screen_original::y#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:100 [ render_screen_original::y#6 render_screen_original::y#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:109 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:109 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] +Statement [503] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:12::render_init:17::render_screen_original:485 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:12::render_init:17::render_screen_original:487 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [508] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:12::render_init:17::render_screen_original:485 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:12::render_init:17::render_screen_original:487 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y +Statement [511] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:12::render_init:17::render_screen_original:485 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:12::render_init:17::render_screen_original:487 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y +Statement [517] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:485 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:487 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [519] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:485 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:487 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [526] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a +Statement [527] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a +Statement [537] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a +Statement [539] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:216 [ sprites_irq::ptr#0 ] +Statement [546] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte y +Statement [547] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a +Statement [548] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [549] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a +Statement [550] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a +Statement [551] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a +Statement [553] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a +Statement [554] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [555] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [556] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [557] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [558] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [559] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a +Statement [560] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [561] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [563] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a Statement [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a Statement [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a -Statement [7] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a -Statement [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a +Statement [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 [ ] ( ) always clobbers reg byte a +Statement [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( ) always clobbers reg byte a Statement [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a -Statement [30] (byte*~) current_piece_gfx#102 ← (byte*) current_piece_gfx#16 [ current_ypos#86 current_ypos#18 current_xpos#112 current_xpos#23 current_piece_gfx#102 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 ] ( main:12 [ current_ypos#86 current_ypos#18 current_xpos#112 current_xpos#23 current_piece_gfx#102 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 ] ) always clobbers reg byte a -Statement [33] (byte*~) current_piece#73 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#73 current_movedown_slow#1 ] ( main:12 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#73 current_movedown_slow#1 ] ) always clobbers reg byte a -Statement [35] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 keyboard_events_size#19 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 ] ( main:12 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 keyboard_events_size#19 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 ] ) always clobbers reg byte a -Statement [48] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#1 current_xpos#1 ] ( main:12 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#1 current_xpos#1 ] ) always clobbers reg byte a -Statement [53] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#1 ] ( main:12 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#1 ] ) always clobbers reg byte a -Statement [58] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#3 ] ( main:12 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#3 ] ) always clobbers reg byte a -Statement [65] (byte*~) current_piece_gfx#103 ← (byte*) current_piece_gfx#14 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 current_ypos#87 render_screen_render#64 current_xpos#113 current_piece_gfx#103 ] ( main:12 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 current_ypos#87 render_screen_render#64 current_xpos#113 current_piece_gfx#103 ] ) always clobbers reg byte a -Statement [72] (byte) render_screen_render#11 ← (byte) render_screen_render#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#16 render_screen_render#11 ] ( main:12::render_screen_swap:71 [ current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a -Statement [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#13 render_screen_render#11 ] ( main:12::render_screen_swap:71 [ current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a -Statement [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen#0 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen#0 ] ) always clobbers reg byte a -Statement [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen#1 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen#1 ] ) always clobbers reg byte a -Statement [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen#2 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen#2 ] ) always clobbers reg byte a -Statement [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#11 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#3 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#3 ] ) always clobbers reg byte a -Statement [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#3 render_bcd::screen#3 ] ) always clobbers reg byte a -Statement [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#11 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#4 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#4 ] ) always clobbers reg byte a -Statement [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#4 render_bcd::screen#4 ] ) always clobbers reg byte a -Statement [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::screen#5 ] ( main:12::render_score:69 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::screen#5 ] ) always clobbers reg byte a -Statement [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte a -Statement [100] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] ) always clobbers reg byte a -Statement [101] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] ) always clobbers reg byte a -Statement [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y -Statement [105] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ render_bcd::screen_pos#3 render_bcd::$5 ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::screen_pos#3 render_bcd::$5 ] ) always clobbers reg byte a -Statement [106] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 [ render_bcd::screen_pos#3 render_bcd::$6 ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::screen_pos#3 render_bcd::$6 ] ) always clobbers reg byte a -Statement [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 [ render_bcd::screen_pos#3 ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_bcd::screen_pos#3 ] ) always clobbers reg byte y -Statement [108] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 [ ] ( main:12::render_score:69::render_bcd:80 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 ] main:12::render_score:69::render_bcd:83 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 ] main:12::render_score:69::render_bcd:86 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 ] main:12::render_score:69::render_bcd:89 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 ] main:12::render_score:69::render_bcd:92 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 render_score::screen#2 ] main:12::render_score:69::render_bcd:95 [ render_screen_show#16 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 score_bcd#10 level#12 render_screen_render#17 lines_bcd#11 level_bcd#13 ] ) always clobbers reg byte a -Statement [111] (byte) render_moving::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#0 ] ( main:12::render_moving:32 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#0 ] main:12::render_moving:67 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#0 ] ) always clobbers reg byte a -Statement [113] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@13 [ render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 ] ( main:12::render_moving:32 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 ] main:12::render_moving:67 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 ] ) always clobbers reg byte a -Statement [114] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ( main:12::render_moving:32 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] main:12::render_moving:67 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a -Statement [121] (byte~) render_moving::$5 ← (byte) render_screen_render#30 + (byte) render_moving::ypos2#2 [ render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$5 ] ( main:12::render_moving:32 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$5 ] main:12::render_moving:67 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$5 ] ) always clobbers reg byte a -Statement [122] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) [ render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:12::render_moving:32 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:12::render_moving:67 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a -Statement [125] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_moving::i#4) [ render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:12::render_moving:32 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:12::render_moving:67 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a -Statement [129] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#64 [ render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::i#10 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:12::render_moving:32 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::i#10 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:12::render_moving:67 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#30 current_xpos#47 current_piece_gfx#53 current_piece_char#64 render_moving::ypos2#2 render_moving::l#4 render_moving::i#10 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a -Statement [135] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:12::render_playfield:27 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:12::render_playfield:61 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a -Statement [136] (byte~) render_playfield::$3 ← (byte) render_screen_render#21 + (byte~) render_playfield::$2 [ render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:12::render_playfield:27 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:12::render_playfield:61 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a -Statement [137] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) [ render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:12::render_playfield:27 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:12::render_playfield:61 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a -Statement [139] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#21 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:12::render_playfield:27 [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 current_movedown_slow#1 render_screen_render#21 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:12::render_playfield:61 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece#10 current_orientation#19 current_piece_gfx#14 current_xpos#19 current_ypos#13 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 render_screen_render#21 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y -Statement [151] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$2 ] ( main:12::play_move_rotate:55 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$2 ] ) always clobbers reg byte a -Statement [152] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#2 ] ( main:12::play_move_rotate:55 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#2 ] ) always clobbers reg byte a -Statement [157] (byte*~) current_piece#79 ← (byte*) current_piece#10 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#79 ] ( main:12::play_move_rotate:55 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#79 ] ) always clobbers reg byte a -Statement [163] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#4 current_piece_gfx#3 ] ( main:12::play_move_rotate:55 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#4 current_piece_gfx#3 ] ) always clobbers reg byte a -Statement [164] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$4 ] ( main:12::play_move_rotate:55 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::$4 ] ) always clobbers reg byte a -Statement [165] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#1 ] ( main:12::play_move_rotate:55 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#1 ] ) always clobbers reg byte a -Statement [167] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 [ play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ( main:12::play_move_rotate:55::play_collision:158 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:12::play_move_leftright:50::play_collision:196 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:12::play_move_leftright:50::play_collision:207 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:12::play_move_down:45::play_collision:231 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ) always clobbers reg byte a -Statement [168] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ( main:12::play_move_rotate:55::play_collision:158 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_move_leftright:50::play_collision:196 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_move_leftright:50::play_collision:207 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_move_down:45::play_collision:231 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a -Statement [170] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:12::play_move_rotate:55::play_collision:158 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_move_leftright:50::play_collision:196 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_move_leftright:50::play_collision:207 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_move_down:45::play_collision:231 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a -Statement [174] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_move_rotate:55::play_collision:158 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_move_leftright:50::play_collision:196 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_move_leftright:50::play_collision:207 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_move_down:45::play_collision:231 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [178] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ( main:12::play_move_rotate:55::play_collision:158 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_move_leftright:50::play_collision:196 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_move_leftright:50::play_collision:207 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_move_down:45::play_collision:231 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ) always clobbers reg byte a -Statement [181] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_move_rotate:55::play_collision:158 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::render#2 current_piece#10 current_xpos#19 current_ypos#13 current_orientation#14 current_piece_gfx#1 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_move_leftright:50::play_collision:196 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_move_leftright:50::play_collision:207 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_xpos#1 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_move_down:45::play_collision:231 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [195] (byte*~) current_piece#78 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#13 current_orientation#14 current_piece#78 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#1 ] ( main:12::play_move_leftright:50 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_piece#78 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#1 ] ) always clobbers reg byte a -Statement [206] (byte*~) current_piece#77 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#13 current_orientation#14 current_piece#77 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#1 ] ( main:12::play_move_leftright:50 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#17 current_piece_char#1 keyboard_events_size#16 current_movedown_counter#10 lines_bcd#11 score_bcd#10 level#12 level_bcd#13 main::key_event#0 main::render#1 current_piece_gfx#1 current_piece#10 current_ypos#13 current_orientation#14 current_piece#77 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#1 ] ) always clobbers reg byte a -Statement [230] (byte*~) current_piece#76 ← (byte*) current_piece#16 [ current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_piece#76 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_move_down:45 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_piece#76 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [245] (byte*~) current_piece#80 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#80 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 ] ( main:12::play_move_down:45 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 current_piece#80 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 ] ) always clobbers reg byte a -Statement [253] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:12::play_move_down:45::play_spawn_current:244 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [254] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:12::play_move_down:45::play_spawn_current:244 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [255] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) [ current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:12::play_move_down:45::play_spawn_current:244 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [256] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:12::play_move_down:45::play_spawn_current:244 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 current_ypos#18 current_xpos#23 current_piece_gfx#16 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [257] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) [ current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] main:12::play_move_down:45::play_spawn_current:244 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 current_ypos#18 current_xpos#23 current_piece_gfx#16 current_piece_char#12 play_spawn_current::$3 ] ) always clobbers reg byte a -Statement [263] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ play_spawn_current::piece_idx#1 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::piece_idx#1 ] main:12::play_move_down:45::play_spawn_current:244 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#13 score_bcd#12 level#14 current_movedown_slow#19 level_bcd#15 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [267] (byte~) play_update_score::$2 ← < (word) lines_bcd#15 [ current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a -Statement [268] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 [ current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::lines_before#0 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::lines_before#0 ] ) always clobbers reg byte a -Statement [269] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ) always clobbers reg byte a -Statement [270] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) [ current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a -Statement [272] (word) lines_bcd#23 ← (word) lines_bcd#15 + (byte) play_update_score::removed#0 [ current_movedown_slow#12 score_bcd#14 level#19 level_bcd#20 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#23 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 score_bcd#14 level#19 level_bcd#20 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#23 ] ) always clobbers reg byte a -Statement [273] (dword) score_bcd#23 ← (dword) score_bcd#14 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#12 level#19 level_bcd#20 play_update_score::lines_before#0 lines_bcd#23 score_bcd#23 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 level#19 level_bcd#20 play_update_score::lines_before#0 lines_bcd#23 score_bcd#23 ] ) always clobbers reg byte a -Statement [275] (byte~) play_update_score::$5 ← < (word) lines_bcd#23 [ current_movedown_slow#12 level#19 level_bcd#20 play_update_score::lines_before#0 lines_bcd#23 score_bcd#23 play_update_score::$5 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 level#19 level_bcd#20 play_update_score::lines_before#0 lines_bcd#23 score_bcd#23 play_update_score::$5 ] ) always clobbers reg byte a -Statement [276] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 [ current_movedown_slow#12 level#19 level_bcd#20 play_update_score::lines_before#0 lines_bcd#23 score_bcd#23 play_update_score::lines_after#0 ] ( main:12::play_move_down:45::play_update_score:242 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 level#19 level_bcd#20 play_update_score::lines_before#0 lines_bcd#23 score_bcd#23 play_update_score::lines_after#0 ] ) always clobbers reg byte a -Statement [283] if((byte) level#16>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 [ level_bcd#20 level#16 ] ( main:12::play_move_down:45::play_update_score:242::play_increase_level:279 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#23 score_bcd#23 level_bcd#20 level#16 ] ) always clobbers reg byte a -Statement [284] (byte) current_movedown_slow#8 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#16) [ level_bcd#20 level#16 current_movedown_slow#8 ] ( main:12::play_move_down:45::play_update_score:242::play_increase_level:279 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#23 score_bcd#23 level_bcd#20 level#16 current_movedown_slow#8 ] ) always clobbers reg byte a -Statement [287] (byte~) play_increase_level::$1 ← (byte) level_bcd#17 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ level#16 current_movedown_slow#60 level_bcd#17 play_increase_level::$1 ] ( main:12::play_move_down:45::play_update_score:242::play_increase_level:279 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#23 score_bcd#23 level#16 current_movedown_slow#60 level_bcd#17 play_increase_level::$1 ] ) always clobbers reg byte a -Statement [289] (byte) level_bcd#6 ← (byte) level_bcd#17 + (byte/signed byte/word/signed word/dword/signed dword) 6 [ level#16 current_movedown_slow#60 level_bcd#6 ] ( main:12::play_move_down:45::play_update_score:242::play_increase_level:279 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#23 score_bcd#23 level#16 current_movedown_slow#60 level_bcd#6 ] ) always clobbers reg byte a -Statement [293] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ level#16 current_movedown_slow#60 level_bcd#55 play_increase_level::b#2 play_increase_level::b4#0 ] ( main:12::play_move_down:45::play_update_score:242::play_increase_level:279 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#23 score_bcd#23 level#16 current_movedown_slow#60 level_bcd#55 play_increase_level::b#2 play_increase_level::b4#0 ] ) always clobbers reg byte a -Statement [294] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) [ level#16 current_movedown_slow#60 level_bcd#55 play_increase_level::b#2 ] ( main:12::play_move_down:45::play_update_score:242::play_increase_level:279 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 lines_bcd#23 score_bcd#23 level#16 current_movedown_slow#60 level_bcd#55 play_increase_level::b#2 ] ) always clobbers reg byte a -Statement [311] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:12::play_move_down:45::play_remove_lines:238 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a -Statement [319] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::removed#7 play_remove_lines::w#6 ] ( main:12::play_move_down:45::play_remove_lines:238 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 play_remove_lines::removed#7 play_remove_lines::w#6 ] ) always clobbers reg byte a -Statement [322] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#0 ] ( main:12::play_move_down:45::play_lock_current:236 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#0 ] ) always clobbers reg byte a -Statement [324] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:12::play_move_down:45::play_lock_current:236 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a -Statement [328] if(*((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_move_down:45::play_lock_current:236 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [329] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 [ current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_move_down:45::play_lock_current:236 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_piece_gfx#20 current_xpos#10 current_piece_char#15 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [340] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:12::play_move_down:45::keyboard_event_pressed:216 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:362 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:368 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:374 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:380 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Statement [342] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:12::play_move_down:45::keyboard_event_pressed:216 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:362 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:368 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:374 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:380 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Statement [343] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:12::play_move_down:45::keyboard_event_pressed:216 [ render_screen_show#16 render_screen_render#17 keyboard_events_size#16 main::key_event#0 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:362 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:368 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:374 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:39::keyboard_event_pressed:380 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [356] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a -Statement [357] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a -Statement [372] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a -Statement [378] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a -Statement [384] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [387] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a -Statement [388] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a -Statement [391] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [393] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a -Statement [399] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [400] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:12::keyboard_event_scan:39 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a -Statement [403] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:12::keyboard_event_scan:39::keyboard_matrix_read:353 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a -Statement [404] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:12::keyboard_event_scan:39::keyboard_matrix_read:353 [ render_screen_show#16 render_screen_render#17 current_movedown_slow#12 current_piece#16 current_orientation#10 current_piece_gfx#20 current_xpos#10 current_ypos#21 current_piece_char#15 current_movedown_counter#12 lines_bcd#15 score_bcd#14 level#19 level_bcd#20 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [415] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ) always clobbers reg byte a -Statement [416] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [417] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [418] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a -Statement [419] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a -Statement [422] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:12::play_init:23 [ ] ) always clobbers reg byte a -Statement [425] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ) always clobbers reg byte a -Statement [426] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) [ current_movedown_slow#1 play_init::b#2 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a -Statement [431] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [30] (byte*~) current_piece_gfx#115 ← (byte*) current_piece_gfx#21 [ current_ypos#99 current_ypos#22 current_xpos#125 current_xpos#28 current_piece_gfx#115 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 ] ( main:12 [ current_ypos#99 current_ypos#22 current_xpos#125 current_xpos#28 current_piece_gfx#115 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 ] ) always clobbers reg byte a +Statement [33] (byte*~) current_piece#88 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 current_piece#88 current_movedown_slow#1 game_over#15 ] ( main:12 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 current_piece#88 current_movedown_slow#1 game_over#15 ] ) always clobbers reg byte a +Statement [35] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ( main:12 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 ] ) always clobbers reg byte a +Statement [36] (byte~) main::$9 ← (byte) render_screen_show#17 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 main::$9 ] ( main:12 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 main::$9 ] ) always clobbers reg byte a +Statement [57] (byte*~) current_piece_gfx#116 ← (byte*) current_piece_gfx#16 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 current_ypos#100 render_screen_render#68 current_xpos#126 current_piece_gfx#116 ] ( main:12 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 current_ypos#100 render_screen_render#68 current_xpos#126 current_piece_gfx#116 ] ) always clobbers reg byte a +Statement [65] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_screen_show#29 render_screen_render#33 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 ] ( main:12 [ render_screen_show#29 render_screen_render#33 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 ] ) always clobbers reg byte a +Statement [66] (byte) render_screen_render#11 ← (byte) render_screen_render#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#17 render_screen_render#11 ] ( main:12::render_screen_swap:63 [ current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_show#17 render_screen_render#11 ] ) always clobbers reg byte a +Statement [67] (byte) render_screen_show#13 ← (byte) render_screen_show#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 [ render_screen_show#13 render_screen_render#11 ] ( main:12::render_screen_swap:63 [ current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a +Statement [72] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen#0 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen#0 ] ) always clobbers reg byte a +Statement [75] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen#1 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen#1 ] ) always clobbers reg byte a +Statement [78] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen#2 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen#2 ] ) always clobbers reg byte a +Statement [81] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#3 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#3 ] ) always clobbers reg byte a +Statement [82] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#3 render_bcd::screen#3 ] ) always clobbers reg byte a +Statement [84] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#4 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#4 ] ) always clobbers reg byte a +Statement [85] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#4 render_bcd::screen#4 ] ) always clobbers reg byte a +Statement [87] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 [ render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:12::render_score:61 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ) always clobbers reg byte a +Statement [92] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte a +Statement [94] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$3 ] ) always clobbers reg byte a +Statement [95] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$4 ] ) always clobbers reg byte a +Statement [96] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y +Statement [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ render_bcd::screen_pos#3 render_bcd::$5 ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$5 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$5 ] ) always clobbers reg byte a +Statement [100] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 [ render_bcd::screen_pos#3 render_bcd::$6 ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 render_bcd::$6 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$6 ] ) always clobbers reg byte a +Statement [101] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 [ render_bcd::screen_pos#3 ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 render_bcd::screen_pos#3 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 ] ) always clobbers reg byte y +Statement [102] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 [ ] ( main:12::render_score:61::render_bcd:74 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 ] main:12::render_score:61::render_bcd:77 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 ] main:12::render_score:61::render_bcd:80 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 ] main:12::render_score:61::render_bcd:83 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 ] main:12::render_score:61::render_bcd:86 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 render_score::screen#2 ] main:12::render_score:61::render_bcd:89 [ render_screen_show#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 score_bcd#14 level#16 render_screen_render#17 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte a +Statement [105] (byte) render_moving::ypos2#0 ← (byte) current_ypos#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#0 ] ( main:12::render_moving:32 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#0 ] main:12::render_moving:59 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#0 ] ) always clobbers reg byte a +Statement [107] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@13 [ render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 ] ( main:12::render_moving:32 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 ] main:12::render_moving:59 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 ] ) always clobbers reg byte a +Statement [108] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ( main:12::render_moving:32 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] main:12::render_moving:59 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a +Statement [115] (byte~) render_moving::$5 ← (byte) render_screen_render#30 + (byte) render_moving::ypos2#2 [ render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$5 ] ( main:12::render_moving:32 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$5 ] main:12::render_moving:59 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::$5 ] ) always clobbers reg byte a +Statement [116] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) [ render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:12::render_moving:32 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:12::render_moving:59 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a +Statement [119] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#62 + (byte) render_moving::i#4) [ render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:12::render_moving:32 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:12::render_moving:59 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a +Statement [123] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#75 [ render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::i#10 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:12::render_moving:32 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::i#10 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:12::render_moving:59 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#30 current_xpos#57 current_piece_gfx#62 current_piece_char#75 render_moving::ypos2#2 render_moving::l#4 render_moving::i#10 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a +Statement [129] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ( main:12::render_playfield:27 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] main:12::render_playfield:53 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$2 ] ) always clobbers reg byte a +Statement [130] (byte~) render_playfield::$3 ← (byte) render_screen_render#21 + (byte~) render_playfield::$2 [ render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:12::render_playfield:27 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:12::render_playfield:53 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a +Statement [131] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) [ render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:12::render_playfield:27 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:12::render_playfield:53 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#21 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a +Statement [133] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_screen_render#21 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:12::render_playfield:27 [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_movedown_slow#1 game_over#15 render_screen_render#21 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:12::render_playfield:53 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_orientation#16 current_piece_gfx#16 current_xpos#17 current_ypos#17 game_over#14 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 render_screen_render#21 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Statement [145] (byte) play_movement::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_movement::$0 [ current_movedown_slow#21 current_piece#14 current_piece_char#14 current_ypos#17 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#19 current_piece_gfx#18 current_xpos#20 ] ( main:12::play_movement:48 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_ypos#17 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#19 current_piece_gfx#18 current_xpos#20 ] ) always clobbers reg byte a +Statement [153] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ current_movedown_slow#21 current_piece#14 current_piece_char#14 current_ypos#17 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_movement::render#2 ] ( main:12::play_movement:48 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_ypos#17 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_movement::render#2 ] ) always clobbers reg byte a +Statement [158] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ current_movedown_slow#21 current_piece#14 current_piece_char#14 current_ypos#17 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::return#0 current_orientation#24 current_piece_gfx#19 current_xpos#24 ] ( main:12::play_movement:48 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece#14 current_piece_char#14 current_ypos#17 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::return#0 current_orientation#24 current_piece_gfx#19 current_xpos#24 ] ) always clobbers reg byte a +Statement [163] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#19 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::$2 ] ( main:12::play_movement:48::play_move_rotate:155 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::$2 ] ) always clobbers reg byte a +Statement [164] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#2 ] ( main:12::play_movement:48::play_move_rotate:155 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#2 ] ) always clobbers reg byte a +Statement [169] (byte*~) current_piece#92 ← (byte*) current_piece#14 [ current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#92 ] ( main:12::play_movement:48::play_move_rotate:155 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#92 ] ) always clobbers reg byte a +Statement [175] (byte*) current_piece_gfx#6 ← (byte*) current_piece#14 + (byte) current_orientation#7 [ current_piece#14 current_ypos#17 current_xpos#24 current_orientation#7 current_piece_gfx#6 ] ( main:12::play_movement:48::play_move_rotate:155 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_xpos#24 current_orientation#7 current_piece_gfx#6 ] ) always clobbers reg byte a +Statement [176] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#19 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::$4 ] ( main:12::play_movement:48::play_move_rotate:155 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::$4 ] ) always clobbers reg byte a +Statement [177] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#1 ] ( main:12::play_movement:48::play_move_rotate:155 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#1 ] ) always clobbers reg byte a +Statement [179] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#16 + (byte) play_collision::orientation#5 [ play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:12::play_movement:48::play_move_rotate:155::play_collision:170 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:48::play_move_leftright:150::play_collision:208 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:48::play_move_leftright:150::play_collision:219 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:48::play_move_down:142::play_collision:243 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_spawn_current:25::play_collision:273 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256::play_collision:273 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::ypos#5 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a +Statement [180] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ( main:12::play_movement:48::play_move_rotate:155::play_collision:170 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:48::play_move_leftright:150::play_collision:208 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:48::play_move_leftright:150::play_collision:219 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:48::play_move_down:142::play_collision:243 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_spawn_current:25::play_collision:273 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256::play_collision:273 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a +Statement [182] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:12::play_movement:48::play_move_rotate:155::play_collision:170 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:48::play_move_leftright:150::play_collision:208 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:48::play_move_leftright:150::play_collision:219 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:48::play_move_down:142::play_collision:243 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_spawn_current:25::play_collision:273 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256::play_collision:273 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a +Statement [186] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:48::play_move_rotate:155::play_collision:170 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_leftright:150::play_collision:208 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_leftright:150::play_collision:219 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_down:142::play_collision:243 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:273 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256::play_collision:273 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [190] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ( main:12::play_movement:48::play_move_rotate:155::play_collision:170 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:48::play_move_leftright:150::play_collision:208 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:48::play_move_leftright:150::play_collision:219 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:48::play_move_down:142::play_collision:243 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_spawn_current:25::play_collision:273 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256::play_collision:273 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ) always clobbers reg byte a +Statement [193] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:12::play_movement:48::play_move_rotate:155::play_collision:170 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::render#2 current_piece#14 current_ypos#17 current_orientation#19 current_piece_gfx#18 current_xpos#24 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_leftright:150::play_collision:208 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_leftright:150::play_collision:219 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_down:142::play_collision:243 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_spawn_current:25::play_collision:273 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256::play_collision:273 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [207] (byte*~) current_piece#91 ← (byte*) current_piece#14 [ current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 current_piece#91 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:12::play_movement:48::play_move_leftright:150 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 current_piece#91 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a +Statement [218] (byte*~) current_piece#90 ← (byte*) current_piece#14 [ current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 current_piece#90 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:12::play_movement:48::play_move_leftright:150 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 current_movedown_slow#21 current_piece_char#14 game_over#14 current_movedown_counter#14 lines_bcd#15 score_bcd#14 level#16 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#18 current_piece#14 current_ypos#17 current_orientation#19 current_xpos#20 current_piece#90 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a +Statement [242] (byte*~) current_piece#89 ← (byte*) current_piece#20 [ current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#89 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:12::play_movement:48::play_move_down:142 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece#89 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a +Statement [257] (byte*~) current_piece#94 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 game_over#15 current_piece#94 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 ] ( main:12::play_movement:48::play_move_down:142 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 game_over#15 current_piece#94 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a +Statement [265] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [266] (byte) current_piece_char#16 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) [ current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [267] (byte*) current_piece_gfx#21 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [268] (byte) current_xpos#28 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) [ current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [269] (byte) current_ypos#22 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 game_over#69 ] ) always clobbers reg byte a +Statement [272] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_piece#93 play_collision::ypos#4 play_collision::xpos#4 game_over#69 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_piece#93 play_collision::ypos#4 play_collision::xpos#4 game_over#69 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 current_ypos#22 current_xpos#28 current_piece_gfx#21 current_piece_char#16 play_spawn_current::$3 current_piece#93 play_collision::ypos#4 play_collision::xpos#4 game_over#69 ] ) always clobbers reg byte a +Statement [284] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ game_over#69 play_spawn_current::piece_idx#1 ] ( main:12::play_spawn_current:25 [ current_movedown_slow#1 game_over#69 play_spawn_current::piece_idx#1 ] main:12::play_movement:48::play_move_down:142::play_spawn_current:256 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 lines_bcd#17 score_bcd#16 level#18 current_movedown_slow#23 level_bcd#19 game_over#69 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a +Statement [288] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a +Statement [289] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 ] ) always clobbers reg byte a +Statement [290] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$4 ] ) always clobbers reg byte a +Statement [291] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) [ current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a +Statement [293] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 score_bcd#18 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#30 ] ) always clobbers reg byte a +Statement [294] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 ] ) always clobbers reg byte a +Statement [296] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::$5 ] ) always clobbers reg byte a +Statement [297] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 [ current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::lines_after#0 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#30 score_bcd#30 play_update_score::lines_after#0 ] ) always clobbers reg byte a +Statement [304] if((byte) level#20>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 [ level_bcd#11 level#20 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254::play_increase_level:300 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 lines_bcd#30 score_bcd#30 level_bcd#11 level#20 ] ) always clobbers reg byte a +Statement [305] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#20) [ level_bcd#11 level#20 current_movedown_slow#10 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254::play_increase_level:300 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 lines_bcd#30 score_bcd#30 level_bcd#11 level#20 current_movedown_slow#10 ] ) always clobbers reg byte a +Statement [308] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ level#20 current_movedown_slow#68 level_bcd#21 play_increase_level::$1 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254::play_increase_level:300 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 lines_bcd#30 score_bcd#30 level#20 current_movedown_slow#68 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a +Statement [310] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 [ level#20 current_movedown_slow#68 level_bcd#8 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254::play_increase_level:300 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 lines_bcd#30 score_bcd#30 level#20 current_movedown_slow#68 level_bcd#8 ] ) always clobbers reg byte a +Statement [314] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ level#20 current_movedown_slow#68 level_bcd#63 play_increase_level::b#2 play_increase_level::b4#0 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254::play_increase_level:300 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 lines_bcd#30 score_bcd#30 level#20 current_movedown_slow#68 level_bcd#63 play_increase_level::b#2 play_increase_level::b4#0 ] ) always clobbers reg byte a +Statement [315] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) [ level#20 current_movedown_slow#68 level_bcd#63 play_increase_level::b#2 ] ( main:12::play_movement:48::play_move_down:142::play_update_score:254::play_increase_level:300 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 game_over#19 lines_bcd#30 score_bcd#30 level#20 current_movedown_slow#68 level_bcd#63 play_increase_level::b#2 ] ) always clobbers reg byte a +Statement [332] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:12::play_movement:48::play_move_down:142::play_remove_lines:250 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a +Statement [340] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::removed#7 play_remove_lines::w#6 ] ( main:12::play_movement:48::play_move_down:142::play_remove_lines:250 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 play_remove_lines::removed#7 play_remove_lines::w#6 ] ) always clobbers reg byte a +Statement [343] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#25 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#0 ] ( main:12::play_movement:48::play_move_down:142::play_lock_current:248 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#0 ] ) always clobbers reg byte a +Statement [345] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:12::play_movement:48::play_move_down:142::play_lock_current:248 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a +Statement [349] if(*((byte*) current_piece_gfx#105 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:48::play_move_down:142::play_lock_current:248 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [350] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#19 [ current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:12::play_movement:48::play_move_down:142::play_lock_current:248 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_piece_char#19 current_piece_gfx#105 current_xpos#115 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [361] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:12::play_movement:48::play_move_down:142::keyboard_event_pressed:228 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:383 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:389 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:395 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:401 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [363] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:12::play_movement:48::play_move_down:142::keyboard_event_pressed:228 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:383 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:389 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:395 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:401 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [364] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:12::play_movement:48::play_move_down:142::keyboard_event_pressed:228 [ render_screen_show#17 render_screen_render#17 keyboard_events_size#16 play_movement::key_event#0 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:383 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:389 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:395 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:12::keyboard_event_scan:40::keyboard_event_pressed:401 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [377] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a +Statement [378] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [393] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a +Statement [399] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a +Statement [405] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a +Statement [408] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a +Statement [409] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a +Statement [412] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a +Statement [414] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a +Statement [420] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [421] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:12::keyboard_event_scan:40 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a +Statement [424] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:12::keyboard_event_scan:40::keyboard_matrix_read:374 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a +Statement [425] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:12::keyboard_event_scan:40::keyboard_matrix_read:374 [ render_screen_show#17 render_screen_render#17 current_movedown_slow#14 current_piece#20 current_piece_char#19 current_orientation#12 current_piece_gfx#105 current_xpos#115 current_ypos#25 game_over#19 current_movedown_counter#16 lines_bcd#19 score_bcd#18 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [436] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ) always clobbers reg byte a +Statement [437] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [438] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [439] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a +Statement [440] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:12::play_init:23 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a +Statement [443] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:12::play_init:23 [ ] ) always clobbers reg byte a +Statement [446] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 play_init::b4#0 ] ) always clobbers reg byte a +Statement [447] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) [ current_movedown_slow#1 play_init::b#2 ] ( main:12::play_init:23 [ current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a +Statement [452] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [433] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [434] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [435] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [436] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [437] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [438] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [439] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a -Statement [442] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [443] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [444] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [445] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [447] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a -Statement [448] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [449] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [450] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [455] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [457] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [458] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [459] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [460] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [461] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [462] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [463] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a -Statement [468] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ) always clobbers reg byte a -Statement [469] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [470] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ) always clobbers reg byte a -Statement [471] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [472] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a -Statement [473] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a -Statement [480] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:12::render_init:17::render_screen_original:464 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:12::render_init:17::render_screen_original:466 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y -Statement [482] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:12::render_init:17::render_screen_original:464 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:12::render_init:17::render_screen_original:466 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [487] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:12::render_init:17::render_screen_original:464 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:12::render_init:17::render_screen_original:466 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y -Statement [490] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:12::render_init:17::render_screen_original:464 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:12::render_init:17::render_screen_original:466 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y -Statement [496] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:464 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:466 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [498] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:464 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:466 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [505] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [506] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [514] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 ] ) always clobbers reg byte a -Statement [516] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a -Statement [523] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte y -Statement [524] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a -Statement [525] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [526] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a -Statement [527] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a -Statement [530] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ sprites_irq::raster_next#0 sprites_irq::$4 ] ( [ sprites_irq::raster_next#0 sprites_irq::$4 ] ) always clobbers reg byte a -Statement [535] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [536] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [537] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [538] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [539] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [541] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Potential registers zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] : zp ZP_BYTE:2 , reg byte x , -Potential registers zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#11 ] : zp ZP_BYTE:3 , reg byte x , -Potential registers zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] : zp ZP_BYTE:4 , reg byte x , +Statement [454] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [455] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [456] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [457] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [458] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [459] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [460] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:12::sprites_irq_init:21 [ ] ) always clobbers reg byte a +Statement [463] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [464] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [465] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [466] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:12::sprites_init:19 [ ] ) always clobbers reg byte a +Statement [468] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Statement [469] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [470] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [471] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:12::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [476] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [478] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [479] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [480] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [481] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [482] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [483] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [484] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 [ ] ( main:12::render_init:17 [ ] ) always clobbers reg byte a +Statement [489] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$13 ] ) always clobbers reg byte a +Statement [490] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [491] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$14 ] ) always clobbers reg byte a +Statement [492] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a +Statement [493] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a +Statement [494] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:12::render_init:17 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a +Statement [501] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:12::render_init:17::render_screen_original:485 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:12::render_init:17::render_screen_original:487 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y +Statement [503] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:12::render_init:17::render_screen_original:485 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:12::render_init:17::render_screen_original:487 [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [508] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:12::render_init:17::render_screen_original:485 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:12::render_init:17::render_screen_original:487 [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y +Statement [511] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:12::render_init:17::render_screen_original:485 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:12::render_init:17::render_screen_original:487 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y +Statement [517] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:485 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:487 [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [519] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:12::render_init:17::render_screen_original:485 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:12::render_init:17::render_screen_original:487 [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y +Statement [526] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a +Statement [527] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:12::sid_rnd_init:15 [ ] ) always clobbers reg byte a +Statement [537] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a +Statement [539] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Statement [546] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte y +Statement [547] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a +Statement [548] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [549] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a +Statement [550] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#3 ] ( [ irq_sprite_ptr#0 irq_raster_next#3 ] ) always clobbers reg byte a +Statement [551] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#3 ] ( [ irq_raster_next#3 ] ) always clobbers reg byte a +Statement [553] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a +Statement [554] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [555] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [556] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 ] ) always clobbers reg byte a +Statement [557] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [558] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ptr#0 irq_raster_next#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 ] ) always clobbers reg byte a +Statement [559] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ irq_raster_next#2 ] ( [ irq_raster_next#2 ] ) always clobbers reg byte a +Statement [560] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [561] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Statement [563] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ render_screen_show#17 render_screen_show#29 render_screen_show#13 ] : zp ZP_BYTE:2 , reg byte x , +Potential registers zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#33 render_screen_render#11 ] : zp ZP_BYTE:3 , reg byte x , +Potential registers zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] : zp ZP_BYTE:4 , reg byte x , Potential registers zp ZP_WORD:5 [ render_score::screen#2 ] : zp ZP_WORD:5 , Potential registers zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] : zp ZP_WORD:7 , Potential registers zp ZP_WORD:9 [ render_bcd::offset#6 ] : zp ZP_WORD:9 , Potential registers zp ZP_BYTE:11 [ render_bcd::only_low#6 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] : zp ZP_BYTE:12 , reg byte x , Potential registers zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] : zp ZP_WORD:13 , -Potential registers zp ZP_BYTE:15 [ current_ypos#9 current_ypos#86 current_ypos#87 ] : zp ZP_BYTE:15 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#64 ] : zp ZP_BYTE:16 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:17 [ current_xpos#47 current_xpos#112 current_xpos#113 ] : zp ZP_BYTE:17 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:18 [ current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 ] : zp ZP_WORD:18 , -Potential registers zp ZP_BYTE:20 [ current_piece_char#64 current_piece_char#90 current_piece_char#91 ] : zp ZP_BYTE:20 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:15 [ current_ypos#11 current_ypos#99 current_ypos#100 ] : zp ZP_BYTE:15 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#68 ] : zp ZP_BYTE:16 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:17 [ current_xpos#57 current_xpos#125 current_xpos#126 ] : zp ZP_BYTE:17 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:18 [ current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 ] : zp ZP_WORD:18 , +Potential registers zp ZP_BYTE:20 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 ] : zp ZP_BYTE:20 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] : zp ZP_BYTE:21 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:22 [ render_moving::l#4 render_moving::l#1 ] : zp ZP_BYTE:22 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:23 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 ] : zp ZP_BYTE:23 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:24 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:25 [ render_moving::c#2 render_moving::c#1 ] : zp ZP_BYTE:25 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:26 [ render_screen_render#21 render_screen_render#65 ] : zp ZP_BYTE:26 , reg byte x , +Potential registers zp ZP_BYTE:26 [ render_screen_render#21 render_screen_render#69 ] : zp ZP_BYTE:26 , reg byte x , Potential registers zp ZP_BYTE:27 [ render_playfield::l#2 render_playfield::l#1 ] : zp ZP_BYTE:27 , reg byte x , Potential registers zp ZP_BYTE:28 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] : zp ZP_BYTE:28 , reg byte x , Potential registers zp ZP_WORD:29 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] : zp ZP_WORD:29 , Potential registers zp ZP_BYTE:31 [ render_playfield::c#2 render_playfield::c#1 ] : zp ZP_BYTE:31 , reg byte x , -Potential registers zp ZP_BYTE:32 [ play_move_rotate::return#1 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:33 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:34 [ current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 ] : zp ZP_WORD:34 , -Potential registers zp ZP_BYTE:36 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] : zp ZP_BYTE:36 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:37 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] : zp ZP_BYTE:37 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:38 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] : zp ZP_BYTE:38 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:39 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] : zp ZP_BYTE:39 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:40 [ play_collision::l#6 play_collision::l#1 ] : zp ZP_BYTE:40 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:41 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] : zp ZP_BYTE:41 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:42 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] : zp ZP_BYTE:42 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:43 [ play_collision::c#2 play_collision::c#1 ] : zp ZP_BYTE:43 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:44 [ play_collision::return#14 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:45 [ play_move_leftright::return#1 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:46 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] : zp ZP_BYTE:46 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:47 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] : zp ZP_BYTE:47 , reg byte x , -Potential registers zp ZP_WORD:48 [ lines_bcd#20 lines_bcd#13 lines_bcd#15 lines_bcd#11 lines_bcd#23 ] : zp ZP_WORD:48 , -Potential registers zp ZP_DWORD:50 [ score_bcd#20 score_bcd#12 score_bcd#14 score_bcd#10 score_bcd#23 ] : zp ZP_DWORD:50 , -Potential registers zp ZP_BYTE:54 [ level#24 level#14 level#19 level#12 level#16 ] : zp ZP_BYTE:54 , reg byte x , -Potential registers zp ZP_BYTE:55 [ current_movedown_slow#31 current_movedown_slow#19 current_movedown_slow#12 current_movedown_slow#1 current_movedown_slow#17 current_movedown_slow#60 current_movedown_slow#8 ] : zp ZP_BYTE:55 , reg byte x , -Potential registers zp ZP_BYTE:56 [ level_bcd#25 level_bcd#15 level_bcd#20 level_bcd#13 level_bcd#55 level_bcd#17 level_bcd#6 ] : zp ZP_BYTE:56 , reg byte x , -Potential registers zp ZP_WORD:57 [ current_piece#20 current_piece#80 current_piece#16 current_piece#73 current_piece#10 ] : zp ZP_WORD:57 , -Potential registers zp ZP_BYTE:59 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] : zp ZP_BYTE:59 , reg byte x , -Potential registers zp ZP_WORD:60 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] : zp ZP_WORD:60 , -Potential registers zp ZP_BYTE:62 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] : zp ZP_BYTE:62 , reg byte x , -Potential registers zp ZP_BYTE:63 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] : zp ZP_BYTE:63 , reg byte x , -Potential registers zp ZP_BYTE:64 [ play_move_down::return#2 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:65 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] : zp ZP_BYTE:65 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:66 [ play_increase_level::b#2 play_increase_level::b#1 ] : zp ZP_BYTE:66 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:67 [ play_remove_lines::y#8 play_remove_lines::y#1 ] : zp ZP_BYTE:67 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:68 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] : zp ZP_BYTE:68 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:69 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] : zp ZP_BYTE:69 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:70 [ play_remove_lines::x#2 play_remove_lines::x#1 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:71 [ play_remove_lines::full#4 play_remove_lines::full#2 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:72 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] : zp ZP_BYTE:72 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:73 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] : zp ZP_BYTE:73 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:74 [ play_lock_current::l#6 play_lock_current::l#1 ] : zp ZP_BYTE:74 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:75 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] : zp ZP_BYTE:75 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:76 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] : zp ZP_BYTE:76 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:77 [ play_lock_current::c#2 play_lock_current::c#1 ] : zp ZP_BYTE:77 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:78 [ keyboard_event_pressed::keycode#5 ] : zp ZP_BYTE:78 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:79 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:80 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] : zp ZP_BYTE:80 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:81 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] : zp ZP_BYTE:81 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:82 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:82 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:83 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] : zp ZP_BYTE:83 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:84 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] : zp ZP_BYTE:84 , reg byte x , -Potential registers zp ZP_BYTE:85 [ render_show::d018val#3 ] : zp ZP_BYTE:85 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:86 [ play_init::j#2 play_init::j#1 ] : zp ZP_BYTE:86 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:87 [ play_init::pli#2 play_init::pli#1 ] : zp ZP_WORD:87 , -Potential registers zp ZP_BYTE:89 [ play_init::idx#2 play_init::idx#1 ] : zp ZP_BYTE:89 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:90 [ play_init::b#2 play_init::b#1 ] : zp ZP_BYTE:90 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:91 [ sprites_init::s#2 sprites_init::s#1 ] : zp ZP_BYTE:91 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:92 [ sprites_init::xpos#2 sprites_init::xpos#1 ] : zp ZP_BYTE:92 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:93 [ render_init::i#2 render_init::i#1 ] : zp ZP_BYTE:93 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:94 [ render_init::li_1#2 render_init::li_1#1 ] : zp ZP_WORD:94 , -Potential registers zp ZP_WORD:96 [ render_init::li_2#2 render_init::li_2#1 ] : zp ZP_WORD:96 , -Potential registers zp ZP_BYTE:98 [ render_screen_original::y#6 render_screen_original::y#1 ] : zp ZP_BYTE:98 , reg byte x , -Potential registers zp ZP_WORD:99 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] : zp ZP_WORD:99 , -Potential registers zp ZP_WORD:101 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] : zp ZP_WORD:101 , -Potential registers zp ZP_WORD:103 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] : zp ZP_WORD:103 , -Potential registers zp ZP_WORD:105 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] : zp ZP_WORD:105 , -Potential registers zp ZP_BYTE:107 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] : zp ZP_BYTE:107 , reg byte x , -Potential registers zp ZP_BYTE:108 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] : zp ZP_BYTE:108 , -Potential registers zp ZP_BYTE:109 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] : zp ZP_BYTE:109 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:110 [ render_screen_showing#0 ] : zp ZP_BYTE:110 , -Potential registers zp ZP_BYTE:111 [ irq_raster_next#0 ] : zp ZP_BYTE:111 , -Potential registers zp ZP_BYTE:112 [ irq_sprite_ypos#0 ] : zp ZP_BYTE:112 , -Potential registers zp ZP_BYTE:113 [ irq_sprite_ptr#0 ] : zp ZP_BYTE:113 , -Potential registers zp ZP_BYTE:114 [ irq_cnt#0 ] : zp ZP_BYTE:114 , -Potential registers zp ZP_BYTE:115 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:115 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:116 [ main::key_event#0 ] : zp ZP_BYTE:116 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:117 [ play_move_down::key_event#0 ] : zp ZP_BYTE:117 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:118 [ play_move_down::return#3 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:119 [ main::$12 ] : zp ZP_BYTE:119 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:120 [ main::render#1 ] : zp ZP_BYTE:120 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:121 [ play_move_leftright::key_event#0 ] : zp ZP_BYTE:121 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:122 [ play_move_leftright::return#4 ] : zp ZP_BYTE:122 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:123 [ main::$13 ] : zp ZP_BYTE:123 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:124 [ main::render#2 ] : zp ZP_BYTE:124 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:125 [ play_move_rotate::key_event#0 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:126 [ play_move_rotate::return#4 ] : zp ZP_BYTE:126 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:127 [ main::$14 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:128 [ main::render#3 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:129 [ render_bcd::$3 ] : zp ZP_BYTE:129 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:130 [ render_bcd::$4 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:131 [ render_bcd::$5 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:132 [ render_bcd::$6 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:133 [ render_bcd::screen_pos#1 ] : zp ZP_WORD:133 , -Potential registers zp ZP_BYTE:135 [ render_moving::$5 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:136 [ render_moving::screen_line#0 ] : zp ZP_WORD:136 , -Potential registers zp ZP_BYTE:138 [ render_moving::current_cell#0 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:139 [ render_playfield::$2 ] : zp ZP_BYTE:139 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:140 [ render_playfield::$3 ] : zp ZP_BYTE:140 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:141 [ play_move_rotate::$2 ] : zp ZP_BYTE:141 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:142 [ play_collision::return#13 ] : zp ZP_BYTE:142 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:143 [ play_move_rotate::$6 ] : zp ZP_BYTE:143 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:144 [ play_move_rotate::$4 ] : zp ZP_BYTE:144 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:145 [ play_collision::piece_gfx#0 ] : zp ZP_WORD:145 , -Potential registers zp ZP_WORD:147 [ play_collision::playfield_line#0 ] : zp ZP_WORD:147 , -Potential registers zp ZP_BYTE:149 [ play_collision::i#1 ] : zp ZP_BYTE:149 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:150 [ play_collision::$7 ] : zp ZP_BYTE:150 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:151 [ play_collision::return#12 ] : zp ZP_BYTE:151 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:152 [ play_move_leftright::$4 ] : zp ZP_BYTE:152 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:153 [ play_collision::return#1 ] : zp ZP_BYTE:153 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:154 [ play_move_leftright::$8 ] : zp ZP_BYTE:154 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:155 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:155 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:156 [ play_move_down::$2 ] : zp ZP_BYTE:156 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:157 [ play_collision::return#0 ] : zp ZP_BYTE:157 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:158 [ play_move_down::$12 ] : zp ZP_BYTE:158 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:159 [ play_remove_lines::return#0 ] : zp ZP_BYTE:159 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:160 [ play_move_down::removed#0 ] : zp ZP_BYTE:160 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:161 [ play_update_score::removed#0 ] : zp ZP_BYTE:161 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:162 [ play_spawn_current::$3 ] : zp ZP_BYTE:162 , reg byte x , -Potential registers zp ZP_BYTE:163 [ sid_rnd::return#2 ] : zp ZP_BYTE:163 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:164 [ play_spawn_current::$1 ] : zp ZP_BYTE:164 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:165 [ sid_rnd::return#0 ] : zp ZP_BYTE:165 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:166 [ play_update_score::$2 ] : zp ZP_BYTE:166 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:167 [ play_update_score::lines_before#0 ] : zp ZP_BYTE:167 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:168 [ play_update_score::$4 ] : zp ZP_BYTE:168 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_DWORD:169 [ play_update_score::add_bcd#0 ] : zp ZP_DWORD:169 , -Potential registers zp ZP_BYTE:173 [ play_update_score::$5 ] : zp ZP_BYTE:173 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:174 [ play_update_score::lines_after#0 ] : zp ZP_BYTE:174 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:175 [ play_increase_level::$1 ] : zp ZP_BYTE:175 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:176 [ play_increase_level::b4#0 ] : zp ZP_BYTE:176 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:177 [ play_remove_lines::c#0 ] : zp ZP_BYTE:177 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:178 [ play_lock_current::playfield_line#0 ] : zp ZP_WORD:178 , -Potential registers zp ZP_BYTE:180 [ play_lock_current::i#1 ] : zp ZP_BYTE:180 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:181 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:181 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:182 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:182 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:183 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:183 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:184 [ keyboard_event_pressed::return#11 ] : zp ZP_BYTE:184 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:185 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:185 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:186 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:186 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:187 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:187 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:188 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:188 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:189 [ keyboard_event_scan::$14 ] : zp ZP_BYTE:189 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:190 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:190 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:191 [ keyboard_event_scan::$18 ] : zp ZP_BYTE:191 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:192 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:192 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:193 [ keyboard_event_scan::$22 ] : zp ZP_BYTE:193 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:194 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:194 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:195 [ keyboard_event_scan::$26 ] : zp ZP_BYTE:195 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:196 [ keyboard_modifiers#5 ] : zp ZP_BYTE:196 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:197 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:197 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:198 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:198 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:199 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:199 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:200 [ keyboard_event_scan::$11 ] : zp ZP_BYTE:200 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:201 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:201 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:202 [ render_screen_showing#1 ] : zp ZP_BYTE:202 , -Potential registers zp ZP_BYTE:203 [ play_init::$1 ] : zp ZP_BYTE:203 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:204 [ play_init::b4#0 ] : zp ZP_BYTE:204 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:205 [ sprites_init::s2#0 ] : zp ZP_BYTE:205 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:206 [ render_init::$13 ] : zp ZP_BYTE:206 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:207 [ render_init::$14 ] : zp ZP_BYTE:207 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:208 [ sprites_irq::ypos#0 ] : zp ZP_BYTE:208 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:209 [ sprites_irq::ptr#0 ] : zp ZP_BYTE:209 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:210 [ sprites_irq::ptr#3 ] : zp ZP_BYTE:210 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:211 [ sprites_irq::ptr#4 ] : zp ZP_BYTE:211 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:212 [ irq_cnt#1 ] : zp ZP_BYTE:212 , -Potential registers zp ZP_BYTE:213 [ irq_sprite_ypos#2 ] : zp ZP_BYTE:213 , -Potential registers zp ZP_BYTE:214 [ irq_sprite_ptr#2 ] : zp ZP_BYTE:214 , -Potential registers zp ZP_BYTE:215 [ sprites_irq::$4 ] : zp ZP_BYTE:215 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:216 [ irq_cnt#14 ] : zp ZP_BYTE:216 , -Potential registers zp ZP_BYTE:217 [ irq_sprite_ypos#1 ] : zp ZP_BYTE:217 , -Potential registers zp ZP_BYTE:218 [ irq_sprite_ptr#1 ] : zp ZP_BYTE:218 , -Potential registers zp ZP_BYTE:219 [ sprites_irq::ptr#1 ] : zp ZP_BYTE:219 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:220 [ sprites_irq::ptr#2 ] : zp ZP_BYTE:220 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:32 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] : zp ZP_BYTE:32 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:33 [ play_move_rotate::return#2 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:34 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] : zp ZP_BYTE:34 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:35 [ current_piece#16 current_piece#89 current_piece#90 current_piece#91 current_piece#92 current_piece#93 ] : zp ZP_WORD:35 , +Potential registers zp ZP_BYTE:37 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] : zp ZP_BYTE:37 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:38 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] : zp ZP_BYTE:38 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:39 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] : zp ZP_BYTE:39 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:40 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] : zp ZP_BYTE:40 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:41 [ play_collision::l#6 play_collision::l#1 ] : zp ZP_BYTE:41 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:42 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] : zp ZP_BYTE:42 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:43 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] : zp ZP_BYTE:43 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:44 [ play_collision::c#2 play_collision::c#1 ] : zp ZP_BYTE:44 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:45 [ play_collision::return#15 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:46 [ play_move_leftright::return#2 ] : zp ZP_BYTE:46 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:47 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:48 [ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 ] : zp ZP_BYTE:48 , reg byte x , +Potential registers zp ZP_WORD:49 [ lines_bcd#27 lines_bcd#17 lines_bcd#19 lines_bcd#15 lines_bcd#30 ] : zp ZP_WORD:49 , +Potential registers zp ZP_DWORD:51 [ score_bcd#27 score_bcd#16 score_bcd#18 score_bcd#14 score_bcd#30 ] : zp ZP_DWORD:51 , +Potential registers zp ZP_BYTE:55 [ level#31 level#18 level#10 level#16 level#20 ] : zp ZP_BYTE:55 , reg byte x , +Potential registers zp ZP_BYTE:56 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#68 current_movedown_slow#10 ] : zp ZP_BYTE:56 , reg byte x , +Potential registers zp ZP_BYTE:57 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#63 level_bcd#21 level_bcd#8 ] : zp ZP_BYTE:57 , reg byte x , +Potential registers zp ZP_WORD:58 [ current_piece#27 current_piece#94 current_piece#20 current_piece#14 current_piece#88 ] : zp ZP_WORD:58 , +Potential registers zp ZP_BYTE:60 [ current_piece_char#27 current_piece_char#19 current_piece_char#14 current_piece_char#16 ] : zp ZP_BYTE:60 , reg byte x , +Potential registers zp ZP_BYTE:61 [ current_orientation#36 current_orientation#12 current_orientation#16 current_orientation#19 current_orientation#24 current_orientation#7 ] : zp ZP_BYTE:61 , reg byte x , +Potential registers zp ZP_WORD:62 [ current_piece_gfx#33 current_piece_gfx#105 current_piece_gfx#16 current_piece_gfx#21 current_piece_gfx#18 current_piece_gfx#19 current_piece_gfx#6 ] : zp ZP_WORD:62 , +Potential registers zp ZP_BYTE:64 [ current_xpos#41 current_xpos#115 current_xpos#17 current_xpos#28 current_xpos#20 current_xpos#24 current_xpos#7 current_xpos#5 ] : zp ZP_BYTE:64 , reg byte x , +Potential registers zp ZP_BYTE:65 [ play_move_down::return#3 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:66 [ game_over#69 game_over#26 game_over#19 game_over#14 game_over#15 ] : zp ZP_BYTE:66 , reg byte x , +Potential registers zp ZP_BYTE:67 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] : zp ZP_BYTE:67 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:68 [ play_increase_level::b#2 play_increase_level::b#1 ] : zp ZP_BYTE:68 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:69 [ play_remove_lines::y#8 play_remove_lines::y#1 ] : zp ZP_BYTE:69 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:70 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] : zp ZP_BYTE:70 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:71 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] : zp ZP_BYTE:71 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:72 [ play_remove_lines::x#2 play_remove_lines::x#1 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:73 [ play_remove_lines::full#4 play_remove_lines::full#2 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:74 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] : zp ZP_BYTE:74 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:75 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] : zp ZP_BYTE:75 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:76 [ play_lock_current::l#6 play_lock_current::l#1 ] : zp ZP_BYTE:76 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:77 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] : zp ZP_BYTE:77 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:78 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] : zp ZP_BYTE:78 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:79 [ play_lock_current::c#2 play_lock_current::c#1 ] : zp ZP_BYTE:79 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:80 [ keyboard_event_pressed::keycode#5 ] : zp ZP_BYTE:80 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:81 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:82 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] : zp ZP_BYTE:82 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:83 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] : zp ZP_BYTE:83 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:84 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:84 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:85 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] : zp ZP_BYTE:85 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:86 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] : zp ZP_BYTE:86 , reg byte x , +Potential registers zp ZP_BYTE:87 [ render_show::d018val#3 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:88 [ play_init::j#2 play_init::j#1 ] : zp ZP_BYTE:88 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:89 [ play_init::pli#2 play_init::pli#1 ] : zp ZP_WORD:89 , +Potential registers zp ZP_BYTE:91 [ play_init::idx#2 play_init::idx#1 ] : zp ZP_BYTE:91 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:92 [ play_init::b#2 play_init::b#1 ] : zp ZP_BYTE:92 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:93 [ sprites_init::s#2 sprites_init::s#1 ] : zp ZP_BYTE:93 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:94 [ sprites_init::xpos#2 sprites_init::xpos#1 ] : zp ZP_BYTE:94 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:95 [ render_init::i#2 render_init::i#1 ] : zp ZP_BYTE:95 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:96 [ render_init::li_1#2 render_init::li_1#1 ] : zp ZP_WORD:96 , +Potential registers zp ZP_WORD:98 [ render_init::li_2#2 render_init::li_2#1 ] : zp ZP_WORD:98 , +Potential registers zp ZP_BYTE:100 [ render_screen_original::y#6 render_screen_original::y#1 ] : zp ZP_BYTE:100 , reg byte x , +Potential registers zp ZP_WORD:101 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] : zp ZP_WORD:101 , +Potential registers zp ZP_WORD:103 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] : zp ZP_WORD:103 , +Potential registers zp ZP_WORD:105 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] : zp ZP_WORD:105 , +Potential registers zp ZP_WORD:107 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] : zp ZP_WORD:107 , +Potential registers zp ZP_BYTE:109 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] : zp ZP_BYTE:109 , reg byte x , +Potential registers zp ZP_BYTE:110 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] : zp ZP_BYTE:110 , +Potential registers zp ZP_BYTE:111 [ render_screen_showing#0 ] : zp ZP_BYTE:111 , +Potential registers zp ZP_BYTE:112 [ irq_raster_next#0 ] : zp ZP_BYTE:112 , +Potential registers zp ZP_BYTE:113 [ irq_sprite_ypos#0 ] : zp ZP_BYTE:113 , +Potential registers zp ZP_BYTE:114 [ irq_sprite_ptr#0 ] : zp ZP_BYTE:114 , +Potential registers zp ZP_BYTE:115 [ irq_cnt#0 ] : zp ZP_BYTE:115 , +Potential registers zp ZP_BYTE:116 [ main::$9 ] : zp ZP_BYTE:116 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:117 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:117 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:118 [ main::key_event#0 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:119 [ play_movement::key_event#0 ] : zp ZP_BYTE:119 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:120 [ play_movement::return#3 ] : zp ZP_BYTE:120 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:121 [ main::render#1 ] : zp ZP_BYTE:121 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:122 [ render_bcd::$3 ] : zp ZP_BYTE:122 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:123 [ render_bcd::$4 ] : zp ZP_BYTE:123 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:124 [ render_bcd::$5 ] : zp ZP_BYTE:124 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:125 [ render_bcd::$6 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:126 [ render_bcd::screen_pos#1 ] : zp ZP_WORD:126 , +Potential registers zp ZP_BYTE:128 [ render_moving::$5 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:129 [ render_moving::screen_line#0 ] : zp ZP_WORD:129 , +Potential registers zp ZP_BYTE:131 [ render_moving::current_cell#0 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:132 [ render_playfield::$2 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:133 [ render_playfield::$3 ] : zp ZP_BYTE:133 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:134 [ play_move_down::key_event#0 ] : zp ZP_BYTE:134 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:135 [ play_move_down::return#0 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:136 [ play_movement::$0 ] : zp ZP_BYTE:136 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:137 [ play_move_leftright::key_event#0 ] : zp ZP_BYTE:137 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:138 [ play_move_leftright::return#0 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:139 [ play_movement::$3 ] : zp ZP_BYTE:139 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:140 [ play_movement::render#2 ] : zp ZP_BYTE:140 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:141 [ play_move_rotate::key_event#0 ] : zp ZP_BYTE:141 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:142 [ play_move_rotate::return#0 ] : zp ZP_BYTE:142 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:143 [ play_movement::$4 ] : zp ZP_BYTE:143 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:144 [ play_move_rotate::$2 ] : zp ZP_BYTE:144 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:145 [ play_collision::return#14 ] : zp ZP_BYTE:145 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:146 [ play_move_rotate::$6 ] : zp ZP_BYTE:146 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:147 [ play_move_rotate::$4 ] : zp ZP_BYTE:147 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:148 [ play_collision::piece_gfx#0 ] : zp ZP_WORD:148 , +Potential registers zp ZP_WORD:150 [ play_collision::playfield_line#0 ] : zp ZP_WORD:150 , +Potential registers zp ZP_BYTE:152 [ play_collision::i#1 ] : zp ZP_BYTE:152 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:153 [ play_collision::$7 ] : zp ZP_BYTE:153 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:154 [ play_collision::return#13 ] : zp ZP_BYTE:154 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:155 [ play_move_leftright::$4 ] : zp ZP_BYTE:155 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:156 [ play_collision::return#1 ] : zp ZP_BYTE:156 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:157 [ play_move_leftright::$8 ] : zp ZP_BYTE:157 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:158 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:158 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:159 [ play_move_down::$2 ] : zp ZP_BYTE:159 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:160 [ play_collision::return#0 ] : zp ZP_BYTE:160 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:161 [ play_move_down::$12 ] : zp ZP_BYTE:161 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:162 [ play_remove_lines::return#0 ] : zp ZP_BYTE:162 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:163 [ play_move_down::removed#0 ] : zp ZP_BYTE:163 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:164 [ play_update_score::removed#0 ] : zp ZP_BYTE:164 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:165 [ play_spawn_current::$3 ] : zp ZP_BYTE:165 , reg byte x , +Potential registers zp ZP_BYTE:166 [ play_collision::return#10 ] : zp ZP_BYTE:166 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:167 [ play_spawn_current::$5 ] : zp ZP_BYTE:167 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:168 [ sid_rnd::return#2 ] : zp ZP_BYTE:168 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:169 [ play_spawn_current::$1 ] : zp ZP_BYTE:169 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:170 [ sid_rnd::return#0 ] : zp ZP_BYTE:170 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:171 [ play_update_score::$2 ] : zp ZP_BYTE:171 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:172 [ play_update_score::lines_before#0 ] : zp ZP_BYTE:172 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:173 [ play_update_score::$4 ] : zp ZP_BYTE:173 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_DWORD:174 [ play_update_score::add_bcd#0 ] : zp ZP_DWORD:174 , +Potential registers zp ZP_BYTE:178 [ play_update_score::$5 ] : zp ZP_BYTE:178 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:179 [ play_update_score::lines_after#0 ] : zp ZP_BYTE:179 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:180 [ play_increase_level::$1 ] : zp ZP_BYTE:180 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:181 [ play_increase_level::b4#0 ] : zp ZP_BYTE:181 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:182 [ play_remove_lines::c#0 ] : zp ZP_BYTE:182 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:183 [ play_lock_current::playfield_line#0 ] : zp ZP_WORD:183 , +Potential registers zp ZP_BYTE:185 [ play_lock_current::i#1 ] : zp ZP_BYTE:185 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:186 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:186 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:187 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:187 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:188 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:188 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:189 [ keyboard_event_pressed::return#11 ] : zp ZP_BYTE:189 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:190 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:190 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:191 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:191 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:192 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:192 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:193 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:193 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:194 [ keyboard_event_scan::$14 ] : zp ZP_BYTE:194 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:195 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:195 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:196 [ keyboard_event_scan::$18 ] : zp ZP_BYTE:196 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:197 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:197 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:198 [ keyboard_event_scan::$22 ] : zp ZP_BYTE:198 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:199 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:199 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:200 [ keyboard_event_scan::$26 ] : zp ZP_BYTE:200 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:201 [ keyboard_modifiers#5 ] : zp ZP_BYTE:201 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:202 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:202 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:203 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:203 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:204 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:204 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:205 [ keyboard_event_scan::$11 ] : zp ZP_BYTE:205 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:206 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:206 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:207 [ render_screen_showing#1 ] : zp ZP_BYTE:207 , +Potential registers zp ZP_BYTE:208 [ play_init::$1 ] : zp ZP_BYTE:208 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:209 [ play_init::b4#0 ] : zp ZP_BYTE:209 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:210 [ sprites_init::s2#0 ] : zp ZP_BYTE:210 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:211 [ render_init::$13 ] : zp ZP_BYTE:211 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:212 [ render_init::$14 ] : zp ZP_BYTE:212 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:213 [ sprites_irq::ypos#0 ] : zp ZP_BYTE:213 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:214 [ sprites_irq::$0 ] : zp ZP_BYTE:214 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:215 [ sprites_irq::raster_sprite_gfx_modify#0 ] : zp ZP_BYTE:215 , +Potential registers zp ZP_BYTE:216 [ sprites_irq::ptr#0 ] : zp ZP_BYTE:216 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:217 [ sprites_irq::ptr#3 ] : zp ZP_BYTE:217 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:218 [ sprites_irq::ptr#4 ] : zp ZP_BYTE:218 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:219 [ irq_cnt#1 ] : zp ZP_BYTE:219 , +Potential registers zp ZP_BYTE:220 [ irq_sprite_ypos#3 ] : zp ZP_BYTE:220 , +Potential registers zp ZP_BYTE:221 [ irq_sprite_ptr#3 ] : zp ZP_BYTE:221 , +Potential registers zp ZP_BYTE:222 [ irq_cnt#2 ] : zp ZP_BYTE:222 , +Potential registers zp ZP_BYTE:223 [ irq_sprite_ypos#2 ] : zp ZP_BYTE:223 , +Potential registers zp ZP_BYTE:224 [ irq_sprite_ptr#2 ] : zp ZP_BYTE:224 , +Potential registers zp ZP_BYTE:225 [ irq_sprite_ypos#1 ] : zp ZP_BYTE:225 , +Potential registers zp ZP_BYTE:226 [ irq_sprite_ptr#1 ] : zp ZP_BYTE:226 , +Potential registers zp ZP_BYTE:227 [ sprites_irq::ptr#1 ] : zp ZP_BYTE:227 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:228 [ sprites_irq::ptr#2 ] : zp ZP_BYTE:228 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [keyboard_event_scan] 20,002: zp ZP_BYTE:197 [ keyboard_event_scan::$3 ] 20,002: zp ZP_BYTE:198 [ keyboard_event_scan::$4 ] 20,002: zp ZP_BYTE:199 [ keyboard_event_scan::event_type#0 ] 20,002: zp ZP_BYTE:200 [ keyboard_event_scan::$11 ] 17,858.93: zp ZP_BYTE:82 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 11,908.48: zp ZP_BYTE:83 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] 2,101.74: zp ZP_BYTE:80 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 1,278.06: zp ZP_BYTE:187 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:189 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:191 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:193 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:195 [ keyboard_event_scan::$26 ] -Uplift Scope [play_collision] 38,173.33: zp ZP_BYTE:41 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] 20,002: zp ZP_BYTE:150 [ play_collision::$7 ] 13,378.25: zp ZP_BYTE:42 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] 12,223.44: zp ZP_BYTE:43 [ play_collision::c#2 play_collision::c#1 ] 1,615.62: zp ZP_BYTE:149 [ play_collision::i#1 ] 1,371.57: zp ZP_BYTE:39 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] 1,126.12: zp ZP_BYTE:40 [ play_collision::l#6 play_collision::l#1 ] 785.86: zp ZP_WORD:147 [ play_collision::playfield_line#0 ] 476.33: zp ZP_WORD:145 [ play_collision::piece_gfx#0 ] 50.2: zp ZP_BYTE:38 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] 18: zp ZP_BYTE:36 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] 10: zp ZP_BYTE:37 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] 4: zp ZP_BYTE:142 [ play_collision::return#13 ] 4: zp ZP_BYTE:151 [ play_collision::return#12 ] 4: zp ZP_BYTE:153 [ play_collision::return#1 ] 4: zp ZP_BYTE:157 [ play_collision::return#0 ] 1.33: zp ZP_BYTE:44 [ play_collision::return#14 ] -Uplift Scope [play_remove_lines] 19,004.21: zp ZP_BYTE:69 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] 17,938.14: zp ZP_BYTE:72 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] 17,501.75: zp ZP_BYTE:70 [ play_remove_lines::x#2 play_remove_lines::x#1 ] 8,201: zp ZP_BYTE:71 [ play_remove_lines::full#4 play_remove_lines::full#2 ] 6,000.6: zp ZP_BYTE:177 [ play_remove_lines::c#0 ] 2,566.89: zp ZP_BYTE:68 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] 1,634.97: zp ZP_BYTE:67 [ play_remove_lines::y#8 play_remove_lines::y#1 ] 4: zp ZP_BYTE:159 [ play_remove_lines::return#0 ] -Uplift Scope [play_lock_current] 38,173.33: zp ZP_BYTE:75 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] 14,753.5: zp ZP_BYTE:76 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] 14,001.4: zp ZP_BYTE:77 [ play_lock_current::c#2 play_lock_current::c#1 ] 2,333.67: zp ZP_BYTE:180 [ play_lock_current::i#1 ] 1,167.83: zp ZP_BYTE:74 [ play_lock_current::l#6 play_lock_current::l#1 ] 1,100.2: zp ZP_WORD:178 [ play_lock_current::playfield_line#0 ] 777.68: zp ZP_BYTE:73 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Uplift Scope [] 58,857.97: zp ZP_BYTE:84 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] 212.18: zp ZP_WORD:60 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] 205.59: zp ZP_BYTE:63 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] 72.09: zp ZP_BYTE:20 [ current_piece_char#64 current_piece_char#90 current_piece_char#91 ] 59.09: zp ZP_WORD:18 [ current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 ] 39.95: zp ZP_BYTE:62 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] 30.62: zp ZP_BYTE:26 [ render_screen_render#21 render_screen_render#65 ] 26: zp ZP_WORD:34 [ current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 ] 20.4: zp ZP_BYTE:15 [ current_ypos#9 current_ypos#86 current_ypos#87 ] 20: zp ZP_BYTE:196 [ keyboard_modifiers#5 ] 20: zp ZP_BYTE:202 [ render_screen_showing#1 ] 20: zp ZP_BYTE:213 [ irq_sprite_ypos#2 ] 20: zp ZP_BYTE:214 [ irq_sprite_ptr#2 ] 20: zp ZP_BYTE:216 [ irq_cnt#14 ] 20: zp ZP_BYTE:217 [ irq_sprite_ypos#1 ] 20: zp ZP_BYTE:218 [ irq_sprite_ptr#1 ] 19.2: zp ZP_WORD:57 [ current_piece#20 current_piece#80 current_piece#16 current_piece#73 current_piece#10 ] 18.98: zp ZP_BYTE:56 [ level_bcd#25 level_bcd#15 level_bcd#20 level_bcd#13 level_bcd#55 level_bcd#17 level_bcd#6 ] 18.12: zp ZP_BYTE:55 [ current_movedown_slow#31 current_movedown_slow#19 current_movedown_slow#12 current_movedown_slow#1 current_movedown_slow#17 current_movedown_slow#60 current_movedown_slow#8 ] 16.91: zp ZP_BYTE:59 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] 15.96: zp ZP_BYTE:47 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] 14.83: zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] 14.64: zp ZP_DWORD:50 [ score_bcd#20 score_bcd#12 score_bcd#14 score_bcd#10 score_bcd#23 ] 14: zp ZP_BYTE:54 [ level#24 level#14 level#19 level#12 level#16 ] 13.85: zp ZP_BYTE:17 [ current_xpos#47 current_xpos#112 current_xpos#113 ] 13.23: zp ZP_WORD:48 [ lines_bcd#20 lines_bcd#13 lines_bcd#15 lines_bcd#11 lines_bcd#23 ] 11.6: zp ZP_BYTE:81 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] 10.59: zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#64 ] 8.33: zp ZP_BYTE:108 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] 4.71: zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] 4: zp ZP_BYTE:212 [ irq_cnt#1 ] 3.88: zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#11 ] 0.71: zp ZP_BYTE:112 [ irq_sprite_ypos#0 ] 0.5: zp ZP_BYTE:110 [ render_screen_showing#0 ] 0.24: zp ZP_BYTE:113 [ irq_sprite_ptr#0 ] 0.19: zp ZP_BYTE:114 [ irq_cnt#0 ] 0.17: zp ZP_BYTE:111 [ irq_raster_next#0 ] -Uplift Scope [render_moving] 2,534.25: zp ZP_BYTE:23 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 ] 1,787.5: zp ZP_BYTE:25 [ render_moving::c#2 render_moving::c#1 ] 1,553.5: zp ZP_BYTE:24 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] 1,001: zp ZP_BYTE:138 [ render_moving::current_cell#0 ] 202: zp ZP_BYTE:135 [ render_moving::$5 ] 162.72: zp ZP_BYTE:22 [ render_moving::l#4 render_moving::l#1 ] 101.16: zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] 100.18: zp ZP_WORD:136 [ render_moving::screen_line#0 ] -Uplift Scope [play_increase_level] 4,004: zp ZP_BYTE:176 [ play_increase_level::b4#0 ] 2,502.5: zp ZP_BYTE:66 [ play_increase_level::b#2 play_increase_level::b#1 ] 4: zp ZP_BYTE:175 [ play_increase_level::$1 ] -Uplift Scope [render_playfield] 2,254.5: zp ZP_WORD:29 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] 2,002: zp ZP_BYTE:31 [ render_playfield::c#2 render_playfield::c#1 ] 1,505.77: zp ZP_BYTE:28 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 202: zp ZP_BYTE:139 [ render_playfield::$2 ] 202: zp ZP_BYTE:140 [ render_playfield::$3 ] 181.8: zp ZP_BYTE:27 [ render_playfield::l#2 render_playfield::l#1 ] -Uplift Scope [play_spawn_current] 2,337: zp ZP_BYTE:65 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] 2,002: zp ZP_BYTE:164 [ play_spawn_current::$1 ] 0.13: zp ZP_BYTE:162 [ play_spawn_current::$3 ] -Uplift Scope [keyboard_matrix_read] 2,002: zp ZP_BYTE:186 [ keyboard_matrix_read::return#2 ] 1,003: zp ZP_BYTE:185 [ keyboard_matrix_read::rowid#0 ] 334.33: zp ZP_BYTE:201 [ keyboard_matrix_read::return#0 ] -Uplift Scope [sid_rnd] 2,002: zp ZP_BYTE:163 [ sid_rnd::return#2 ] 334.33: zp ZP_BYTE:165 [ sid_rnd::return#0 ] -Uplift Scope [render_screen_original] 721.31: zp ZP_WORD:103 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] 699.79: zp ZP_BYTE:107 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] 501.65: zp ZP_WORD:105 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] 162.87: zp ZP_WORD:99 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] 99.08: zp ZP_WORD:101 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] 17.42: zp ZP_BYTE:98 [ render_screen_original::y#6 render_screen_original::y#1 ] -Uplift Scope [main] 202: zp ZP_BYTE:119 [ main::$12 ] 202: zp ZP_BYTE:123 [ main::$13 ] 202: zp ZP_BYTE:127 [ main::$14 ] 202: zp ZP_BYTE:128 [ main::render#3 ] 40.4: zp ZP_BYTE:120 [ main::render#1 ] 40.4: zp ZP_BYTE:124 [ main::render#2 ] 36.73: zp ZP_BYTE:116 [ main::key_event#0 ] -Uplift Scope [play_move_down] 202: zp ZP_BYTE:118 [ play_move_down::return#3 ] 51.5: zp ZP_BYTE:117 [ play_move_down::key_event#0 ] 33.67: zp ZP_BYTE:64 [ play_move_down::return#2 ] 20: zp ZP_BYTE:46 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] 4: zp ZP_BYTE:156 [ play_move_down::$2 ] 4: zp ZP_BYTE:158 [ play_move_down::$12 ] 4: zp ZP_BYTE:160 [ play_move_down::removed#0 ] -Uplift Scope [play_move_rotate] 202: zp ZP_BYTE:126 [ play_move_rotate::return#4 ] 52.5: zp ZP_BYTE:125 [ play_move_rotate::key_event#0 ] 33.67: zp ZP_BYTE:32 [ play_move_rotate::return#1 ] 8.89: zp ZP_BYTE:33 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 4: zp ZP_BYTE:141 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:143 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:144 [ play_move_rotate::$4 ] -Uplift Scope [play_move_leftright] 202: zp ZP_BYTE:122 [ play_move_leftright::return#4 ] 52.5: zp ZP_BYTE:121 [ play_move_leftright::key_event#0 ] 33.67: zp ZP_BYTE:45 [ play_move_leftright::return#1 ] 4: zp ZP_BYTE:152 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:154 [ play_move_leftright::$8 ] -Uplift Scope [keyboard_event_get] 202: zp ZP_BYTE:115 [ keyboard_event_get::return#3 ] 38.33: zp ZP_BYTE:79 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Uplift Scope [play_init] 33: zp ZP_BYTE:204 [ play_init::b4#0 ] 27.5: zp ZP_BYTE:90 [ play_init::b#2 play_init::b#1 ] 23.83: zp ZP_BYTE:86 [ play_init::j#2 play_init::j#1 ] 22: zp ZP_BYTE:203 [ play_init::$1 ] 13.93: zp ZP_BYTE:89 [ play_init::idx#2 play_init::idx#1 ] 13.75: zp ZP_WORD:87 [ play_init::pli#2 play_init::pli#1 ] -Uplift Scope [render_bcd] 30: zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] 22: zp ZP_BYTE:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] 20: zp ZP_WORD:133 [ render_bcd::screen_pos#1 ] 7.6: zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] 4: zp ZP_BYTE:129 [ render_bcd::$3 ] 4: zp ZP_BYTE:130 [ render_bcd::$4 ] 4: zp ZP_BYTE:131 [ render_bcd::$5 ] 4: zp ZP_BYTE:132 [ render_bcd::$6 ] 2: zp ZP_WORD:9 [ render_bcd::offset#6 ] 1: zp ZP_BYTE:11 [ render_bcd::only_low#6 ] -Uplift Scope [render_init] 22.79: zp ZP_BYTE:93 [ render_init::i#2 render_init::i#1 ] 22: zp ZP_BYTE:206 [ render_init::$13 ] 22: zp ZP_BYTE:207 [ render_init::$14 ] 12.83: zp ZP_WORD:96 [ render_init::li_2#2 render_init::li_2#1 ] 12.1: zp ZP_WORD:94 [ render_init::li_1#2 render_init::li_1#1 ] -Uplift Scope [sprites_init] 25.3: zp ZP_BYTE:91 [ sprites_init::s#2 sprites_init::s#1 ] 22: zp ZP_BYTE:205 [ sprites_init::s2#0 ] 15.58: zp ZP_BYTE:92 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplift Scope [sprites_irq] 12.67: zp ZP_BYTE:109 [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] 4: zp ZP_BYTE:211 [ sprites_irq::ptr#4 ] 4: zp ZP_BYTE:215 [ sprites_irq::$4 ] 4: zp ZP_BYTE:220 [ sprites_irq::ptr#2 ] 2.67: zp ZP_BYTE:210 [ sprites_irq::ptr#3 ] 2.67: zp ZP_BYTE:219 [ sprites_irq::ptr#1 ] 2.5: zp ZP_BYTE:208 [ sprites_irq::ypos#0 ] 2.5: zp ZP_BYTE:209 [ sprites_irq::ptr#0 ] -Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:155 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:181 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:183 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:188 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:190 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:192 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:194 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:182 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:184 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:78 [ keyboard_event_pressed::keycode#5 ] -Uplift Scope [play_update_score] 4: zp ZP_BYTE:166 [ play_update_score::$2 ] 4: zp ZP_BYTE:168 [ play_update_score::$4 ] 4: zp ZP_BYTE:173 [ play_update_score::$5 ] 4: zp ZP_BYTE:174 [ play_update_score::lines_after#0 ] 1.33: zp ZP_DWORD:169 [ play_update_score::add_bcd#0 ] 1.14: zp ZP_BYTE:161 [ play_update_score::removed#0 ] 0.44: zp ZP_BYTE:167 [ play_update_score::lines_before#0 ] -Uplift Scope [render_show] 2: zp ZP_BYTE:85 [ render_show::d018val#3 ] +Uplift Scope [keyboard_event_scan] 2,002: zp ZP_BYTE:202 [ keyboard_event_scan::$3 ] 2,002: zp ZP_BYTE:203 [ keyboard_event_scan::$4 ] 2,002: zp ZP_BYTE:204 [ keyboard_event_scan::event_type#0 ] 2,002: zp ZP_BYTE:205 [ keyboard_event_scan::$11 ] 1,787.5: zp ZP_BYTE:84 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 1,195.02: zp ZP_BYTE:85 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] 211.74: zp ZP_BYTE:82 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 128.06: zp ZP_BYTE:192 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:194 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:196 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:198 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:200 [ keyboard_event_scan::$26 ] +Uplift Scope [play_collision] 3,823.33: zp ZP_BYTE:42 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] 2,002: zp ZP_BYTE:153 [ play_collision::$7 ] 1,340.75: zp ZP_BYTE:43 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] 1,223.44: zp ZP_BYTE:44 [ play_collision::c#2 play_collision::c#1 ] 161.77: zp ZP_BYTE:152 [ play_collision::i#1 ] 141.57: zp ZP_BYTE:40 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] 113.62: zp ZP_BYTE:41 [ play_collision::l#6 play_collision::l#1 ] 78.71: zp ZP_WORD:150 [ play_collision::playfield_line#0 ] 47.76: zp ZP_WORD:148 [ play_collision::piece_gfx#0 ] 18: zp ZP_BYTE:37 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] 13: zp ZP_BYTE:38 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] 10.71: zp ZP_BYTE:39 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] 4: zp ZP_BYTE:145 [ play_collision::return#14 ] 4: zp ZP_BYTE:154 [ play_collision::return#13 ] 4: zp ZP_BYTE:156 [ play_collision::return#1 ] 4: zp ZP_BYTE:160 [ play_collision::return#0 ] 4: zp ZP_BYTE:166 [ play_collision::return#10 ] 1.43: zp ZP_BYTE:45 [ play_collision::return#15 ] +Uplift Scope [render_moving] 2,534.25: zp ZP_BYTE:23 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 ] 1,787.5: zp ZP_BYTE:25 [ render_moving::c#2 render_moving::c#1 ] 1,553.5: zp ZP_BYTE:24 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] 1,001: zp ZP_BYTE:131 [ render_moving::current_cell#0 ] 202: zp ZP_BYTE:128 [ render_moving::$5 ] 162.72: zp ZP_BYTE:22 [ render_moving::l#4 render_moving::l#1 ] 101.16: zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] 100.18: zp ZP_WORD:129 [ render_moving::screen_line#0 ] +Uplift Scope [play_remove_lines] 1,904.21: zp ZP_BYTE:71 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] 1,802.43: zp ZP_BYTE:74 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] 1,751.75: zp ZP_BYTE:72 [ play_remove_lines::x#2 play_remove_lines::x#1 ] 821: zp ZP_BYTE:73 [ play_remove_lines::full#4 play_remove_lines::full#2 ] 600.6: zp ZP_BYTE:182 [ play_remove_lines::c#0 ] 259.2: zp ZP_BYTE:70 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] 164.97: zp ZP_BYTE:69 [ play_remove_lines::y#8 play_remove_lines::y#1 ] 4: zp ZP_BYTE:162 [ play_remove_lines::return#0 ] +Uplift Scope [play_lock_current] 3,823.33: zp ZP_BYTE:77 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] 1,478.5: zp ZP_BYTE:78 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] 1,401.4: zp ZP_BYTE:79 [ play_lock_current::c#2 play_lock_current::c#1 ] 233.67: zp ZP_BYTE:185 [ play_lock_current::i#1 ] 117.83: zp ZP_BYTE:76 [ play_lock_current::l#6 play_lock_current::l#1 ] 110.2: zp ZP_WORD:183 [ play_lock_current::playfield_line#0 ] 82.23: zp ZP_BYTE:75 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Uplift Scope [] 5,895.1: zp ZP_BYTE:86 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] 72.09: zp ZP_BYTE:20 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 ] 59.09: zp ZP_WORD:18 [ current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 ] 32: zp ZP_WORD:35 [ current_piece#16 current_piece#89 current_piece#90 current_piece#91 current_piece#92 current_piece#93 ] 31.83: zp ZP_WORD:62 [ current_piece_gfx#33 current_piece_gfx#105 current_piece_gfx#16 current_piece_gfx#21 current_piece_gfx#18 current_piece_gfx#19 current_piece_gfx#6 ] 30.62: zp ZP_BYTE:26 [ render_screen_render#21 render_screen_render#69 ] 25.53: zp ZP_BYTE:60 [ current_piece_char#27 current_piece_char#19 current_piece_char#14 current_piece_char#16 ] 21.92: zp ZP_BYTE:2 [ render_screen_show#17 render_screen_show#29 render_screen_show#13 ] 20.71: zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#33 render_screen_render#11 ] 20.4: zp ZP_BYTE:15 [ current_ypos#11 current_ypos#99 current_ypos#100 ] 20: zp ZP_BYTE:201 [ keyboard_modifiers#5 ] 20: zp ZP_BYTE:207 [ render_screen_showing#1 ] 20: zp ZP_BYTE:220 [ irq_sprite_ypos#3 ] 20: zp ZP_BYTE:221 [ irq_sprite_ptr#3 ] 20: zp ZP_BYTE:222 [ irq_cnt#2 ] 20: zp ZP_BYTE:223 [ irq_sprite_ypos#2 ] 20: zp ZP_BYTE:224 [ irq_sprite_ptr#2 ] 20: zp ZP_BYTE:225 [ irq_sprite_ypos#1 ] 20: zp ZP_BYTE:226 [ irq_sprite_ptr#1 ] 19.15: zp ZP_BYTE:64 [ current_xpos#41 current_xpos#115 current_xpos#17 current_xpos#28 current_xpos#20 current_xpos#24 current_xpos#7 current_xpos#5 ] 15.23: zp ZP_BYTE:57 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#63 level_bcd#21 level_bcd#8 ] 14.79: zp ZP_WORD:58 [ current_piece#27 current_piece#94 current_piece#20 current_piece#14 current_piece#88 ] 13.85: zp ZP_BYTE:17 [ current_xpos#57 current_xpos#125 current_xpos#126 ] 12.63: zp ZP_BYTE:56 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#68 current_movedown_slow#10 ] 11.67: zp ZP_BYTE:110 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] 11.6: zp ZP_BYTE:83 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] 11.42: zp ZP_BYTE:48 [ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 ] 10.59: zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#68 ] 9.89: zp ZP_BYTE:61 [ current_orientation#36 current_orientation#12 current_orientation#16 current_orientation#19 current_orientation#24 current_orientation#7 ] 9.07: zp ZP_WORD:49 [ lines_bcd#27 lines_bcd#17 lines_bcd#19 lines_bcd#15 lines_bcd#30 ] 8.96: zp ZP_DWORD:51 [ score_bcd#27 score_bcd#16 score_bcd#18 score_bcd#14 score_bcd#30 ] 8.55: zp ZP_BYTE:55 [ level#31 level#18 level#10 level#16 level#20 ] 7.75: zp ZP_BYTE:66 [ game_over#69 game_over#26 game_over#19 game_over#14 game_over#15 ] 3: zp ZP_BYTE:219 [ irq_cnt#1 ] 1.81: zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] 0.4: zp ZP_BYTE:111 [ render_screen_showing#0 ] 0.31: zp ZP_BYTE:112 [ irq_raster_next#0 ] 0.28: zp ZP_BYTE:113 [ irq_sprite_ypos#0 ] 0.26: zp ZP_BYTE:114 [ irq_sprite_ptr#0 ] 0.17: zp ZP_BYTE:115 [ irq_cnt#0 ] +Uplift Scope [render_playfield] 2,254.5: zp ZP_WORD:29 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] 2,002: zp ZP_BYTE:31 [ render_playfield::c#2 render_playfield::c#1 ] 1,505.77: zp ZP_BYTE:28 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 202: zp ZP_BYTE:132 [ render_playfield::$2 ] 202: zp ZP_BYTE:133 [ render_playfield::$3 ] 181.8: zp ZP_BYTE:27 [ render_playfield::l#2 render_playfield::l#1 ] +Uplift Scope [render_screen_original] 721.31: zp ZP_WORD:105 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] 699.79: zp ZP_BYTE:109 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] 501.65: zp ZP_WORD:107 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] 162.87: zp ZP_WORD:101 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] 99.08: zp ZP_WORD:103 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] 17.42: zp ZP_BYTE:100 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplift Scope [play_increase_level] 404: zp ZP_BYTE:181 [ play_increase_level::b4#0 ] 252.5: zp ZP_BYTE:68 [ play_increase_level::b#2 play_increase_level::b#1 ] 4: zp ZP_BYTE:180 [ play_increase_level::$1 ] +Uplift Scope [play_spawn_current] 237: zp ZP_BYTE:67 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] 202: zp ZP_BYTE:169 [ play_spawn_current::$1 ] 4: zp ZP_BYTE:167 [ play_spawn_current::$5 ] 0.08: zp ZP_BYTE:165 [ play_spawn_current::$3 ] +Uplift Scope [keyboard_matrix_read] 202: zp ZP_BYTE:191 [ keyboard_matrix_read::return#2 ] 103: zp ZP_BYTE:190 [ keyboard_matrix_read::rowid#0 ] 34.33: zp ZP_BYTE:206 [ keyboard_matrix_read::return#0 ] +Uplift Scope [sid_rnd] 202: zp ZP_BYTE:168 [ sid_rnd::return#2 ] 34.33: zp ZP_BYTE:170 [ sid_rnd::return#0 ] +Uplift Scope [play_init] 33: zp ZP_BYTE:209 [ play_init::b4#0 ] 27.5: zp ZP_BYTE:92 [ play_init::b#2 play_init::b#1 ] 23.83: zp ZP_BYTE:88 [ play_init::j#2 play_init::j#1 ] 22: zp ZP_BYTE:208 [ play_init::$1 ] 13.93: zp ZP_BYTE:91 [ play_init::idx#2 play_init::idx#1 ] 13.75: zp ZP_WORD:89 [ play_init::pli#2 play_init::pli#1 ] +Uplift Scope [render_bcd] 30: zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] 22: zp ZP_BYTE:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] 20: zp ZP_WORD:126 [ render_bcd::screen_pos#1 ] 7.6: zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] 4: zp ZP_BYTE:122 [ render_bcd::$3 ] 4: zp ZP_BYTE:123 [ render_bcd::$4 ] 4: zp ZP_BYTE:124 [ render_bcd::$5 ] 4: zp ZP_BYTE:125 [ render_bcd::$6 ] 2: zp ZP_WORD:9 [ render_bcd::offset#6 ] 1: zp ZP_BYTE:11 [ render_bcd::only_low#6 ] +Uplift Scope [render_init] 22.79: zp ZP_BYTE:95 [ render_init::i#2 render_init::i#1 ] 22: zp ZP_BYTE:211 [ render_init::$13 ] 22: zp ZP_BYTE:212 [ render_init::$14 ] 12.83: zp ZP_WORD:98 [ render_init::li_2#2 render_init::li_2#1 ] 12.1: zp ZP_WORD:96 [ render_init::li_1#2 render_init::li_1#1 ] +Uplift Scope [sprites_init] 25.3: zp ZP_BYTE:93 [ sprites_init::s#2 sprites_init::s#1 ] 22: zp ZP_BYTE:210 [ sprites_init::s2#0 ] 15.58: zp ZP_BYTE:94 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplift Scope [main] 22: zp ZP_BYTE:116 [ main::$9 ] 22: zp ZP_BYTE:121 [ main::render#1 ] 11: zp ZP_BYTE:118 [ main::key_event#0 ] +Uplift Scope [play_movement] 22: zp ZP_BYTE:120 [ play_movement::return#3 ] 10: zp ZP_BYTE:32 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] 4: zp ZP_BYTE:136 [ play_movement::$0 ] 4: zp ZP_BYTE:139 [ play_movement::$3 ] 4: zp ZP_BYTE:143 [ play_movement::$4 ] 1.42: zp ZP_BYTE:119 [ play_movement::key_event#0 ] 0.8: zp ZP_BYTE:140 [ play_movement::render#2 ] +Uplift Scope [play_move_down] 20: zp ZP_BYTE:47 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] 4: zp ZP_BYTE:135 [ play_move_down::return#0 ] 4: zp ZP_BYTE:159 [ play_move_down::$2 ] 4: zp ZP_BYTE:161 [ play_move_down::$12 ] 4: zp ZP_BYTE:163 [ play_move_down::removed#0 ] 2: zp ZP_BYTE:134 [ play_move_down::key_event#0 ] 0.67: zp ZP_BYTE:65 [ play_move_down::return#3 ] +Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:158 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:186 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:188 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:193 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:195 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:197 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:199 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:187 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:189 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:80 [ keyboard_event_pressed::keycode#5 ] +Uplift Scope [keyboard_event_get] 22: zp ZP_BYTE:117 [ keyboard_event_get::return#3 ] 8.33: zp ZP_BYTE:81 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplift Scope [sprites_irq] 6.5: zp ZP_BYTE:215 [ sprites_irq::raster_sprite_gfx_modify#0 ] 4: zp ZP_BYTE:214 [ sprites_irq::$0 ] 4: zp ZP_BYTE:218 [ sprites_irq::ptr#4 ] 4: zp ZP_BYTE:228 [ sprites_irq::ptr#2 ] 2.67: zp ZP_BYTE:217 [ sprites_irq::ptr#3 ] 2.67: zp ZP_BYTE:227 [ sprites_irq::ptr#1 ] 2.5: zp ZP_BYTE:213 [ sprites_irq::ypos#0 ] 2.5: zp ZP_BYTE:216 [ sprites_irq::ptr#0 ] +Uplift Scope [play_move_rotate] 8.89: zp ZP_BYTE:34 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 4: zp ZP_BYTE:142 [ play_move_rotate::return#0 ] 4: zp ZP_BYTE:144 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:146 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:147 [ play_move_rotate::$4 ] 3: zp ZP_BYTE:141 [ play_move_rotate::key_event#0 ] 0.67: zp ZP_BYTE:33 [ play_move_rotate::return#2 ] +Uplift Scope [play_update_score] 4: zp ZP_BYTE:171 [ play_update_score::$2 ] 4: zp ZP_BYTE:173 [ play_update_score::$4 ] 4: zp ZP_BYTE:178 [ play_update_score::$5 ] 4: zp ZP_BYTE:179 [ play_update_score::lines_after#0 ] 1.33: zp ZP_DWORD:174 [ play_update_score::add_bcd#0 ] 1.14: zp ZP_BYTE:164 [ play_update_score::removed#0 ] 0.44: zp ZP_BYTE:172 [ play_update_score::lines_before#0 ] +Uplift Scope [play_move_leftright] 4: zp ZP_BYTE:138 [ play_move_leftright::return#0 ] 4: zp ZP_BYTE:155 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:157 [ play_move_leftright::$8 ] 3: zp ZP_BYTE:137 [ play_move_leftright::key_event#0 ] 0.67: zp ZP_BYTE:46 [ play_move_leftright::return#2 ] +Uplift Scope [render_show] 2: zp ZP_BYTE:87 [ render_show::d018val#3 ] Uplift Scope [render_score] 0.75: zp ZP_WORD:5 [ render_score::screen#2 ] Uplift Scope [sid_rnd_init] Uplift Scope [render_screen_swap] Uplift Scope [sprites_irq_init] -Uplifting [keyboard_event_scan] best 4628128 combination reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$11 ] zp ZP_BYTE:82 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:83 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] zp ZP_BYTE:80 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:187 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:189 [ keyboard_event_scan::$14 ] zp ZP_BYTE:191 [ keyboard_event_scan::$18 ] zp ZP_BYTE:193 [ keyboard_event_scan::$22 ] zp ZP_BYTE:195 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 637264 combination reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$11 ] zp ZP_BYTE:84 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:85 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] zp ZP_BYTE:82 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:192 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:194 [ keyboard_event_scan::$14 ] zp ZP_BYTE:196 [ keyboard_event_scan::$18 ] zp ZP_BYTE:198 [ keyboard_event_scan::$22 ] zp ZP_BYTE:200 [ keyboard_event_scan::$26 ] Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [play_collision] best 4478128 combination zp ZP_BYTE:41 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] reg byte a [ play_collision::$7 ] zp ZP_BYTE:42 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] zp ZP_BYTE:149 [ play_collision::i#1 ] zp ZP_BYTE:39 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] zp ZP_BYTE:40 [ play_collision::l#6 play_collision::l#1 ] zp ZP_WORD:147 [ play_collision::playfield_line#0 ] zp ZP_WORD:145 [ play_collision::piece_gfx#0 ] zp ZP_BYTE:38 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] zp ZP_BYTE:36 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp ZP_BYTE:37 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] zp ZP_BYTE:142 [ play_collision::return#13 ] zp ZP_BYTE:151 [ play_collision::return#12 ] zp ZP_BYTE:153 [ play_collision::return#1 ] zp ZP_BYTE:157 [ play_collision::return#0 ] zp ZP_BYTE:44 [ play_collision::return#14 ] -Limited combination testing to 100 combinations of 80621568 possible. -Uplifting [play_remove_lines] best 4341128 combination reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] zp ZP_BYTE:70 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp ZP_BYTE:71 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp ZP_BYTE:177 [ play_remove_lines::c#0 ] zp ZP_BYTE:68 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] zp ZP_BYTE:67 [ play_remove_lines::y#8 play_remove_lines::y#1 ] zp ZP_BYTE:159 [ play_remove_lines::return#0 ] -Limited combination testing to 100 combinations of 20736 possible. -Uplifting [play_lock_current] best 4251128 combination zp ZP_BYTE:75 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp ZP_BYTE:76 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] zp ZP_BYTE:180 [ play_lock_current::i#1 ] zp ZP_BYTE:74 [ play_lock_current::l#6 play_lock_current::l#1 ] zp ZP_WORD:178 [ play_lock_current::playfield_line#0 ] zp ZP_BYTE:73 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Limited combination testing to 100 combinations of 729 possible. -Uplifting [] best 4249962 combination zp ZP_BYTE:84 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_WORD:60 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] zp ZP_BYTE:63 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] reg byte x [ current_piece_char#64 current_piece_char#90 current_piece_char#91 ] zp ZP_WORD:18 [ current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 ] zp ZP_BYTE:62 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] reg byte x [ render_screen_render#21 render_screen_render#65 ] zp ZP_WORD:34 [ current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 ] zp ZP_BYTE:15 [ current_ypos#9 current_ypos#86 current_ypos#87 ] zp ZP_BYTE:196 [ keyboard_modifiers#5 ] zp ZP_BYTE:202 [ render_screen_showing#1 ] zp ZP_BYTE:213 [ irq_sprite_ypos#2 ] zp ZP_BYTE:214 [ irq_sprite_ptr#2 ] zp ZP_BYTE:216 [ irq_cnt#14 ] zp ZP_BYTE:217 [ irq_sprite_ypos#1 ] zp ZP_BYTE:218 [ irq_sprite_ptr#1 ] zp ZP_WORD:57 [ current_piece#20 current_piece#80 current_piece#16 current_piece#73 current_piece#10 ] zp ZP_BYTE:56 [ level_bcd#25 level_bcd#15 level_bcd#20 level_bcd#13 level_bcd#55 level_bcd#17 level_bcd#6 ] zp ZP_BYTE:55 [ current_movedown_slow#31 current_movedown_slow#19 current_movedown_slow#12 current_movedown_slow#1 current_movedown_slow#17 current_movedown_slow#60 current_movedown_slow#8 ] zp ZP_BYTE:59 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] zp ZP_BYTE:47 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] zp ZP_DWORD:50 [ score_bcd#20 score_bcd#12 score_bcd#14 score_bcd#10 score_bcd#23 ] zp ZP_BYTE:54 [ level#24 level#14 level#19 level#12 level#16 ] zp ZP_BYTE:17 [ current_xpos#47 current_xpos#112 current_xpos#113 ] zp ZP_WORD:48 [ lines_bcd#20 lines_bcd#13 lines_bcd#15 lines_bcd#11 lines_bcd#23 ] zp ZP_BYTE:81 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#64 ] zp ZP_BYTE:108 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] zp ZP_BYTE:212 [ irq_cnt#1 ] zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#11 ] zp ZP_BYTE:112 [ irq_sprite_ypos#0 ] zp ZP_BYTE:110 [ render_screen_showing#0 ] zp ZP_BYTE:113 [ irq_sprite_ptr#0 ] zp ZP_BYTE:114 [ irq_cnt#0 ] zp ZP_BYTE:111 [ irq_raster_next#0 ] -Limited combination testing to 100 combinations of 3981312 possible. -Uplifting [render_moving] best 4243962 combination zp ZP_BYTE:23 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 ] zp ZP_BYTE:25 [ render_moving::c#2 render_moving::c#1 ] zp ZP_BYTE:24 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte a [ render_moving::current_cell#0 ] zp ZP_BYTE:135 [ render_moving::$5 ] zp ZP_BYTE:22 [ render_moving::l#4 render_moving::l#1 ] zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] zp ZP_WORD:136 [ render_moving::screen_line#0 ] +Uplifting [play_collision] best 622264 combination zp ZP_BYTE:42 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] reg byte a [ play_collision::$7 ] zp ZP_BYTE:43 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] zp ZP_BYTE:152 [ play_collision::i#1 ] zp ZP_BYTE:40 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] zp ZP_BYTE:41 [ play_collision::l#6 play_collision::l#1 ] zp ZP_WORD:150 [ play_collision::playfield_line#0 ] zp ZP_WORD:148 [ play_collision::piece_gfx#0 ] zp ZP_BYTE:37 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp ZP_BYTE:38 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] zp ZP_BYTE:39 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] zp ZP_BYTE:145 [ play_collision::return#14 ] zp ZP_BYTE:154 [ play_collision::return#13 ] zp ZP_BYTE:156 [ play_collision::return#1 ] zp ZP_BYTE:160 [ play_collision::return#0 ] zp ZP_BYTE:166 [ play_collision::return#10 ] zp ZP_BYTE:45 [ play_collision::return#15 ] +Limited combination testing to 100 combinations of 322486272 possible. +Uplifting [render_moving] best 607264 combination zp ZP_BYTE:23 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 ] reg byte x [ render_moving::c#2 render_moving::c#1 ] zp ZP_BYTE:24 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte a [ render_moving::current_cell#0 ] zp ZP_BYTE:128 [ render_moving::$5 ] zp ZP_BYTE:22 [ render_moving::l#4 render_moving::l#1 ] zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] zp ZP_WORD:129 [ render_moving::screen_line#0 ] Limited combination testing to 100 combinations of 3888 possible. -Uplifting [play_increase_level] best 4229956 combination reg byte a [ play_increase_level::b4#0 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] reg byte a [ play_increase_level::$1 ] -Uplifting [render_playfield] best 4229356 combination zp ZP_WORD:29 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] zp ZP_BYTE:31 [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:28 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$3 ] zp ZP_BYTE:27 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [play_remove_lines] best 593564 combination reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] zp ZP_BYTE:72 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp ZP_BYTE:73 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp ZP_BYTE:182 [ play_remove_lines::c#0 ] zp ZP_BYTE:70 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] zp ZP_BYTE:69 [ play_remove_lines::y#8 play_remove_lines::y#1 ] zp ZP_BYTE:162 [ play_remove_lines::return#0 ] +Limited combination testing to 100 combinations of 20736 possible. +Uplifting [play_lock_current] best 584564 combination zp ZP_BYTE:77 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp ZP_BYTE:78 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] zp ZP_BYTE:185 [ play_lock_current::i#1 ] zp ZP_BYTE:76 [ play_lock_current::l#6 play_lock_current::l#1 ] zp ZP_WORD:183 [ play_lock_current::playfield_line#0 ] zp ZP_BYTE:75 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Limited combination testing to 100 combinations of 729 possible. +Uplifting [] best 584431 combination zp ZP_BYTE:86 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_BYTE:20 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 ] zp ZP_WORD:18 [ current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 ] zp ZP_WORD:35 [ current_piece#16 current_piece#89 current_piece#90 current_piece#91 current_piece#92 current_piece#93 ] zp ZP_WORD:62 [ current_piece_gfx#33 current_piece_gfx#105 current_piece_gfx#16 current_piece_gfx#21 current_piece_gfx#18 current_piece_gfx#19 current_piece_gfx#6 ] reg byte x [ render_screen_render#21 render_screen_render#69 ] zp ZP_BYTE:60 [ current_piece_char#27 current_piece_char#19 current_piece_char#14 current_piece_char#16 ] zp ZP_BYTE:2 [ render_screen_show#17 render_screen_show#29 render_screen_show#13 ] zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#33 render_screen_render#11 ] zp ZP_BYTE:15 [ current_ypos#11 current_ypos#99 current_ypos#100 ] zp ZP_BYTE:201 [ keyboard_modifiers#5 ] zp ZP_BYTE:207 [ render_screen_showing#1 ] zp ZP_BYTE:220 [ irq_sprite_ypos#3 ] zp ZP_BYTE:221 [ irq_sprite_ptr#3 ] zp ZP_BYTE:222 [ irq_cnt#2 ] zp ZP_BYTE:223 [ irq_sprite_ypos#2 ] zp ZP_BYTE:224 [ irq_sprite_ptr#2 ] zp ZP_BYTE:225 [ irq_sprite_ypos#1 ] zp ZP_BYTE:226 [ irq_sprite_ptr#1 ] zp ZP_BYTE:64 [ current_xpos#41 current_xpos#115 current_xpos#17 current_xpos#28 current_xpos#20 current_xpos#24 current_xpos#7 current_xpos#5 ] zp ZP_BYTE:57 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#63 level_bcd#21 level_bcd#8 ] zp ZP_WORD:58 [ current_piece#27 current_piece#94 current_piece#20 current_piece#14 current_piece#88 ] zp ZP_BYTE:17 [ current_xpos#57 current_xpos#125 current_xpos#126 ] zp ZP_BYTE:56 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#68 current_movedown_slow#10 ] zp ZP_BYTE:110 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] zp ZP_BYTE:83 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] zp ZP_BYTE:48 [ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 ] zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#68 ] zp ZP_BYTE:61 [ current_orientation#36 current_orientation#12 current_orientation#16 current_orientation#19 current_orientation#24 current_orientation#7 ] zp ZP_WORD:49 [ lines_bcd#27 lines_bcd#17 lines_bcd#19 lines_bcd#15 lines_bcd#30 ] zp ZP_DWORD:51 [ score_bcd#27 score_bcd#16 score_bcd#18 score_bcd#14 score_bcd#30 ] zp ZP_BYTE:55 [ level#31 level#18 level#10 level#16 level#20 ] zp ZP_BYTE:66 [ game_over#69 game_over#26 game_over#19 game_over#14 game_over#15 ] zp ZP_BYTE:219 [ irq_cnt#1 ] zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] zp ZP_BYTE:111 [ render_screen_showing#0 ] zp ZP_BYTE:112 [ irq_raster_next#0 ] zp ZP_BYTE:113 [ irq_sprite_ypos#0 ] zp ZP_BYTE:114 [ irq_sprite_ptr#0 ] zp ZP_BYTE:115 [ irq_cnt#0 ] +Limited combination testing to 100 combinations of 7962624 possible. +Uplifting [render_playfield] best 583831 combination zp ZP_WORD:29 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] zp ZP_BYTE:31 [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:28 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$3 ] zp ZP_BYTE:27 [ render_playfield::l#2 render_playfield::l#1 ] Limited combination testing to 100 combinations of 128 possible. -Uplifting [play_spawn_current] best 4216346 combination reg byte x [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] reg byte a [ play_spawn_current::$1 ] zp ZP_BYTE:162 [ play_spawn_current::$3 ] -Uplifting [keyboard_matrix_read] best 4204340 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] -Uplifting [sid_rnd] best 4195337 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] -Uplifting [render_screen_original] best 4193237 combination zp ZP_WORD:103 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] zp ZP_WORD:105 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] zp ZP_WORD:99 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] zp ZP_WORD:101 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] zp ZP_BYTE:98 [ render_screen_original::y#6 render_screen_original::y#1 ] -Uplifting [main] best 4190837 combination reg byte a [ main::$12 ] reg byte a [ main::$13 ] reg byte a [ main::$14 ] reg byte a [ main::render#3 ] zp ZP_BYTE:120 [ main::render#1 ] zp ZP_BYTE:124 [ main::render#2 ] zp ZP_BYTE:116 [ main::key_event#0 ] -Limited combination testing to 100 combinations of 6912 possible. -Uplifting [play_move_down] best 4189828 combination reg byte a [ play_move_down::return#3 ] reg byte a [ play_move_down::key_event#0 ] reg byte x [ play_move_down::return#2 ] zp ZP_BYTE:46 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] zp ZP_BYTE:156 [ play_move_down::$2 ] zp ZP_BYTE:158 [ play_move_down::$12 ] zp ZP_BYTE:160 [ play_move_down::removed#0 ] -Limited combination testing to 100 combinations of 12288 possible. -Uplifting [play_move_rotate] best 4188616 combination reg byte a [ play_move_rotate::return#4 ] reg byte a [ play_move_rotate::key_event#0 ] reg byte a [ play_move_rotate::return#1 ] zp ZP_BYTE:33 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] zp ZP_BYTE:141 [ play_move_rotate::$2 ] zp ZP_BYTE:143 [ play_move_rotate::$6 ] zp ZP_BYTE:144 [ play_move_rotate::$4 ] -Limited combination testing to 100 combinations of 12288 possible. -Uplifting [play_move_leftright] best 4187398 combination reg byte a [ play_move_leftright::return#4 ] reg byte a [ play_move_leftright::key_event#0 ] reg byte a [ play_move_leftright::return#1 ] reg byte a [ play_move_leftright::$4 ] zp ZP_BYTE:154 [ play_move_leftright::$8 ] -Limited combination testing to 100 combinations of 1024 possible. -Uplifting [keyboard_event_get] best 4186492 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Uplifting [play_init] best 4186182 combination reg byte a [ play_init::b4#0 ] reg byte x [ play_init::b#2 play_init::b#1 ] reg byte x [ play_init::j#2 play_init::j#1 ] reg byte a [ play_init::$1 ] zp ZP_BYTE:89 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:87 [ play_init::pli#2 play_init::pli#1 ] +Uplifting [render_screen_original] best 581731 combination zp ZP_WORD:105 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] zp ZP_WORD:107 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] zp ZP_WORD:101 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] zp ZP_WORD:103 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] zp ZP_BYTE:100 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplifting [play_increase_level] best 580325 combination reg byte a [ play_increase_level::b4#0 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] reg byte a [ play_increase_level::$1 ] +Uplifting [play_spawn_current] best 579009 combination reg byte x [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] reg byte a [ play_spawn_current::$1 ] reg byte a [ play_spawn_current::$5 ] zp ZP_BYTE:165 [ play_spawn_current::$3 ] +Uplifting [keyboard_matrix_read] best 577803 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] +Uplifting [sid_rnd] best 576900 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] +Uplifting [play_init] best 576590 combination reg byte a [ play_init::b4#0 ] reg byte x [ play_init::b#2 play_init::b#1 ] reg byte x [ play_init::j#2 play_init::j#1 ] reg byte a [ play_init::$1 ] zp ZP_BYTE:91 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:89 [ play_init::pli#2 play_init::pli#1 ] Limited combination testing to 100 combinations of 432 possible. -Uplifting [render_bcd] best 4186148 combination zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] zp ZP_WORD:133 [ render_bcd::screen_pos#1 ] zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] reg byte a [ render_bcd::$3 ] reg byte a [ render_bcd::$4 ] reg byte a [ render_bcd::$5 ] zp ZP_BYTE:132 [ render_bcd::$6 ] zp ZP_WORD:9 [ render_bcd::offset#6 ] zp ZP_BYTE:11 [ render_bcd::only_low#6 ] +Uplifting [render_bcd] best 576556 combination zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] zp ZP_WORD:126 [ render_bcd::screen_pos#1 ] zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] reg byte a [ render_bcd::$3 ] reg byte a [ render_bcd::$4 ] reg byte a [ render_bcd::$5 ] zp ZP_BYTE:125 [ render_bcd::$6 ] zp ZP_WORD:9 [ render_bcd::offset#6 ] zp ZP_BYTE:11 [ render_bcd::only_low#6 ] Limited combination testing to 100 combinations of 1536 possible. -Uplifting [render_init] best 4185958 combination reg byte x [ render_init::i#2 render_init::i#1 ] reg byte a [ render_init::$13 ] reg byte a [ render_init::$14 ] zp ZP_WORD:96 [ render_init::li_2#2 render_init::li_2#1 ] zp ZP_WORD:94 [ render_init::li_1#2 render_init::li_1#1 ] -Uplifting [sprites_init] best 4185788 combination reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte a [ sprites_init::s2#0 ] zp ZP_BYTE:92 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [sprites_irq] best 4185762 combination reg byte x [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] reg byte x [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::$4 ] reg byte a [ sprites_irq::ptr#2 ] zp ZP_BYTE:210 [ sprites_irq::ptr#3 ] zp ZP_BYTE:219 [ sprites_irq::ptr#1 ] zp ZP_BYTE:208 [ sprites_irq::ypos#0 ] zp ZP_BYTE:209 [ sprites_irq::ptr#0 ] -Limited combination testing to 100 combinations of 36864 possible. -Uplifting [keyboard_event_pressed] best 4185742 combination reg byte a [ keyboard_event_pressed::return#12 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#0 ] zp ZP_BYTE:190 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:192 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:194 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:182 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:184 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:78 [ keyboard_event_pressed::keycode#5 ] +Uplifting [render_init] best 576366 combination reg byte x [ render_init::i#2 render_init::i#1 ] reg byte a [ render_init::$13 ] reg byte a [ render_init::$14 ] zp ZP_WORD:98 [ render_init::li_2#2 render_init::li_2#1 ] zp ZP_WORD:96 [ render_init::li_1#2 render_init::li_1#1 ] +Uplifting [sprites_init] best 576196 combination reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte a [ sprites_init::s2#0 ] zp ZP_BYTE:94 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [main] best 576016 combination reg byte a [ main::$9 ] reg byte a [ main::render#1 ] reg byte x [ main::key_event#0 ] +Uplifting [play_movement] best 575944 combination reg byte a [ play_movement::return#3 ] zp ZP_BYTE:32 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] reg byte a [ play_movement::$0 ] reg byte a [ play_movement::$3 ] zp ZP_BYTE:143 [ play_movement::$4 ] zp ZP_BYTE:119 [ play_movement::key_event#0 ] zp ZP_BYTE:140 [ play_movement::render#2 ] +Limited combination testing to 100 combinations of 6912 possible. +Uplifting [play_move_down] best 575911 combination reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] reg byte a [ play_move_down::return#0 ] reg byte a [ play_move_down::$2 ] reg byte a [ play_move_down::$12 ] zp ZP_BYTE:163 [ play_move_down::removed#0 ] zp ZP_BYTE:134 [ play_move_down::key_event#0 ] zp ZP_BYTE:65 [ play_move_down::return#3 ] +Limited combination testing to 100 combinations of 12288 possible. +Uplifting [keyboard_event_pressed] best 575891 combination reg byte a [ keyboard_event_pressed::return#12 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#0 ] zp ZP_BYTE:195 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:197 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:199 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:187 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:189 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:80 [ keyboard_event_pressed::keycode#5 ] Limited combination testing to 100 combinations of 589824 possible. -Uplifting [play_update_score] best 4185720 combination reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::$5 ] reg byte a [ play_update_score::lines_after#0 ] zp ZP_DWORD:169 [ play_update_score::add_bcd#0 ] zp ZP_BYTE:161 [ play_update_score::removed#0 ] zp ZP_BYTE:167 [ play_update_score::lines_before#0 ] +Uplifting [keyboard_event_get] best 575797 combination reg byte x [ keyboard_event_get::return#3 ] reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplifting [sprites_irq] best 575773 combination zp ZP_BYTE:215 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:227 [ sprites_irq::ptr#1 ] zp ZP_BYTE:213 [ sprites_irq::ypos#0 ] zp ZP_BYTE:216 [ sprites_irq::ptr#0 ] +Limited combination testing to 100 combinations of 12288 possible. +Uplifting [play_move_rotate] best 575755 combination zp ZP_BYTE:34 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::return#0 ] reg byte a [ play_move_rotate::$2 ] reg byte a [ play_move_rotate::$6 ] zp ZP_BYTE:147 [ play_move_rotate::$4 ] zp ZP_BYTE:141 [ play_move_rotate::key_event#0 ] zp ZP_BYTE:33 [ play_move_rotate::return#2 ] +Limited combination testing to 100 combinations of 12288 possible. +Uplifting [play_update_score] best 575733 combination reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::$5 ] reg byte a [ play_update_score::lines_after#0 ] zp ZP_DWORD:174 [ play_update_score::add_bcd#0 ] zp ZP_BYTE:164 [ play_update_score::removed#0 ] zp ZP_BYTE:172 [ play_update_score::lines_before#0 ] Limited combination testing to 100 combinations of 2304 possible. -Uplifting [render_show] best 4185711 combination reg byte a [ render_show::d018val#3 ] -Uplifting [render_score] best 4185711 combination zp ZP_WORD:5 [ render_score::screen#2 ] -Uplifting [sid_rnd_init] best 4185711 combination -Uplifting [render_screen_swap] best 4185711 combination -Uplifting [sprites_irq_init] best 4185711 combination -Attempting to uplift remaining variables inzp ZP_BYTE:84 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] -Uplifting [] best 4185711 combination zp ZP_BYTE:84 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:41 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -Uplifting [play_collision] best 4185711 combination zp ZP_BYTE:41 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:75 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -Uplifting [play_lock_current] best 4185711 combination zp ZP_BYTE:75 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -Attempting to uplift remaining variables inzp ZP_BYTE:82 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Uplifting [keyboard_event_scan] best 4035711 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:70 [ play_remove_lines::x#2 play_remove_lines::x#1 ] -Uplifting [play_remove_lines] best 4035711 combination zp ZP_BYTE:70 [ play_remove_lines::x#2 play_remove_lines::x#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:76 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] -Uplifting [play_lock_current] best 4035711 combination zp ZP_BYTE:76 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:42 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -Uplifting [play_collision] best 4035711 combination zp ZP_BYTE:42 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:83 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] -Uplifting [keyboard_event_scan] best 4035711 combination zp ZP_BYTE:83 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] -Attempting to uplift remaining variables inzp ZP_BYTE:71 [ play_remove_lines::full#4 play_remove_lines::full#2 ] -Uplifting [play_remove_lines] best 4035711 combination zp ZP_BYTE:71 [ play_remove_lines::full#4 play_remove_lines::full#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:177 [ play_remove_lines::c#0 ] -Uplifting [play_remove_lines] best 4035711 combination zp ZP_BYTE:177 [ play_remove_lines::c#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:68 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] -Uplifting [play_remove_lines] best 4035711 combination zp ZP_BYTE:68 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] +Uplifting [play_move_leftright] best 575706 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] reg byte a [ play_move_leftright::key_event#0 ] zp ZP_BYTE:46 [ play_move_leftright::return#2 ] +Limited combination testing to 100 combinations of 1024 possible. +Uplifting [render_show] best 575697 combination reg byte a [ render_show::d018val#3 ] +Uplifting [render_score] best 575697 combination zp ZP_WORD:5 [ render_score::screen#2 ] +Uplifting [sid_rnd_init] best 575697 combination +Uplifting [render_screen_swap] best 575697 combination +Uplifting [sprites_irq_init] best 575697 combination +Attempting to uplift remaining variables inzp ZP_BYTE:86 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Uplifting [] best 575697 combination zp ZP_BYTE:86 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:42 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Uplifting [play_collision] best 575697 combination zp ZP_BYTE:42 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:77 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +Uplifting [play_lock_current] best 575697 combination zp ZP_BYTE:77 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 ] -Uplifting [render_moving] best 4035711 combination zp ZP_BYTE:23 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:180 [ play_lock_current::i#1 ] -Uplifting [play_lock_current] best 4035711 combination zp ZP_BYTE:180 [ play_lock_current::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:80 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Uplifting [keyboard_event_scan] best 4035711 combination zp ZP_BYTE:80 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Uplifting [render_moving] best 575697 combination zp ZP_BYTE:23 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ render_playfield::c#2 render_playfield::c#1 ] -Uplifting [render_playfield] best 4035711 combination zp ZP_BYTE:31 [ render_playfield::c#2 render_playfield::c#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:25 [ render_moving::c#2 render_moving::c#1 ] -Uplifting [render_moving] best 4035711 combination zp ZP_BYTE:25 [ render_moving::c#2 render_moving::c#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:67 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Uplifting [play_remove_lines] best 4035711 combination zp ZP_BYTE:67 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:149 [ play_collision::i#1 ] -Uplifting [play_collision] best 4035711 combination zp ZP_BYTE:149 [ play_collision::i#1 ] +Uplifting [render_playfield] best 575697 combination zp ZP_BYTE:31 [ render_playfield::c#2 render_playfield::c#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:84 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [keyboard_event_scan] best 560697 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:72 [ play_remove_lines::x#2 play_remove_lines::x#1 ] +Uplifting [play_remove_lines] best 560697 combination zp ZP_BYTE:72 [ play_remove_lines::x#2 play_remove_lines::x#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] -Uplifting [render_moving] best 4035711 combination zp ZP_BYTE:24 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] +Uplifting [render_moving] best 560697 combination zp ZP_BYTE:24 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Uplifting [render_playfield] best 4035711 combination zp ZP_BYTE:28 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:39 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] -Uplifting [play_collision] best 4035711 combination zp ZP_BYTE:39 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:187 [ keyboard_event_scan::row_scan#0 ] -Uplifting [keyboard_event_scan] best 4035711 combination zp ZP_BYTE:187 [ keyboard_event_scan::row_scan#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:74 [ play_lock_current::l#6 play_lock_current::l#1 ] -Uplifting [play_lock_current] best 4035711 combination zp ZP_BYTE:74 [ play_lock_current::l#6 play_lock_current::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:40 [ play_collision::l#6 play_collision::l#1 ] -Uplifting [play_collision] best 4035711 combination zp ZP_BYTE:40 [ play_collision::l#6 play_collision::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:73 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Uplifting [play_lock_current] best 4035711 combination zp ZP_BYTE:73 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:63 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] -Uplifting [] best 4035711 combination zp ZP_BYTE:63 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:135 [ render_moving::$5 ] -Uplifting [render_moving] best 4035311 combination reg byte a [ render_moving::$5 ] +Uplifting [render_playfield] best 560697 combination zp ZP_BYTE:28 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:78 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] +Uplifting [play_lock_current] best 560697 combination zp ZP_BYTE:78 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:43 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +Uplifting [play_collision] best 560697 combination zp ZP_BYTE:43 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:85 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Uplifting [keyboard_event_scan] best 560697 combination zp ZP_BYTE:85 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Attempting to uplift remaining variables inzp ZP_BYTE:73 [ play_remove_lines::full#4 play_remove_lines::full#2 ] +Uplifting [play_remove_lines] best 560697 combination zp ZP_BYTE:73 [ play_remove_lines::full#4 play_remove_lines::full#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:182 [ play_remove_lines::c#0 ] +Uplifting [play_remove_lines] best 560697 combination zp ZP_BYTE:182 [ play_remove_lines::c#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:70 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] +Uplifting [play_remove_lines] best 560697 combination zp ZP_BYTE:70 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:185 [ play_lock_current::i#1 ] +Uplifting [play_lock_current] best 560697 combination zp ZP_BYTE:185 [ play_lock_current::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:82 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Uplifting [keyboard_event_scan] best 560697 combination zp ZP_BYTE:82 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:128 [ render_moving::$5 ] +Uplifting [render_moving] best 560297 combination reg byte a [ render_moving::$5 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ render_playfield::l#2 render_playfield::l#1 ] -Uplifting [render_playfield] best 4035311 combination zp ZP_BYTE:27 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [render_playfield] best 560297 combination zp ZP_BYTE:27 [ render_playfield::l#2 render_playfield::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:69 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Uplifting [play_remove_lines] best 560297 combination zp ZP_BYTE:69 [ play_remove_lines::y#8 play_remove_lines::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:22 [ render_moving::l#4 render_moving::l#1 ] -Uplifting [render_moving] best 4035311 combination zp ZP_BYTE:22 [ render_moving::l#4 render_moving::l#1 ] +Uplifting [render_moving] best 560297 combination zp ZP_BYTE:22 [ render_moving::l#4 render_moving::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:152 [ play_collision::i#1 ] +Uplifting [play_collision] best 560297 combination zp ZP_BYTE:152 [ play_collision::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:40 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] +Uplifting [play_collision] best 560297 combination zp ZP_BYTE:40 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:192 [ keyboard_event_scan::row_scan#0 ] +Uplifting [keyboard_event_scan] best 560297 combination zp ZP_BYTE:192 [ keyboard_event_scan::row_scan#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:76 [ play_lock_current::l#6 play_lock_current::l#1 ] +Uplifting [play_lock_current] best 560297 combination zp ZP_BYTE:76 [ play_lock_current::l#6 play_lock_current::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:41 [ play_collision::l#6 play_collision::l#1 ] +Uplifting [play_collision] best 560297 combination zp ZP_BYTE:41 [ play_collision::l#6 play_collision::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] -Uplifting [render_moving] best 4035311 combination zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:38 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] -Uplifting [play_collision] best 4035311 combination zp ZP_BYTE:38 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:120 [ main::render#1 ] -Uplifting [main] best 4035311 combination zp ZP_BYTE:120 [ main::render#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:124 [ main::render#2 ] -Uplifting [main] best 4035311 combination zp ZP_BYTE:124 [ main::render#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:62 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] -Uplifting [] best 4035311 combination zp ZP_BYTE:62 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:116 [ main::key_event#0 ] -Uplifting [main] best 4035311 combination zp ZP_BYTE:116 [ main::key_event#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:15 [ current_ypos#9 current_ypos#86 current_ypos#87 ] -Uplifting [] best 4035277 combination reg byte y [ current_ypos#9 current_ypos#86 current_ypos#87 ] -Attempting to uplift remaining variables inzp ZP_BYTE:46 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -Uplifting [play_move_down] best 4035262 combination reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:196 [ keyboard_modifiers#5 ] -Uplifting [] best 4035259 combination reg byte a [ keyboard_modifiers#5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:202 [ render_screen_showing#1 ] -Uplifting [] best 4035259 combination zp ZP_BYTE:202 [ render_screen_showing#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:213 [ irq_sprite_ypos#2 ] -Uplifting [] best 4035259 combination zp ZP_BYTE:213 [ irq_sprite_ypos#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:214 [ irq_sprite_ptr#2 ] -Uplifting [] best 4035259 combination zp ZP_BYTE:214 [ irq_sprite_ptr#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:216 [ irq_cnt#14 ] -Uplifting [] best 4035259 combination zp ZP_BYTE:216 [ irq_cnt#14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:217 [ irq_sprite_ypos#1 ] -Uplifting [] best 4035259 combination zp ZP_BYTE:217 [ irq_sprite_ypos#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:218 [ irq_sprite_ptr#1 ] -Uplifting [] best 4035259 combination zp ZP_BYTE:218 [ irq_sprite_ptr#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:56 [ level_bcd#25 level_bcd#15 level_bcd#20 level_bcd#13 level_bcd#55 level_bcd#17 level_bcd#6 ] -Uplifting [] best 4035259 combination zp ZP_BYTE:56 [ level_bcd#25 level_bcd#15 level_bcd#20 level_bcd#13 level_bcd#55 level_bcd#17 level_bcd#6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:55 [ current_movedown_slow#31 current_movedown_slow#19 current_movedown_slow#12 current_movedown_slow#1 current_movedown_slow#17 current_movedown_slow#60 current_movedown_slow#8 ] -Uplifting [] best 4035259 combination zp ZP_BYTE:55 [ current_movedown_slow#31 current_movedown_slow#19 current_movedown_slow#12 current_movedown_slow#1 current_movedown_slow#17 current_movedown_slow#60 current_movedown_slow#8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:36 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Uplifting [play_collision] best 4035246 combination reg byte x [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:98 [ render_screen_original::y#6 render_screen_original::y#1 ] -Uplifting [render_screen_original] best 4035246 combination zp ZP_BYTE:98 [ render_screen_original::y#6 render_screen_original::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:59 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] -Uplifting [] best 4035246 combination zp ZP_BYTE:59 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:47 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] -Uplifting [] best 4035246 combination zp ZP_BYTE:47 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:92 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [sprites_init] best 4035246 combination zp ZP_BYTE:92 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -Uplifting [] best 4035246 combination zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:54 [ level#24 level#14 level#19 level#12 level#16 ] -Uplifting [] best 4035246 combination zp ZP_BYTE:54 [ level#24 level#14 level#19 level#12 level#16 ] -Attempting to uplift remaining variables inzp ZP_BYTE:89 [ play_init::idx#2 play_init::idx#1 ] -Uplifting [play_init] best 4035246 combination zp ZP_BYTE:89 [ play_init::idx#2 play_init::idx#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:17 [ current_xpos#47 current_xpos#112 current_xpos#113 ] -Uplifting [] best 4035246 combination zp ZP_BYTE:17 [ current_xpos#47 current_xpos#112 current_xpos#113 ] -Attempting to uplift remaining variables inzp ZP_BYTE:81 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] -Uplifting [] best 4035235 combination reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#64 ] -Uplifting [] best 4035235 combination zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#64 ] -Attempting to uplift remaining variables inzp ZP_BYTE:37 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] -Uplifting [play_collision] best 4035222 combination reg byte y [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:33 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Uplifting [play_move_rotate] best 4035222 combination zp ZP_BYTE:33 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:108 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] -Uplifting [] best 4035222 combination zp ZP_BYTE:108 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] -Uplifting [] best 4035222 combination zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:132 [ render_bcd::$6 ] -Uplifting [render_bcd] best 4035216 combination reg byte a [ render_bcd::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:141 [ play_move_rotate::$2 ] -Uplifting [play_move_rotate] best 4035210 combination reg byte a [ play_move_rotate::$2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:142 [ play_collision::return#13 ] -Uplifting [play_collision] best 4035204 combination reg byte a [ play_collision::return#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:143 [ play_move_rotate::$6 ] -Uplifting [play_move_rotate] best 4035198 combination reg byte a [ play_move_rotate::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:144 [ play_move_rotate::$4 ] -Uplifting [play_move_rotate] best 4035192 combination reg byte a [ play_move_rotate::$4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:151 [ play_collision::return#12 ] -Uplifting [play_collision] best 4035186 combination reg byte a [ play_collision::return#12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:153 [ play_collision::return#1 ] -Uplifting [play_collision] best 4035180 combination reg byte a [ play_collision::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:154 [ play_move_leftright::$8 ] -Uplifting [play_move_leftright] best 4035174 combination reg byte a [ play_move_leftright::$8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:156 [ play_move_down::$2 ] -Uplifting [play_move_down] best 4035168 combination reg byte a [ play_move_down::$2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:157 [ play_collision::return#0 ] -Uplifting [play_collision] best 4035162 combination reg byte a [ play_collision::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:158 [ play_move_down::$12 ] -Uplifting [play_move_down] best 4035156 combination reg byte a [ play_move_down::$12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:159 [ play_remove_lines::return#0 ] -Uplifting [play_remove_lines] best 4035150 combination reg byte a [ play_remove_lines::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:160 [ play_move_down::removed#0 ] -Uplifting [play_move_down] best 4035144 combination reg byte a [ play_move_down::removed#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:189 [ keyboard_event_scan::$14 ] -Uplifting [keyboard_event_scan] best 4035138 combination reg byte a [ keyboard_event_scan::$14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:190 [ keyboard_event_pressed::return#1 ] -Uplifting [keyboard_event_pressed] best 4035132 combination reg byte a [ keyboard_event_pressed::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:191 [ keyboard_event_scan::$18 ] -Uplifting [keyboard_event_scan] best 4035126 combination reg byte a [ keyboard_event_scan::$18 ] -Attempting to uplift remaining variables inzp ZP_BYTE:192 [ keyboard_event_pressed::return#2 ] -Uplifting [keyboard_event_pressed] best 4035120 combination reg byte a [ keyboard_event_pressed::return#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:193 [ keyboard_event_scan::$22 ] -Uplifting [keyboard_event_scan] best 4035114 combination reg byte a [ keyboard_event_scan::$22 ] -Attempting to uplift remaining variables inzp ZP_BYTE:194 [ keyboard_event_pressed::return#10 ] -Uplifting [keyboard_event_pressed] best 4035108 combination reg byte a [ keyboard_event_pressed::return#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:195 [ keyboard_event_scan::$26 ] -Uplifting [keyboard_event_scan] best 4035102 combination reg byte a [ keyboard_event_scan::$26 ] -Attempting to uplift remaining variables inzp ZP_BYTE:212 [ irq_cnt#1 ] -Uplifting [] best 4035102 combination zp ZP_BYTE:212 [ irq_cnt#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#11 ] -Uplifting [] best 4035102 combination zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:210 [ sprites_irq::ptr#3 ] -Uplifting [sprites_irq] best 4035090 combination reg byte x [ sprites_irq::ptr#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:219 [ sprites_irq::ptr#1 ] -Uplifting [sprites_irq] best 4035080 combination reg byte a [ sprites_irq::ptr#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:208 [ sprites_irq::ypos#0 ] -Uplifting [sprites_irq] best 4035065 combination reg byte a [ sprites_irq::ypos#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:209 [ sprites_irq::ptr#0 ] -Uplifting [sprites_irq] best 4035052 combination reg byte x [ sprites_irq::ptr#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:182 [ keyboard_event_pressed::row_bits#0 ] -Uplifting [keyboard_event_pressed] best 4035052 combination zp ZP_BYTE:182 [ keyboard_event_pressed::row_bits#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:184 [ keyboard_event_pressed::return#11 ] -Uplifting [keyboard_event_pressed] best 4035034 combination reg byte a [ keyboard_event_pressed::return#11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:44 [ play_collision::return#14 ] -Uplifting [play_collision] best 4035007 combination reg byte a [ play_collision::return#14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:78 [ keyboard_event_pressed::keycode#5 ] -Uplifting [keyboard_event_pressed] best 4035007 combination zp ZP_BYTE:78 [ keyboard_event_pressed::keycode#5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:161 [ play_update_score::removed#0 ] -Uplifting [play_update_score] best 4035001 combination reg byte x [ play_update_score::removed#0 ] +Uplifting [render_moving] best 560297 combination zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:75 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Uplifting [play_lock_current] best 560297 combination zp ZP_BYTE:75 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:20 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 ] +Uplifting [] best 560297 combination zp ZP_BYTE:20 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 ] +Attempting to uplift remaining variables inzp ZP_BYTE:60 [ current_piece_char#27 current_piece_char#19 current_piece_char#14 current_piece_char#16 ] +Uplifting [] best 560297 combination zp ZP_BYTE:60 [ current_piece_char#27 current_piece_char#19 current_piece_char#14 current_piece_char#16 ] +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ render_screen_show#17 render_screen_show#29 render_screen_show#13 ] +Uplifting [] best 560297 combination zp ZP_BYTE:2 [ render_screen_show#17 render_screen_show#29 render_screen_show#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#33 render_screen_render#11 ] +Uplifting [] best 560297 combination zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#33 render_screen_render#11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:15 [ current_ypos#11 current_ypos#99 current_ypos#100 ] +Uplifting [] best 560263 combination reg byte x [ current_ypos#11 current_ypos#99 current_ypos#100 ] +Attempting to uplift remaining variables inzp ZP_BYTE:201 [ keyboard_modifiers#5 ] +Uplifting [] best 560260 combination reg byte a [ keyboard_modifiers#5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:207 [ render_screen_showing#1 ] +Uplifting [] best 560260 combination zp ZP_BYTE:207 [ render_screen_showing#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:220 [ irq_sprite_ypos#3 ] +Uplifting [] best 560260 combination zp ZP_BYTE:220 [ irq_sprite_ypos#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:221 [ irq_sprite_ptr#3 ] +Uplifting [] best 560260 combination zp ZP_BYTE:221 [ irq_sprite_ptr#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:222 [ irq_cnt#2 ] +Uplifting [] best 560260 combination zp ZP_BYTE:222 [ irq_cnt#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:223 [ irq_sprite_ypos#2 ] +Uplifting [] best 560260 combination zp ZP_BYTE:223 [ irq_sprite_ypos#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:224 [ irq_sprite_ptr#2 ] +Uplifting [] best 560260 combination zp ZP_BYTE:224 [ irq_sprite_ptr#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:225 [ irq_sprite_ypos#1 ] +Uplifting [] best 560260 combination zp ZP_BYTE:225 [ irq_sprite_ypos#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:226 [ irq_sprite_ptr#1 ] +Uplifting [] best 560260 combination zp ZP_BYTE:226 [ irq_sprite_ptr#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:64 [ current_xpos#41 current_xpos#115 current_xpos#17 current_xpos#28 current_xpos#20 current_xpos#24 current_xpos#7 current_xpos#5 ] +Uplifting [] best 560260 combination zp ZP_BYTE:64 [ current_xpos#41 current_xpos#115 current_xpos#17 current_xpos#28 current_xpos#20 current_xpos#24 current_xpos#7 current_xpos#5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:37 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +Uplifting [play_collision] best 560244 combination reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:100 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplifting [render_screen_original] best 560244 combination zp ZP_BYTE:100 [ render_screen_original::y#6 render_screen_original::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:94 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [sprites_init] best 560244 combination zp ZP_BYTE:94 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:57 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#63 level_bcd#21 level_bcd#8 ] +Uplifting [] best 560244 combination zp ZP_BYTE:57 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#63 level_bcd#21 level_bcd#8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:91 [ play_init::idx#2 play_init::idx#1 ] +Uplifting [play_init] best 560244 combination zp ZP_BYTE:91 [ play_init::idx#2 play_init::idx#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:17 [ current_xpos#57 current_xpos#125 current_xpos#126 ] +Uplifting [] best 560244 combination zp ZP_BYTE:17 [ current_xpos#57 current_xpos#125 current_xpos#126 ] +Attempting to uplift remaining variables inzp ZP_BYTE:38 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] +Uplifting [play_collision] best 560244 combination zp ZP_BYTE:38 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:56 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#68 current_movedown_slow#10 ] +Uplifting [] best 560244 combination zp ZP_BYTE:56 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#68 current_movedown_slow#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:110 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] +Uplifting [] best 560244 combination zp ZP_BYTE:110 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:83 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] +Uplifting [] best 560233 combination reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:48 [ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 ] +Uplifting [] best 560233 combination zp ZP_BYTE:48 [ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:39 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] +Uplifting [play_collision] best 560233 combination zp ZP_BYTE:39 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#68 ] +Uplifting [] best 560233 combination zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#68 ] +Attempting to uplift remaining variables inzp ZP_BYTE:32 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] +Uplifting [play_movement] best 560233 combination zp ZP_BYTE:32 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:61 [ current_orientation#36 current_orientation#12 current_orientation#16 current_orientation#19 current_orientation#24 current_orientation#7 ] +Uplifting [] best 560233 combination zp ZP_BYTE:61 [ current_orientation#36 current_orientation#12 current_orientation#16 current_orientation#19 current_orientation#24 current_orientation#7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:34 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Uplifting [play_move_rotate] best 560233 combination zp ZP_BYTE:34 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:55 [ level#31 level#18 level#10 level#16 level#20 ] +Uplifting [] best 560233 combination zp ZP_BYTE:55 [ level#31 level#18 level#10 level#16 level#20 ] +Attempting to uplift remaining variables inzp ZP_BYTE:66 [ game_over#69 game_over#26 game_over#19 game_over#14 game_over#15 ] +Uplifting [] best 560233 combination zp ZP_BYTE:66 [ game_over#69 game_over#26 game_over#19 game_over#14 game_over#15 ] +Attempting to uplift remaining variables inzp ZP_BYTE:215 [ sprites_irq::raster_sprite_gfx_modify#0 ] +Uplifting [sprites_irq] best 560233 combination zp ZP_BYTE:215 [ sprites_irq::raster_sprite_gfx_modify#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:125 [ render_bcd::$6 ] +Uplifting [render_bcd] best 560227 combination reg byte a [ render_bcd::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:143 [ play_movement::$4 ] +Uplifting [play_movement] best 560221 combination reg byte a [ play_movement::$4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:145 [ play_collision::return#14 ] +Uplifting [play_collision] best 560215 combination reg byte a [ play_collision::return#14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:147 [ play_move_rotate::$4 ] +Uplifting [play_move_rotate] best 560209 combination reg byte a [ play_move_rotate::$4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:154 [ play_collision::return#13 ] +Uplifting [play_collision] best 560203 combination reg byte a [ play_collision::return#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:156 [ play_collision::return#1 ] +Uplifting [play_collision] best 560197 combination reg byte a [ play_collision::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:160 [ play_collision::return#0 ] +Uplifting [play_collision] best 560191 combination reg byte a [ play_collision::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:162 [ play_remove_lines::return#0 ] +Uplifting [play_remove_lines] best 560185 combination reg byte a [ play_remove_lines::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:163 [ play_move_down::removed#0 ] +Uplifting [play_move_down] best 560179 combination reg byte a [ play_move_down::removed#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:166 [ play_collision::return#10 ] +Uplifting [play_collision] best 560173 combination reg byte a [ play_collision::return#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:194 [ keyboard_event_scan::$14 ] +Uplifting [keyboard_event_scan] best 560167 combination reg byte a [ keyboard_event_scan::$14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:195 [ keyboard_event_pressed::return#1 ] +Uplifting [keyboard_event_pressed] best 560161 combination reg byte a [ keyboard_event_pressed::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:196 [ keyboard_event_scan::$18 ] +Uplifting [keyboard_event_scan] best 560155 combination reg byte a [ keyboard_event_scan::$18 ] +Attempting to uplift remaining variables inzp ZP_BYTE:197 [ keyboard_event_pressed::return#2 ] +Uplifting [keyboard_event_pressed] best 560149 combination reg byte a [ keyboard_event_pressed::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:198 [ keyboard_event_scan::$22 ] +Uplifting [keyboard_event_scan] best 560143 combination reg byte a [ keyboard_event_scan::$22 ] +Attempting to uplift remaining variables inzp ZP_BYTE:199 [ keyboard_event_pressed::return#10 ] +Uplifting [keyboard_event_pressed] best 560137 combination reg byte a [ keyboard_event_pressed::return#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:200 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 560131 combination reg byte a [ keyboard_event_scan::$26 ] +Attempting to uplift remaining variables inzp ZP_BYTE:141 [ play_move_rotate::key_event#0 ] +Uplifting [play_move_rotate] best 560122 combination reg byte a [ play_move_rotate::key_event#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:219 [ irq_cnt#1 ] +Uplifting [] best 560122 combination zp ZP_BYTE:219 [ irq_cnt#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:227 [ sprites_irq::ptr#1 ] +Uplifting [sprites_irq] best 560112 combination reg byte a [ sprites_irq::ptr#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:213 [ sprites_irq::ypos#0 ] +Uplifting [sprites_irq] best 560097 combination reg byte a [ sprites_irq::ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:216 [ sprites_irq::ptr#0 ] +Uplifting [sprites_irq] best 560086 combination reg byte x [ sprites_irq::ptr#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:134 [ play_move_down::key_event#0 ] +Uplifting [play_move_down] best 560080 combination reg byte a [ play_move_down::key_event#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:187 [ keyboard_event_pressed::row_bits#0 ] +Uplifting [keyboard_event_pressed] best 560080 combination zp ZP_BYTE:187 [ keyboard_event_pressed::row_bits#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] +Uplifting [] best 560080 combination zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:189 [ keyboard_event_pressed::return#11 ] +Uplifting [keyboard_event_pressed] best 560062 combination reg byte a [ keyboard_event_pressed::return#11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:45 [ play_collision::return#15 ] +Uplifting [play_collision] best 560032 combination reg byte a [ play_collision::return#15 ] +Attempting to uplift remaining variables inzp ZP_BYTE:119 [ play_movement::key_event#0 ] +Uplifting [play_movement] best 560032 combination zp ZP_BYTE:119 [ play_movement::key_event#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:80 [ keyboard_event_pressed::keycode#5 ] +Uplifting [keyboard_event_pressed] best 560032 combination zp ZP_BYTE:80 [ keyboard_event_pressed::keycode#5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:164 [ play_update_score::removed#0 ] +Uplifting [play_update_score] best 560026 combination reg byte x [ play_update_score::removed#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:11 [ render_bcd::only_low#6 ] -Uplifting [render_bcd] best 4034980 combination reg byte y [ render_bcd::only_low#6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:112 [ irq_sprite_ypos#0 ] -Uplifting [] best 4034980 combination zp ZP_BYTE:112 [ irq_sprite_ypos#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:110 [ render_screen_showing#0 ] -Uplifting [] best 4034980 combination zp ZP_BYTE:110 [ render_screen_showing#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:167 [ play_update_score::lines_before#0 ] -Uplifting [play_update_score] best 4034980 combination zp ZP_BYTE:167 [ play_update_score::lines_before#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:113 [ irq_sprite_ptr#0 ] -Uplifting [] best 4034980 combination zp ZP_BYTE:113 [ irq_sprite_ptr#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:114 [ irq_cnt#0 ] -Uplifting [] best 4034980 combination zp ZP_BYTE:114 [ irq_cnt#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:111 [ irq_raster_next#0 ] -Uplifting [] best 4034980 combination zp ZP_BYTE:111 [ irq_raster_next#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:162 [ play_spawn_current::$3 ] -Uplifting [play_spawn_current] best 4034980 combination zp ZP_BYTE:162 [ play_spawn_current::$3 ] +Uplifting [render_bcd] best 560005 combination reg byte y [ render_bcd::only_low#6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:140 [ play_movement::render#2 ] +Uplifting [play_movement] best 560005 combination zp ZP_BYTE:140 [ play_movement::render#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:33 [ play_move_rotate::return#2 ] +Uplifting [play_move_rotate] best 559996 combination reg byte a [ play_move_rotate::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:46 [ play_move_leftright::return#2 ] +Uplifting [play_move_leftright] best 559987 combination reg byte a [ play_move_leftright::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:65 [ play_move_down::return#3 ] +Uplifting [play_move_down] best 559980 combination reg byte x [ play_move_down::return#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:172 [ play_update_score::lines_before#0 ] +Uplifting [play_update_score] best 559980 combination zp ZP_BYTE:172 [ play_update_score::lines_before#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:111 [ render_screen_showing#0 ] +Uplifting [] best 559980 combination zp ZP_BYTE:111 [ render_screen_showing#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:112 [ irq_raster_next#0 ] +Uplifting [] best 559980 combination zp ZP_BYTE:112 [ irq_raster_next#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:113 [ irq_sprite_ypos#0 ] +Uplifting [] best 559980 combination zp ZP_BYTE:113 [ irq_sprite_ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:114 [ irq_sprite_ptr#0 ] +Uplifting [] best 559980 combination zp ZP_BYTE:114 [ irq_sprite_ptr#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:115 [ irq_cnt#0 ] +Uplifting [] best 559980 combination zp ZP_BYTE:115 [ irq_cnt#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:165 [ play_spawn_current::$3 ] +Uplifting [play_spawn_current] best 559980 combination zp ZP_BYTE:165 [ play_spawn_current::$3 ] Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ render_score::screen#2 ] ] with [ zp ZP_WORD:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] ] - score: 6 +Coalescing zero page register with common assignment [ zp ZP_BYTE:32 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] ] with [ zp ZP_BYTE:140 [ play_movement::render#2 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_BYTE:110 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] ] with [ zp ZP_BYTE:112 [ irq_raster_next#0 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ render_bcd::offset#6 ] ] with [ zp ZP_WORD:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 ] ] with [ zp ZP_WORD:145 [ play_collision::piece_gfx#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:47 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 ] ] with [ zp ZP_BYTE:73 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:108 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 ] ] with [ zp ZP_BYTE:111 [ irq_raster_next#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:112 [ irq_sprite_ypos#0 ] ] with [ zp ZP_BYTE:213 [ irq_sprite_ypos#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:113 [ irq_sprite_ptr#0 ] ] with [ zp ZP_BYTE:214 [ irq_sprite_ptr#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:114 [ irq_cnt#0 ] ] with [ zp ZP_BYTE:212 [ irq_cnt#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:120 [ main::render#1 ] ] with [ zp ZP_BYTE:124 [ main::render#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] ] with [ zp ZP_WORD:133 [ render_bcd::screen_pos#1 ] ] - score: 1 -Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] ] with [ zp ZP_BYTE:89 [ play_init::idx#2 play_init::idx#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 ] ] with [ zp ZP_BYTE:92 [ sprites_init::xpos#2 sprites_init::xpos#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 ] ] with [ zp ZP_BYTE:98 [ render_screen_original::y#6 render_screen_original::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] ] with [ zp ZP_BYTE:67 [ play_remove_lines::y#8 play_remove_lines::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::y#8 play_remove_lines::y#1 ] ] with [ zp ZP_BYTE:74 [ play_lock_current::l#6 play_lock_current::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 ] ] with [ zp ZP_BYTE:162 [ play_spawn_current::$3 ] ] -Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$3 ] ] with [ zp ZP_BYTE:167 [ play_update_score::lines_before#0 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] ] with [ zp ZP_WORD:18 [ current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 ] ] with [ zp ZP_WORD:29 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] with [ zp ZP_WORD:34 [ current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 play_collision::piece_gfx#0 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 play_collision::piece_gfx#0 ] ] with [ zp ZP_WORD:87 [ play_init::pli#2 play_init::pli#1 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 ] ] with [ zp ZP_WORD:94 [ render_init::li_1#2 render_init::li_1#1 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 ] ] with [ zp ZP_WORD:99 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] ] with [ zp ZP_WORD:178 [ play_lock_current::playfield_line#0 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_bcd::screen_pos#1 ] ] with [ zp ZP_WORD:96 [ render_init::li_2#2 render_init::li_2#1 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_bcd::screen_pos#1 render_init::li_2#2 render_init::li_2#1 ] ] with [ zp ZP_WORD:101 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_bcd::screen_pos#1 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] ] with [ zp ZP_WORD:136 [ render_moving::screen_line#0 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_bcd::screen_pos#1 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 render_moving::screen_line#0 ] ] with [ zp ZP_WORD:147 [ play_collision::playfield_line#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#64 ] ] with [ zp ZP_BYTE:27 [ render_playfield::l#2 render_playfield::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#64 render_playfield::l#2 render_playfield::l#1 ] ] with [ zp ZP_BYTE:33 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#64 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] with [ zp ZP_BYTE:68 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#64 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] ] with [ zp ZP_BYTE:75 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] -Coalescing zero page register [ zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#64 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] with [ zp ZP_BYTE:78 [ keyboard_event_pressed::keycode#5 ] ] -Coalescing zero page register [ zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#64 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 ] ] with [ zp ZP_BYTE:80 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:17 [ current_xpos#47 current_xpos#112 current_xpos#113 ] ] with [ zp ZP_BYTE:28 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:17 [ current_xpos#47 current_xpos#112 current_xpos#113 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] with [ zp ZP_BYTE:38 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] ] -Coalescing zero page register [ zp ZP_BYTE:17 [ current_xpos#47 current_xpos#112 current_xpos#113 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] ] with [ zp ZP_BYTE:70 [ play_remove_lines::x#2 play_remove_lines::x#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:17 [ current_xpos#47 current_xpos#112 current_xpos#113 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_remove_lines::x#2 play_remove_lines::x#1 ] ] with [ zp ZP_BYTE:76 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:17 [ current_xpos#47 current_xpos#112 current_xpos#113 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] with [ zp ZP_BYTE:83 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] -Coalescing zero page register [ zp ZP_BYTE:17 [ current_xpos#47 current_xpos#112 current_xpos#113 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] with [ zp ZP_BYTE:182 [ keyboard_event_pressed::row_bits#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] ] with [ zp ZP_BYTE:31 [ render_playfield::c#2 render_playfield::c#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 render_playfield::c#2 render_playfield::c#1 ] ] with [ zp ZP_BYTE:39 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] with [ zp ZP_BYTE:71 [ play_remove_lines::full#4 play_remove_lines::full#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 ] ] with [ zp ZP_BYTE:180 [ play_lock_current::i#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 ] ] with [ zp ZP_BYTE:187 [ keyboard_event_scan::row_scan#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:22 [ render_moving::l#4 render_moving::l#1 ] ] with [ zp ZP_BYTE:40 [ play_collision::l#6 play_collision::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:22 [ render_moving::l#4 render_moving::l#1 play_collision::l#6 play_collision::l#1 ] ] with [ zp ZP_BYTE:177 [ play_remove_lines::c#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:23 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 ] ] with [ zp ZP_BYTE:41 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] ] -Coalescing zero page register [ zp ZP_BYTE:24 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] ] with [ zp ZP_BYTE:42 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:25 [ render_moving::c#2 render_moving::c#1 ] ] with [ zp ZP_BYTE:116 [ main::key_event#0 ] ] -Coalescing zero page register [ zp ZP_WORD:48 [ lines_bcd#20 lines_bcd#13 lines_bcd#15 lines_bcd#11 lines_bcd#23 ] ] with [ zp ZP_WORD:103 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] ] -Coalescing zero page register [ zp ZP_WORD:57 [ current_piece#20 current_piece#80 current_piece#16 current_piece#73 current_piece#10 ] ] with [ zp ZP_WORD:105 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:110 [ render_screen_showing#0 ] ] with [ zp ZP_BYTE:202 [ render_screen_showing#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:112 [ irq_sprite_ypos#0 irq_sprite_ypos#2 ] ] with [ zp ZP_BYTE:217 [ irq_sprite_ypos#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:113 [ irq_sprite_ptr#0 irq_sprite_ptr#2 ] ] with [ zp ZP_BYTE:218 [ irq_sprite_ptr#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:114 [ irq_cnt#0 irq_cnt#1 ] ] with [ zp ZP_BYTE:216 [ irq_cnt#14 ] ] +Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ current_piece#16 current_piece#89 current_piece#90 current_piece#91 current_piece#92 current_piece#93 ] ] with [ zp ZP_WORD:148 [ play_collision::piece_gfx#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:38 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 ] ] with [ zp ZP_BYTE:40 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:48 [ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 ] ] with [ zp ZP_BYTE:75 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:113 [ irq_sprite_ypos#0 ] ] with [ zp ZP_BYTE:220 [ irq_sprite_ypos#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:113 [ irq_sprite_ypos#0 irq_sprite_ypos#3 ] ] with [ zp ZP_BYTE:223 [ irq_sprite_ypos#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:114 [ irq_sprite_ptr#0 ] ] with [ zp ZP_BYTE:221 [ irq_sprite_ptr#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:114 [ irq_sprite_ptr#0 irq_sprite_ptr#3 ] ] with [ zp ZP_BYTE:224 [ irq_sprite_ptr#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:115 [ irq_cnt#0 ] ] with [ zp ZP_BYTE:219 [ irq_cnt#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] ] with [ zp ZP_WORD:126 [ render_bcd::screen_pos#1 ] ] - score: 1 +Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#17 render_screen_show#29 render_screen_show#13 ] ] with [ zp ZP_BYTE:91 [ play_init::idx#2 play_init::idx#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#17 render_screen_show#29 render_screen_show#13 play_init::idx#2 play_init::idx#1 ] ] with [ zp ZP_BYTE:94 [ sprites_init::xpos#2 sprites_init::xpos#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ render_screen_show#17 render_screen_show#29 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 ] ] with [ zp ZP_BYTE:100 [ render_screen_original::y#6 render_screen_original::y#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] ] with [ zp ZP_BYTE:69 [ play_remove_lines::y#8 play_remove_lines::y#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 ] ] with [ zp ZP_BYTE:76 [ play_lock_current::l#6 play_lock_current::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 ] ] with [ zp ZP_BYTE:165 [ play_spawn_current::$3 ] ] +Coalescing zero page register [ zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$3 ] ] with [ zp ZP_BYTE:172 [ play_update_score::lines_before#0 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] ] with [ zp ZP_WORD:18 [ current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 ] ] with [ zp ZP_WORD:29 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] with [ zp ZP_WORD:35 [ current_piece#16 current_piece#89 current_piece#90 current_piece#91 current_piece#92 current_piece#93 play_collision::piece_gfx#0 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#16 current_piece#89 current_piece#90 current_piece#91 current_piece#92 current_piece#93 play_collision::piece_gfx#0 ] ] with [ zp ZP_WORD:89 [ play_init::pli#2 play_init::pli#1 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#16 current_piece#89 current_piece#90 current_piece#91 current_piece#92 current_piece#93 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 ] ] with [ zp ZP_WORD:96 [ render_init::li_1#2 render_init::li_1#1 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#16 current_piece#89 current_piece#90 current_piece#91 current_piece#92 current_piece#93 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 ] ] with [ zp ZP_WORD:101 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#16 current_piece#89 current_piece#90 current_piece#91 current_piece#92 current_piece#93 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] ] with [ zp ZP_WORD:183 [ play_lock_current::playfield_line#0 ] ] +Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_bcd::screen_pos#1 ] ] with [ zp ZP_WORD:98 [ render_init::li_2#2 render_init::li_2#1 ] ] +Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_bcd::screen_pos#1 render_init::li_2#2 render_init::li_2#1 ] ] with [ zp ZP_WORD:103 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] ] +Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_bcd::screen_pos#1 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] ] with [ zp ZP_WORD:129 [ render_moving::screen_line#0 ] ] +Coalescing zero page register [ zp ZP_WORD:9 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_bcd::screen_pos#1 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 render_moving::screen_line#0 ] ] with [ zp ZP_WORD:150 [ play_collision::playfield_line#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#68 ] ] with [ zp ZP_BYTE:27 [ render_playfield::l#2 render_playfield::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#68 render_playfield::l#2 render_playfield::l#1 ] ] with [ zp ZP_BYTE:32 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#68 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 ] ] with [ zp ZP_BYTE:70 [ play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#68 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 ] ] with [ zp ZP_BYTE:77 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] +Coalescing zero page register [ zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#68 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] with [ zp ZP_BYTE:80 [ keyboard_event_pressed::keycode#5 ] ] +Coalescing zero page register [ zp ZP_BYTE:16 [ render_screen_render#30 render_screen_render#68 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 ] ] with [ zp ZP_BYTE:82 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ current_xpos#57 current_xpos#125 current_xpos#126 ] ] with [ zp ZP_BYTE:28 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ current_xpos#57 current_xpos#125 current_xpos#126 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] with [ zp ZP_BYTE:34 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ current_xpos#57 current_xpos#125 current_xpos#126 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] with [ zp ZP_BYTE:72 [ play_remove_lines::x#2 play_remove_lines::x#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ current_xpos#57 current_xpos#125 current_xpos#126 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 ] ] with [ zp ZP_BYTE:78 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ current_xpos#57 current_xpos#125 current_xpos#126 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] with [ zp ZP_BYTE:85 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ current_xpos#57 current_xpos#125 current_xpos#126 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] with [ zp ZP_BYTE:187 [ keyboard_event_pressed::row_bits#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:20 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 ] ] with [ zp ZP_BYTE:31 [ render_playfield::c#2 render_playfield::c#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:20 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 render_playfield::c#2 render_playfield::c#1 ] ] with [ zp ZP_BYTE:38 [ play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:20 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] with [ zp ZP_BYTE:73 [ play_remove_lines::full#4 play_remove_lines::full#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:20 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 ] ] with [ zp ZP_BYTE:185 [ play_lock_current::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:20 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 ] ] with [ zp ZP_BYTE:192 [ keyboard_event_scan::row_scan#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 ] ] with [ zp ZP_BYTE:39 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] ] +Coalescing zero page register [ zp ZP_BYTE:21 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] ] with [ zp ZP_BYTE:182 [ play_remove_lines::c#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:22 [ render_moving::l#4 render_moving::l#1 ] ] with [ zp ZP_BYTE:41 [ play_collision::l#6 play_collision::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:23 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 ] ] with [ zp ZP_BYTE:42 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] ] +Coalescing zero page register [ zp ZP_BYTE:24 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] ] with [ zp ZP_BYTE:43 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] ] +Coalescing zero page register [ zp ZP_WORD:49 [ lines_bcd#27 lines_bcd#17 lines_bcd#19 lines_bcd#15 lines_bcd#30 ] ] with [ zp ZP_WORD:105 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] ] +Coalescing zero page register [ zp ZP_WORD:58 [ current_piece#27 current_piece#94 current_piece#20 current_piece#14 current_piece#88 ] ] with [ zp ZP_WORD:107 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:111 [ render_screen_showing#0 ] ] with [ zp ZP_BYTE:207 [ render_screen_showing#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:113 [ irq_sprite_ypos#0 irq_sprite_ypos#3 irq_sprite_ypos#2 ] ] with [ zp ZP_BYTE:225 [ irq_sprite_ypos#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:114 [ irq_sprite_ptr#0 irq_sprite_ptr#3 irq_sprite_ptr#2 ] ] with [ zp ZP_BYTE:226 [ irq_sprite_ptr#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:115 [ irq_cnt#0 irq_cnt#1 ] ] with [ zp ZP_BYTE:222 [ irq_cnt#2 ] ] Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_bcd::screen_pos#1 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 render_moving::screen_line#0 play_collision::playfield_line#0 ] -Allocated (was zp ZP_BYTE:16) zp ZP_BYTE:9 [ render_screen_render#30 render_screen_render#64 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Allocated (was zp ZP_BYTE:17) zp ZP_BYTE:10 [ current_xpos#47 current_xpos#112 current_xpos#113 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 keyboard_event_pressed::row_bits#0 ] -Allocated (was zp ZP_BYTE:21) zp ZP_BYTE:11 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] -Allocated (was zp ZP_BYTE:22) zp ZP_BYTE:12 [ render_moving::l#4 render_moving::l#1 play_collision::l#6 play_collision::l#1 play_remove_lines::c#0 ] -Allocated (was zp ZP_BYTE:23) zp ZP_BYTE:13 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -Allocated (was zp ZP_BYTE:24) zp ZP_BYTE:14 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -Allocated (was zp ZP_BYTE:25) zp ZP_BYTE:15 [ render_moving::c#2 render_moving::c#1 main::key_event#0 ] -Allocated (was zp ZP_BYTE:47) zp ZP_BYTE:16 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -Allocated (was zp ZP_WORD:48) zp ZP_WORD:17 [ lines_bcd#20 lines_bcd#13 lines_bcd#15 lines_bcd#11 lines_bcd#23 render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] -Allocated (was zp ZP_DWORD:50) zp ZP_DWORD:19 [ score_bcd#20 score_bcd#12 score_bcd#14 score_bcd#10 score_bcd#23 ] -Allocated (was zp ZP_BYTE:54) zp ZP_BYTE:23 [ level#24 level#14 level#19 level#12 level#16 ] -Allocated (was zp ZP_BYTE:55) zp ZP_BYTE:24 [ current_movedown_slow#31 current_movedown_slow#19 current_movedown_slow#12 current_movedown_slow#1 current_movedown_slow#17 current_movedown_slow#60 current_movedown_slow#8 ] -Allocated (was zp ZP_BYTE:56) zp ZP_BYTE:25 [ level_bcd#25 level_bcd#15 level_bcd#20 level_bcd#13 level_bcd#55 level_bcd#17 level_bcd#6 ] -Allocated (was zp ZP_WORD:57) zp ZP_WORD:26 [ current_piece#20 current_piece#80 current_piece#16 current_piece#73 current_piece#10 render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] -Allocated (was zp ZP_BYTE:59) zp ZP_BYTE:28 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] -Allocated (was zp ZP_WORD:60) zp ZP_WORD:29 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] -Allocated (was zp ZP_BYTE:62) zp ZP_BYTE:31 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] -Allocated (was zp ZP_BYTE:63) zp ZP_BYTE:32 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] -Allocated (was zp ZP_BYTE:84) zp ZP_BYTE:33 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] -Allocated (was zp ZP_BYTE:108) zp ZP_BYTE:34 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] -Allocated (was zp ZP_BYTE:110) zp ZP_BYTE:35 [ render_screen_showing#0 render_screen_showing#1 ] -Allocated (was zp ZP_BYTE:112) zp ZP_BYTE:36 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] -Allocated (was zp ZP_BYTE:113) zp ZP_BYTE:37 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] -Allocated (was zp ZP_BYTE:114) zp ZP_BYTE:38 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ] -Allocated (was zp ZP_BYTE:120) zp ZP_BYTE:39 [ main::render#1 main::render#2 ] -Allocated (was zp ZP_BYTE:149) zp ZP_BYTE:40 [ play_collision::i#1 ] -Allocated (was zp ZP_DWORD:169) zp ZP_DWORD:41 [ play_update_score::add_bcd#0 ] +Allocated (was zp ZP_BYTE:16) zp ZP_BYTE:9 [ render_screen_render#30 render_screen_render#68 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Allocated (was zp ZP_BYTE:17) zp ZP_BYTE:10 [ current_xpos#57 current_xpos#125 current_xpos#126 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 keyboard_event_pressed::row_bits#0 ] +Allocated (was zp ZP_BYTE:20) zp ZP_BYTE:11 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] +Allocated (was zp ZP_BYTE:21) zp ZP_BYTE:12 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 play_remove_lines::c#0 ] +Allocated (was zp ZP_BYTE:22) zp ZP_BYTE:13 [ render_moving::l#4 render_moving::l#1 play_collision::l#6 play_collision::l#1 ] +Allocated (was zp ZP_BYTE:23) zp ZP_BYTE:14 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Allocated (was zp ZP_BYTE:24) zp ZP_BYTE:15 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +Allocated (was zp ZP_BYTE:48) zp ZP_BYTE:16 [ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Allocated (was zp ZP_WORD:49) zp ZP_WORD:17 [ lines_bcd#27 lines_bcd#17 lines_bcd#19 lines_bcd#15 lines_bcd#30 render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] +Allocated (was zp ZP_DWORD:51) zp ZP_DWORD:19 [ score_bcd#27 score_bcd#16 score_bcd#18 score_bcd#14 score_bcd#30 ] +Allocated (was zp ZP_BYTE:55) zp ZP_BYTE:23 [ level#31 level#18 level#10 level#16 level#20 ] +Allocated (was zp ZP_BYTE:56) zp ZP_BYTE:24 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#68 current_movedown_slow#10 ] +Allocated (was zp ZP_BYTE:57) zp ZP_BYTE:25 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#63 level_bcd#21 level_bcd#8 ] +Allocated (was zp ZP_WORD:58) zp ZP_WORD:26 [ current_piece#27 current_piece#94 current_piece#20 current_piece#14 current_piece#88 render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] +Allocated (was zp ZP_BYTE:60) zp ZP_BYTE:28 [ current_piece_char#27 current_piece_char#19 current_piece_char#14 current_piece_char#16 ] +Allocated (was zp ZP_BYTE:61) zp ZP_BYTE:29 [ current_orientation#36 current_orientation#12 current_orientation#16 current_orientation#19 current_orientation#24 current_orientation#7 ] +Allocated (was zp ZP_WORD:62) zp ZP_WORD:30 [ current_piece_gfx#33 current_piece_gfx#105 current_piece_gfx#16 current_piece_gfx#21 current_piece_gfx#18 current_piece_gfx#19 current_piece_gfx#6 ] +Allocated (was zp ZP_BYTE:64) zp ZP_BYTE:32 [ current_xpos#41 current_xpos#115 current_xpos#17 current_xpos#28 current_xpos#20 current_xpos#24 current_xpos#7 current_xpos#5 ] +Allocated (was zp ZP_BYTE:66) zp ZP_BYTE:33 [ game_over#69 game_over#26 game_over#19 game_over#14 game_over#15 ] +Allocated (was zp ZP_BYTE:86) zp ZP_BYTE:34 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Allocated (was zp ZP_BYTE:110) zp ZP_BYTE:35 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 ] +Allocated (was zp ZP_BYTE:111) zp ZP_BYTE:36 [ render_screen_showing#0 render_screen_showing#1 ] +Allocated (was zp ZP_BYTE:113) zp ZP_BYTE:37 [ irq_sprite_ypos#0 irq_sprite_ypos#3 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +Allocated (was zp ZP_BYTE:114) zp ZP_BYTE:38 [ irq_sprite_ptr#0 irq_sprite_ptr#3 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +Allocated (was zp ZP_BYTE:115) zp ZP_BYTE:39 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] +Allocated (was zp ZP_BYTE:119) zp ZP_BYTE:40 [ play_movement::key_event#0 ] +Allocated (was zp ZP_BYTE:152) zp ZP_BYTE:41 [ play_collision::i#1 ] +Allocated (was zp ZP_DWORD:174) zp ZP_DWORD:42 [ play_update_score::add_bcd#0 ] +Allocated (was zp ZP_BYTE:215) zp ZP_BYTE:46 [ sprites_irq::raster_sprite_gfx_modify#0 ] Interrupt procedure sprites_irq clobbers AXCNZV -Removing interrupt register storage sty regy+1 in SEG1094 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regy: in SEG1134 [536] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldy #00 in SEG1134 [536] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage sty regy+1 in SEG1133 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regy: in SEG1169 [555] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldy #00 in SEG1169 [555] return - exit interrupt(HARDWARE_CLOBBER) ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -15660,7 +16810,7 @@ ASSEMBLER BEFORE OPTIMIZATION .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a - .const IRQ_RASTER_FIRST = $31 + .const SPRITES_FIRST_YPOS = $31 .const current_movedown_fast = 2 .const COLLISION_NONE = 0 .const COLLISION_PLAYFIELD = 1 @@ -15669,40 +16819,46 @@ ASSEMBLER BEFORE OPTIMIZATION .const COLLISION_RIGHT = 8 .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS .label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS + .const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13 .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 - .label keyboard_events_size = $21 - .label render_screen_showing = $23 - .label irq_raster_next = $22 - .label irq_sprite_ypos = $24 - .label irq_sprite_ptr = $25 - .label irq_cnt = $26 + .label keyboard_events_size = $22 + .label render_screen_showing = $24 + .label irq_raster_next = $23 + .label irq_sprite_ypos = $25 + .label irq_sprite_ptr = $26 + .label irq_cnt = $27 .label current_movedown_slow = $18 - .label current_movedown_counter = 4 .label current_ypos = $10 - .label current_piece_gfx = $1d - .label current_xpos = $1f - .label current_piece_char = $20 - .label current_orientation = $1c + .label current_xpos = $20 + .label current_orientation = $1d + .label current_piece_gfx = $1e .label level_bcd = $19 + .label level = $17 .label render_screen_render = 3 .label render_screen_show = 2 + .label current_movedown_counter = 4 .label lines_bcd = $11 .label score_bcd = $13 - .label level = $17 .label current_piece = $1a - .label current_piece_12 = 5 + .label current_piece_char = $1c + .label game_over = $21 + .label current_piece_16 = 5 .label render_screen_render_30 = 9 - .label current_xpos_47 = $a - .label current_piece_gfx_53 = 5 - .label render_screen_render_64 = 9 - .label current_xpos_112 = $a - .label current_xpos_113 = $a - .label current_piece_gfx_102 = 5 - .label current_piece_gfx_103 = 5 - .label current_piece_76 = 5 - .label current_piece_77 = 5 - .label current_piece_78 = 5 - .label current_piece_79 = 5 + .label current_xpos_57 = $a + .label current_piece_gfx_62 = 5 + .label current_piece_char_75 = $b + .label render_screen_render_68 = 9 + .label current_xpos_125 = $a + .label current_xpos_126 = $a + .label current_piece_gfx_115 = 5 + .label current_piece_gfx_116 = 5 + .label current_piece_char_103 = $b + .label current_piece_char_104 = $b + .label current_piece_89 = 5 + .label current_piece_90 = 5 + .label current_piece_91 = 5 + .label current_piece_92 = 5 + .label current_piece_93 = 5 //SEG2 @begin bbegin: jmp b14 @@ -15717,530 +16873,518 @@ b14: jmp b22 //SEG8 @22 b22: -//SEG9 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} +//SEG9 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} jmp b23 //SEG10 @23 b23: //SEG11 [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG12 [7] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 - lda #$32 +//SEG12 [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 + lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos //SEG13 [8] phi from @23 to toSpritePtr1 [phi:@23->toSpritePtr1] toSpritePtr1_from_b23: jmp toSpritePtr1 //SEG14 toSpritePtr1 toSpritePtr1: - jmp b37 -//SEG15 @37 -b37: -//SEG16 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 - lda #toSpritePtr1_return + jmp b38 +//SEG15 @38 +b38: +//SEG16 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 + lda #toSpritePtr1_return+3 sta irq_sprite_ptr //SEG17 [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt -//SEG18 [11] phi from @37 to @36 [phi:@37->@36] -b36_from_b37: - jmp b36 -//SEG19 @36 -b36: +//SEG18 [11] phi from @38 to @37 [phi:@38->@37] +b37_from_b38: + jmp b37 +//SEG19 @37 +b37: //SEG20 [12] call main -//SEG21 [14] phi from @36 to main [phi:@36->main] -main_from_b36: +//SEG21 [14] phi from @37 to main [phi:@37->main] +main_from_b37: jsr main -//SEG22 [13] phi from @36 to @end [phi:@36->@end] -bend_from_b36: +//SEG22 [13] phi from @37 to @end [phi:@37->@end] +bend_from_b37: jmp bend //SEG23 @end bend: //SEG24 main main: { - .label key_event = $f - .label render = $27 //SEG25 [15] call sid_rnd_init jsr sid_rnd_init - jmp b15 - //SEG26 main::@15 - b15: + jmp b25 + //SEG26 main::@25 + b25: //SEG27 asm { sei } sei //SEG28 [17] call render_init - //SEG29 [454] phi from main::@15 to render_init [phi:main::@15->render_init] - render_init_from_b15: + //SEG29 [475] phi from main::@25 to render_init [phi:main::@25->render_init] + render_init_from_b25: jsr render_init - //SEG30 [18] phi from main::@15 to main::@16 [phi:main::@15->main::@16] - b16_from_b15: - jmp b16 - //SEG31 main::@16 - b16: + //SEG30 [18] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + b26_from_b25: + jmp b26 + //SEG31 main::@26 + b26: //SEG32 [19] call sprites_init jsr sprites_init - //SEG33 [20] phi from main::@16 to main::@17 [phi:main::@16->main::@17] - b17_from_b16: - jmp b17 - //SEG34 main::@17 - b17: + //SEG33 [20] phi from main::@26 to main::@27 [phi:main::@26->main::@27] + b27_from_b26: + jmp b27 + //SEG34 main::@27 + b27: //SEG35 [21] call sprites_irq_init jsr sprites_irq_init - //SEG36 [22] phi from main::@17 to main::@18 [phi:main::@17->main::@18] - b18_from_b17: - jmp b18 - //SEG37 main::@18 - b18: + //SEG36 [22] phi from main::@27 to main::@28 [phi:main::@27->main::@28] + b28_from_b27: + jmp b28 + //SEG37 main::@28 + b28: //SEG38 [23] call play_init - //SEG39 [413] phi from main::@18 to play_init [phi:main::@18->play_init] - play_init_from_b18: + //SEG39 [434] phi from main::@28 to play_init [phi:main::@28->play_init] + play_init_from_b28: jsr play_init - //SEG40 [24] phi from main::@18 to main::@19 [phi:main::@18->main::@19] - b19_from_b18: - jmp b19 - //SEG41 main::@19 - b19: + //SEG40 [24] phi from main::@28 to main::@29 [phi:main::@28->main::@29] + b29_from_b28: + jmp b29 + //SEG41 main::@29 + b29: //SEG42 [25] call play_spawn_current - //SEG43 [250] phi from main::@19 to play_spawn_current [phi:main::@19->play_spawn_current] - play_spawn_current_from_b19: + //SEG43 [262] phi from main::@29 to play_spawn_current [phi:main::@29->play_spawn_current] + play_spawn_current_from_b29: + //SEG44 [262] phi (byte) game_over#69 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#0] -- vbuz1=vbuc1 + lda #0 + sta game_over jsr play_spawn_current - //SEG44 [26] phi from main::@19 to main::@20 [phi:main::@19->main::@20] - b20_from_b19: - jmp b20 - //SEG45 main::@20 - b20: - //SEG46 [27] call render_playfield - //SEG47 [133] phi from main::@20 to render_playfield [phi:main::@20->render_playfield] - render_playfield_from_b20: - //SEG48 [133] phi (byte) render_screen_render#21 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@20->render_playfield#0] -- vbuxx=vbuc1 + //SEG45 [26] phi from main::@29 to main::@30 [phi:main::@29->main::@30] + b30_from_b29: + jmp b30 + //SEG46 main::@30 + b30: + //SEG47 [27] call render_playfield + //SEG48 [127] phi from main::@30 to render_playfield [phi:main::@30->render_playfield] + render_playfield_from_b30: + //SEG49 [127] phi (byte) render_screen_render#21 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@30->render_playfield#0] -- vbuxx=vbuc1 ldx #$40 jsr render_playfield - jmp b21 - //SEG49 main::@21 - b21: - //SEG50 [28] (byte~) current_ypos#86 ← (byte) current_ypos#18 -- vbuyy=vbuz1 - ldy current_ypos - //SEG51 [29] (byte~) current_xpos#112 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + jmp b31 + //SEG50 main::@31 + b31: + //SEG51 [28] (byte~) current_ypos#99 ← (byte) current_ypos#22 -- vbuxx=vbuz1 + ldx current_ypos + //SEG52 [29] (byte~) current_xpos#125 ← (byte) current_xpos#28 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_112 - //SEG52 [30] (byte*~) current_piece_gfx#102 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 + sta current_xpos_125 + //SEG53 [30] (byte*~) current_piece_gfx#115 ← (byte*) current_piece_gfx#21 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_102 + sta current_piece_gfx_115 lda current_piece_gfx+1 - sta current_piece_gfx_102+1 - //SEG53 [31] (byte~) current_piece_char#90 ← (byte) current_piece_char#12 -- vbuxx=vbuz1 - ldx current_piece_char - //SEG54 [32] call render_moving - //SEG55 [110] phi from main::@21 to render_moving [phi:main::@21->render_moving] - render_moving_from_b21: - //SEG56 [110] phi (byte) current_piece_char#64 = (byte~) current_piece_char#90 [phi:main::@21->render_moving#0] -- register_copy - //SEG57 [110] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#102 [phi:main::@21->render_moving#1] -- register_copy - //SEG58 [110] phi (byte) current_xpos#47 = (byte~) current_xpos#112 [phi:main::@21->render_moving#2] -- register_copy - //SEG59 [110] phi (byte) render_screen_render#30 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->render_moving#3] -- vbuz1=vbuc1 + sta current_piece_gfx_115+1 + //SEG54 [31] (byte~) current_piece_char#103 ← (byte) current_piece_char#16 -- vbuz1=vbuz2 + lda current_piece_char + sta current_piece_char_103 + //SEG55 [32] call render_moving + //SEG56 [104] phi from main::@31 to render_moving [phi:main::@31->render_moving] + render_moving_from_b31: + //SEG57 [104] phi (byte) current_piece_char#75 = (byte~) current_piece_char#103 [phi:main::@31->render_moving#0] -- register_copy + //SEG58 [104] phi (byte*) current_piece_gfx#62 = (byte*~) current_piece_gfx#115 [phi:main::@31->render_moving#1] -- register_copy + //SEG59 [104] phi (byte) current_xpos#57 = (byte~) current_xpos#125 [phi:main::@31->render_moving#2] -- register_copy + //SEG60 [104] phi (byte) render_screen_render#30 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@31->render_moving#3] -- vbuz1=vbuc1 lda #$40 sta render_screen_render_30 - //SEG60 [110] phi (byte) current_ypos#9 = (byte~) current_ypos#86 [phi:main::@21->render_moving#4] -- register_copy + //SEG61 [104] phi (byte) current_ypos#11 = (byte~) current_ypos#99 [phi:main::@31->render_moving#4] -- register_copy jsr render_moving - //SEG61 [33] (byte*~) current_piece#73 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG62 [33] (byte*~) current_piece#88 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG62 [34] phi from main::@21 to main::@1 [phi:main::@21->main::@1] - b1_from_b21: - //SEG63 [34] phi (byte) level_bcd#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#0] -- vbuz1=vbuc1 + //SEG63 [34] phi from main::@31 to main::@1 [phi:main::@31->main::@1] + b1_from_b31: + //SEG64 [34] phi (byte) level_bcd#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#0] -- vbuz1=vbuc1 lda #0 sta level_bcd - //SEG64 [34] phi (byte) level#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#1] -- vbuz1=vbuc1 + //SEG65 [34] phi (byte) level#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#1] -- vbuz1=vbuc1 lda #0 sta level - //SEG65 [34] phi (dword) score_bcd#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#2] -- vduz1=vbuc1 + //SEG66 [34] phi (dword) score_bcd#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#2] -- vduz1=vbuc1 lda #0 sta score_bcd lda #0 sta score_bcd+1 sta score_bcd+2 sta score_bcd+3 - //SEG66 [34] phi (word) lines_bcd#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#3] -- vwuz1=vbuc1 + //SEG67 [34] phi (word) lines_bcd#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#3] -- vwuz1=vbuc1 lda #<0 sta lines_bcd lda #>0 sta lines_bcd+1 - //SEG67 [34] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#4] -- vbuz1=vbuc1 + //SEG68 [34] phi (byte) current_movedown_counter#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#4] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG68 [34] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#5] -- vbuz1=vbuc1 + //SEG69 [34] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#5] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG69 [34] phi (byte) current_piece_char#15 = (byte) current_piece_char#12 [phi:main::@21->main::@1#6] -- register_copy - //SEG70 [34] phi (byte) current_ypos#21 = (byte) current_ypos#18 [phi:main::@21->main::@1#7] -- register_copy - //SEG71 [34] phi (byte) current_xpos#10 = (byte) current_xpos#23 [phi:main::@21->main::@1#8] -- register_copy - //SEG72 [34] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#16 [phi:main::@21->main::@1#9] -- register_copy - //SEG73 [34] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#10] -- vbuz1=vbuc1 + //SEG70 [34] phi (byte) game_over#19 = (byte) game_over#15 [phi:main::@31->main::@1#6] -- register_copy + //SEG71 [34] phi (byte) current_ypos#25 = (byte) current_ypos#22 [phi:main::@31->main::@1#7] -- register_copy + //SEG72 [34] phi (byte) current_xpos#115 = (byte) current_xpos#28 [phi:main::@31->main::@1#8] -- register_copy + //SEG73 [34] phi (byte*) current_piece_gfx#105 = (byte*) current_piece_gfx#21 [phi:main::@31->main::@1#9] -- register_copy + //SEG74 [34] phi (byte) current_orientation#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#10] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG74 [34] phi (byte*) current_piece#16 = (byte*~) current_piece#73 [phi:main::@21->main::@1#11] -- register_copy - //SEG75 [34] phi (byte) current_movedown_slow#12 = (byte) current_movedown_slow#1 [phi:main::@21->main::@1#12] -- register_copy - //SEG76 [34] phi (byte) render_screen_render#17 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->main::@1#13] -- vbuz1=vbuc1 + //SEG75 [34] phi (byte) current_piece_char#19 = (byte) current_piece_char#16 [phi:main::@31->main::@1#11] -- register_copy + //SEG76 [34] phi (byte*) current_piece#20 = (byte*~) current_piece#88 [phi:main::@31->main::@1#12] -- register_copy + //SEG77 [34] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@31->main::@1#13] -- register_copy + //SEG78 [34] phi (byte) render_screen_render#17 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@31->main::@1#14] -- vbuz1=vbuc1 lda #$40 sta render_screen_render - //SEG77 [34] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#14] -- vbuz1=vbuc1 + //SEG79 [34] phi (byte) render_screen_show#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#15] -- vbuz1=vbuc1 lda #0 sta render_screen_show jmp b1 - //SEG78 [34] phi from main::@28 to main::@1 [phi:main::@28->main::@1] - b1_from_b28: - //SEG79 [34] phi (byte) level_bcd#20 = (byte) level_bcd#13 [phi:main::@28->main::@1#0] -- register_copy - //SEG80 [34] phi (byte) level#19 = (byte) level#12 [phi:main::@28->main::@1#1] -- register_copy - //SEG81 [34] phi (dword) score_bcd#14 = (dword) score_bcd#10 [phi:main::@28->main::@1#2] -- register_copy - //SEG82 [34] phi (word) lines_bcd#15 = (word) lines_bcd#11 [phi:main::@28->main::@1#3] -- register_copy - //SEG83 [34] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@28->main::@1#4] -- register_copy - //SEG84 [34] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@28->main::@1#5] -- register_copy - //SEG85 [34] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@28->main::@1#6] -- register_copy - //SEG86 [34] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@28->main::@1#7] -- register_copy - //SEG87 [34] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@28->main::@1#8] -- register_copy - //SEG88 [34] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@28->main::@1#9] -- register_copy - //SEG89 [34] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@28->main::@1#10] -- register_copy - //SEG90 [34] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@28->main::@1#11] -- register_copy - //SEG91 [34] phi (byte) current_movedown_slow#12 = (byte) current_movedown_slow#17 [phi:main::@28->main::@1#12] -- register_copy - jmp b1 - //SEG92 main::@1 + //SEG80 main::@1 b1: jmp b4 - //SEG93 main::@4 + //SEG81 main::@4 b4: - //SEG94 [35] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG82 [35] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 - //SEG95 [36] phi from main::@4 to main::@6 [phi:main::@4->main::@6] - b6_from_b4: jmp b6 - //SEG96 main::@6 + //SEG83 main::@6 b6: - //SEG97 [37] call render_show + //SEG84 [36] (byte~) main::$9 ← (byte) render_screen_show#17 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + lda render_screen_show + lsr + lsr + lsr + lsr + //SEG85 [37] *((const byte*) BORDERCOL#0) ← (byte~) main::$9 -- _deref_pbuc1=vbuaa + sta BORDERCOL + //SEG86 [38] call render_show jsr render_show - //SEG98 [38] phi from main::@6 to main::@23 [phi:main::@6->main::@23] - b23_from_b6: - jmp b23 - //SEG99 main::@23 - b23: - //SEG100 [39] call keyboard_event_scan - //SEG101 [350] phi from main::@23 to keyboard_event_scan [phi:main::@23->keyboard_event_scan] - keyboard_event_scan_from_b23: + //SEG87 [39] phi from main::@6 to main::@33 [phi:main::@6->main::@33] + b33_from_b6: + jmp b33 + //SEG88 main::@33 + b33: + //SEG89 [40] call keyboard_event_scan + //SEG90 [371] phi from main::@33 to keyboard_event_scan [phi:main::@33->keyboard_event_scan] + keyboard_event_scan_from_b33: jsr keyboard_event_scan - //SEG102 [40] phi from main::@23 to main::@24 [phi:main::@23->main::@24] - b24_from_b23: - jmp b24 - //SEG103 main::@24 - b24: - //SEG104 [41] call keyboard_event_get + //SEG91 [41] phi from main::@33 to main::@34 [phi:main::@33->main::@34] + b34_from_b33: + jmp b34 + //SEG92 main::@34 + b34: + //SEG93 [42] call keyboard_event_get jsr keyboard_event_get - //SEG105 [42] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 - // (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#2 // register copy reg byte a - jmp b25 - //SEG106 main::@25 - b25: - //SEG107 [43] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa - sta key_event - //SEG108 [44] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 - lda key_event - //SEG109 [45] call play_move_down - jsr play_move_down - //SEG110 [46] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuaa=vbuxx - txa - jmp b26 - //SEG111 main::@26 - b26: - //SEG112 [47] (byte~) main::$12 ← (byte) play_move_down::return#3 - // (byte~) main::$12 = (byte) play_move_down::return#3 // register copy reg byte a - //SEG113 [48] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 -- vbuz1=vbuc1_plus_vbuaa - clc - adc #0 - sta render - //SEG114 [49] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 - lda key_event - //SEG115 [50] call play_move_leftright - jsr play_move_leftright - //SEG116 [51] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 - // (byte) play_move_leftright::return#4 = (byte) play_move_leftright::return#1 // register copy reg byte a - jmp b27 - //SEG117 main::@27 - b27: - //SEG118 [52] (byte~) main::$13 ← (byte) play_move_leftright::return#4 - // (byte~) main::$13 = (byte) play_move_leftright::return#4 // register copy reg byte a - //SEG119 [53] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 -- vbuz1=vbuz1_plus_vbuaa - clc - adc render - sta render - //SEG120 [54] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 - lda key_event - //SEG121 [55] call play_move_rotate - jsr play_move_rotate - //SEG122 [56] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 - // (byte) play_move_rotate::return#4 = (byte) play_move_rotate::return#1 // register copy reg byte a - jmp b28 - //SEG123 main::@28 - b28: - //SEG124 [57] (byte~) main::$14 ← (byte) play_move_rotate::return#4 - // (byte~) main::$14 = (byte) play_move_rotate::return#4 // register copy reg byte a - //SEG125 [58] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 -- vbuaa=vbuz1_plus_vbuaa - clc - adc render - //SEG126 [59] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuaa_eq_0_then_la1 + //SEG94 [43] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + // (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#2 // register copy reg byte x + jmp b35 + //SEG95 main::@35 + b35: + //SEG96 [44] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + // (byte) main::key_event#0 = (byte) keyboard_event_get::return#3 // register copy reg byte x + //SEG97 [45] if((byte) game_over#19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuz1_eq_0_then_la1 + lda game_over cmp #0 - beq b1_from_b28 - jmp b13 - //SEG127 main::@13 - b13: - //SEG128 [60] (byte~) render_screen_render#65 ← (byte) render_screen_render#17 -- vbuxx=vbuz1 + beq b7 + jmp b9 + //SEG98 main::@9 + b9: + //SEG99 [46] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + inc BORDERCOL + jmp b9 + //SEG100 main::@7 + b7: + //SEG101 [47] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuxx + stx play_movement.key_event + //SEG102 [48] call play_movement + jsr play_movement + //SEG103 [49] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuaa=vbuz1 + lda play_movement.return + jmp b36 + //SEG104 main::@36 + b36: + //SEG105 [50] (byte) main::render#1 ← (byte) play_movement::return#3 + // (byte) main::render#1 = (byte) play_movement::return#3 // register copy reg byte a + jmp b11 + //SEG106 main::@11 + b11: + //SEG107 [51] if((byte) main::render#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12 -- vbuaa_eq_0_then_la1 + cmp #0 + beq b12_from_b11 + jmp b23 + //SEG108 main::@23 + b23: + //SEG109 [52] (byte~) render_screen_render#69 ← (byte) render_screen_render#17 -- vbuxx=vbuz1 ldx render_screen_render - //SEG129 [61] call render_playfield - //SEG130 [133] phi from main::@13 to render_playfield [phi:main::@13->render_playfield] - render_playfield_from_b13: - //SEG131 [133] phi (byte) render_screen_render#21 = (byte~) render_screen_render#65 [phi:main::@13->render_playfield#0] -- register_copy + //SEG110 [53] call render_playfield + //SEG111 [127] phi from main::@23 to render_playfield [phi:main::@23->render_playfield] + render_playfield_from_b23: + //SEG112 [127] phi (byte) render_screen_render#21 = (byte~) render_screen_render#69 [phi:main::@23->render_playfield#0] -- register_copy jsr render_playfield - jmp b29 - //SEG132 main::@29 - b29: - //SEG133 [62] (byte~) current_ypos#87 ← (byte) current_ypos#13 -- vbuyy=vbuz1 - ldy current_ypos - //SEG134 [63] (byte~) render_screen_render#64 ← (byte) render_screen_render#17 -- vbuz1=vbuz2 + jmp b37 + //SEG113 main::@37 + b37: + //SEG114 [54] (byte~) current_ypos#100 ← (byte) current_ypos#17 -- vbuxx=vbuz1 + ldx current_ypos + //SEG115 [55] (byte~) render_screen_render#68 ← (byte) render_screen_render#17 -- vbuz1=vbuz2 lda render_screen_render - sta render_screen_render_64 - //SEG135 [64] (byte~) current_xpos#113 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + sta render_screen_render_68 + //SEG116 [56] (byte~) current_xpos#126 ← (byte) current_xpos#17 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_113 - //SEG136 [65] (byte*~) current_piece_gfx#103 ← (byte*) current_piece_gfx#14 -- pbuz1=pbuz2 + sta current_xpos_126 + //SEG117 [57] (byte*~) current_piece_gfx#116 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_103 + sta current_piece_gfx_116 lda current_piece_gfx+1 - sta current_piece_gfx_103+1 - //SEG137 [66] (byte~) current_piece_char#91 ← (byte) current_piece_char#1 -- vbuxx=vbuz1 - ldx current_piece_char - //SEG138 [67] call render_moving - //SEG139 [110] phi from main::@29 to render_moving [phi:main::@29->render_moving] - render_moving_from_b29: - //SEG140 [110] phi (byte) current_piece_char#64 = (byte~) current_piece_char#91 [phi:main::@29->render_moving#0] -- register_copy - //SEG141 [110] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#103 [phi:main::@29->render_moving#1] -- register_copy - //SEG142 [110] phi (byte) current_xpos#47 = (byte~) current_xpos#113 [phi:main::@29->render_moving#2] -- register_copy - //SEG143 [110] phi (byte) render_screen_render#30 = (byte~) render_screen_render#64 [phi:main::@29->render_moving#3] -- register_copy - //SEG144 [110] phi (byte) current_ypos#9 = (byte~) current_ypos#87 [phi:main::@29->render_moving#4] -- register_copy + sta current_piece_gfx_116+1 + //SEG118 [58] (byte~) current_piece_char#104 ← (byte) current_piece_char#14 -- vbuz1=vbuz2 + lda current_piece_char + sta current_piece_char_104 + //SEG119 [59] call render_moving + //SEG120 [104] phi from main::@37 to render_moving [phi:main::@37->render_moving] + render_moving_from_b37: + //SEG121 [104] phi (byte) current_piece_char#75 = (byte~) current_piece_char#104 [phi:main::@37->render_moving#0] -- register_copy + //SEG122 [104] phi (byte*) current_piece_gfx#62 = (byte*~) current_piece_gfx#116 [phi:main::@37->render_moving#1] -- register_copy + //SEG123 [104] phi (byte) current_xpos#57 = (byte~) current_xpos#126 [phi:main::@37->render_moving#2] -- register_copy + //SEG124 [104] phi (byte) render_screen_render#30 = (byte~) render_screen_render#68 [phi:main::@37->render_moving#3] -- register_copy + //SEG125 [104] phi (byte) current_ypos#11 = (byte~) current_ypos#100 [phi:main::@37->render_moving#4] -- register_copy jsr render_moving - //SEG145 [68] phi from main::@29 to main::@30 [phi:main::@29->main::@30] - b30_from_b29: - jmp b30 - //SEG146 main::@30 - b30: - //SEG147 [69] call render_score + //SEG126 [60] phi from main::@37 to main::@38 [phi:main::@37->main::@38] + b38_from_b37: + jmp b38 + //SEG127 main::@38 + b38: + //SEG128 [61] call render_score jsr render_score - //SEG148 [70] phi from main::@30 to main::@31 [phi:main::@30->main::@31] - b31_from_b30: - jmp b31 - //SEG149 main::@31 - b31: - //SEG150 [71] call render_screen_swap + //SEG129 [62] phi from main::@38 to main::@39 [phi:main::@38->main::@39] + b39_from_b38: + jmp b39 + //SEG130 main::@39 + b39: + //SEG131 [63] call render_screen_swap jsr render_screen_swap - //SEG151 [34] phi from main::@31 to main::@1 [phi:main::@31->main::@1] - b1_from_b31: - //SEG152 [34] phi (byte) level_bcd#20 = (byte) level_bcd#13 [phi:main::@31->main::@1#0] -- register_copy - //SEG153 [34] phi (byte) level#19 = (byte) level#12 [phi:main::@31->main::@1#1] -- register_copy - //SEG154 [34] phi (dword) score_bcd#14 = (dword) score_bcd#10 [phi:main::@31->main::@1#2] -- register_copy - //SEG155 [34] phi (word) lines_bcd#15 = (word) lines_bcd#11 [phi:main::@31->main::@1#3] -- register_copy - //SEG156 [34] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@31->main::@1#4] -- register_copy - //SEG157 [34] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@31->main::@1#5] -- register_copy - //SEG158 [34] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@31->main::@1#6] -- register_copy - //SEG159 [34] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@31->main::@1#7] -- register_copy - //SEG160 [34] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@31->main::@1#8] -- register_copy - //SEG161 [34] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@31->main::@1#9] -- register_copy - //SEG162 [34] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@31->main::@1#10] -- register_copy - //SEG163 [34] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@31->main::@1#11] -- register_copy - //SEG164 [34] phi (byte) current_movedown_slow#12 = (byte) current_movedown_slow#17 [phi:main::@31->main::@1#12] -- register_copy - //SEG165 [34] phi (byte) render_screen_render#17 = (byte) render_screen_render#11 [phi:main::@31->main::@1#13] -- register_copy - //SEG166 [34] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@31->main::@1#14] -- register_copy + //SEG132 [64] phi from main::@11 main::@39 to main::@12 [phi:main::@11/main::@39->main::@12] + b12_from_b11: + b12_from_b39: + //SEG133 [64] phi (byte) render_screen_render#33 = (byte) render_screen_render#17 [phi:main::@11/main::@39->main::@12#0] -- register_copy + //SEG134 [64] phi (byte) render_screen_show#29 = (byte) render_screen_show#17 [phi:main::@11/main::@39->main::@12#1] -- register_copy + jmp b12 + //SEG135 main::@12 + b12: + //SEG136 [65] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + lda #0 + sta BORDERCOL + //SEG137 [34] phi from main::@12 to main::@1 [phi:main::@12->main::@1] + b1_from_b12: + //SEG138 [34] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@12->main::@1#0] -- register_copy + //SEG139 [34] phi (byte) level#10 = (byte) level#16 [phi:main::@12->main::@1#1] -- register_copy + //SEG140 [34] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@12->main::@1#2] -- register_copy + //SEG141 [34] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@12->main::@1#3] -- register_copy + //SEG142 [34] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@12->main::@1#4] -- register_copy + //SEG143 [34] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@12->main::@1#5] -- register_copy + //SEG144 [34] phi (byte) game_over#19 = (byte) game_over#14 [phi:main::@12->main::@1#6] -- register_copy + //SEG145 [34] phi (byte) current_ypos#25 = (byte) current_ypos#17 [phi:main::@12->main::@1#7] -- register_copy + //SEG146 [34] phi (byte) current_xpos#115 = (byte) current_xpos#17 [phi:main::@12->main::@1#8] -- register_copy + //SEG147 [34] phi (byte*) current_piece_gfx#105 = (byte*) current_piece_gfx#16 [phi:main::@12->main::@1#9] -- register_copy + //SEG148 [34] phi (byte) current_orientation#12 = (byte) current_orientation#16 [phi:main::@12->main::@1#10] -- register_copy + //SEG149 [34] phi (byte) current_piece_char#19 = (byte) current_piece_char#14 [phi:main::@12->main::@1#11] -- register_copy + //SEG150 [34] phi (byte*) current_piece#20 = (byte*) current_piece#14 [phi:main::@12->main::@1#12] -- register_copy + //SEG151 [34] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@12->main::@1#13] -- register_copy + //SEG152 [34] phi (byte) render_screen_render#17 = (byte) render_screen_render#33 [phi:main::@12->main::@1#14] -- register_copy + //SEG153 [34] phi (byte) render_screen_show#17 = (byte) render_screen_show#29 [phi:main::@12->main::@1#15] -- register_copy jmp b1 } -//SEG167 render_screen_swap +//SEG154 render_screen_swap render_screen_swap: { - //SEG168 [72] (byte) render_screen_render#11 ← (byte) render_screen_render#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG155 [66] (byte) render_screen_render#11 ← (byte) render_screen_render#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_render eor #$40 sta render_screen_render - //SEG169 [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG156 [67] (byte) render_screen_show#13 ← (byte) render_screen_show#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_show eor #$40 sta render_screen_show jmp breturn - //SEG170 render_screen_swap::@return + //SEG157 render_screen_swap::@return breturn: - //SEG171 [74] return + //SEG158 [68] return rts } -//SEG172 render_score +//SEG159 render_score render_score: { .label score_bytes = score_bcd .const score_offset = $28*5+$1c .const lines_offset = $28*1+$16 .const level_offset = $28*$13+$1f .label screen = 5 - //SEG173 [75] if((byte) render_screen_render#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 -- vbuz1_eq_0_then_la1 + //SEG160 [69] if((byte) render_screen_render#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 -- vbuz1_eq_0_then_la1 lda render_screen_render cmp #0 beq b2_from_render_score - //SEG174 [76] phi from render_score to render_score::@3 [phi:render_score->render_score::@3] + //SEG161 [70] phi from render_score to render_score::@3 [phi:render_score->render_score::@3] b3_from_render_score: jmp b3 - //SEG175 render_score::@3 + //SEG162 render_score::@3 b3: - //SEG176 [77] phi from render_score::@3 to render_score::@2 [phi:render_score::@3->render_score::@2] + //SEG163 [71] phi from render_score::@3 to render_score::@2 [phi:render_score::@3->render_score::@2] b2_from_b3: - //SEG177 [77] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score::@3->render_score::@2#0] -- pbuz1=pbuc1 + //SEG164 [71] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score::@3->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta screen+1 jmp b2 - //SEG178 [77] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] + //SEG165 [71] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] b2_from_render_score: - //SEG179 [77] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 + //SEG166 [71] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta screen+1 jmp b2 - //SEG180 render_score::@2 + //SEG167 render_score::@2 b2: - //SEG181 [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 + //SEG168 [72] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 // (byte*) render_bcd::screen#0 = (byte*) render_score::screen#2 // register copy zp ZP_WORD:5 - //SEG182 [79] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuxx=_deref_pbuc1 + //SEG169 [73] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuxx=_deref_pbuc1 ldx score_bytes+2 - //SEG183 [80] call render_bcd - //SEG184 [97] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] + //SEG170 [74] call render_bcd + //SEG171 [91] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] render_bcd_from_b2: - //SEG185 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy - //SEG186 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@2->render_bcd#1] -- vbuyy=vbuc1 + //SEG172 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy + //SEG173 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@2->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG187 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 + //SEG174 [91] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset sta render_bcd.offset+1 - //SEG188 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy + //SEG175 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy jsr render_bcd jmp b5 - //SEG189 render_score::@5 + //SEG176 render_score::@5 b5: - //SEG190 [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 + //SEG177 [75] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 // (byte*) render_bcd::screen#1 = (byte*) render_score::screen#2 // register copy zp ZP_WORD:5 - //SEG191 [82] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuxx=_deref_pbuc1 + //SEG178 [76] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuxx=_deref_pbuc1 ldx score_bytes+1 - //SEG192 [83] call render_bcd - //SEG193 [97] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] + //SEG179 [77] call render_bcd + //SEG180 [91] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] render_bcd_from_b5: - //SEG194 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@5->render_bcd#0] -- register_copy - //SEG195 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@5->render_bcd#1] -- vbuyy=vbuc1 + //SEG181 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@5->render_bcd#0] -- register_copy + //SEG182 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@5->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG196 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_score::@5->render_bcd#2] -- vwuz1=vbuc1 + //SEG183 [91] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_score::@5->render_bcd#2] -- vwuz1=vbuc1 lda #score_offset+2 sta render_bcd.offset+1 - //SEG197 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@5->render_bcd#3] -- register_copy + //SEG184 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@5->render_bcd#3] -- register_copy jsr render_bcd jmp b6 - //SEG198 render_score::@6 + //SEG185 render_score::@6 b6: - //SEG199 [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 + //SEG186 [78] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 // (byte*) render_bcd::screen#2 = (byte*) render_score::screen#2 // register copy zp ZP_WORD:5 - //SEG200 [85] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuxx=_deref_pbuc1 + //SEG187 [79] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuxx=_deref_pbuc1 ldx score_bytes - //SEG201 [86] call render_bcd - //SEG202 [97] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] + //SEG188 [80] call render_bcd + //SEG189 [91] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] render_bcd_from_b6: - //SEG203 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@6->render_bcd#0] -- register_copy - //SEG204 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@6->render_bcd#1] -- vbuyy=vbuc1 + //SEG190 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@6->render_bcd#0] -- register_copy + //SEG191 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@6->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG205 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:render_score::@6->render_bcd#2] -- vwuz1=vbuc1 + //SEG192 [91] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:render_score::@6->render_bcd#2] -- vwuz1=vbuc1 lda #score_offset+4 sta render_bcd.offset+1 - //SEG206 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@6->render_bcd#3] -- register_copy + //SEG193 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@6->render_bcd#3] -- register_copy jsr render_bcd jmp b7 - //SEG207 render_score::@7 + //SEG194 render_score::@7 b7: - //SEG208 [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#11 -- vbuxx=_hi_vwuz1 + //SEG195 [81] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuxx=_hi_vwuz1 lda lines_bcd+1 tax - //SEG209 [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 + //SEG196 [82] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 // (byte*) render_bcd::screen#3 = (byte*) render_score::screen#2 // register copy zp ZP_WORD:5 - //SEG210 [89] call render_bcd - //SEG211 [97] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] + //SEG197 [83] call render_bcd + //SEG198 [91] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] render_bcd_from_b7: - //SEG212 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@7->render_bcd#0] -- register_copy - //SEG213 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@7->render_bcd#1] -- vbuyy=vbuc1 + //SEG199 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@7->render_bcd#0] -- register_copy + //SEG200 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@7->render_bcd#1] -- vbuyy=vbuc1 ldy #1 - //SEG214 [97] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 + //SEG201 [91] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 lda #lines_offset sta render_bcd.offset+1 - //SEG215 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@7->render_bcd#3] -- register_copy + //SEG202 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@7->render_bcd#3] -- register_copy jsr render_bcd jmp b8 - //SEG216 render_score::@8 + //SEG203 render_score::@8 b8: - //SEG217 [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#11 -- vbuxx=_lo_vwuz1 + //SEG204 [84] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuxx=_lo_vwuz1 lda lines_bcd tax - //SEG218 [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 + //SEG205 [85] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 // (byte*) render_bcd::screen#4 = (byte*) render_score::screen#2 // register copy zp ZP_WORD:5 - //SEG219 [92] call render_bcd - //SEG220 [97] phi from render_score::@8 to render_bcd [phi:render_score::@8->render_bcd] + //SEG206 [86] call render_bcd + //SEG207 [91] phi from render_score::@8 to render_bcd [phi:render_score::@8->render_bcd] render_bcd_from_b8: - //SEG221 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@8->render_bcd#0] -- register_copy - //SEG222 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@8->render_bcd#1] -- vbuyy=vbuc1 + //SEG208 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@8->render_bcd#0] -- register_copy + //SEG209 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@8->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG223 [97] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@8->render_bcd#2] -- vwuz1=vbuc1 + //SEG210 [91] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@8->render_bcd#2] -- vwuz1=vbuc1 lda #lines_offset+1 sta render_bcd.offset+1 - //SEG224 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@8->render_bcd#3] -- register_copy + //SEG211 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@8->render_bcd#3] -- register_copy jsr render_bcd jmp b9 - //SEG225 render_score::@9 + //SEG212 render_score::@9 b9: - //SEG226 [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 + //SEG213 [87] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 // (byte*) render_bcd::screen#5 = (byte*) render_score::screen#2 // register copy zp ZP_WORD:5 - //SEG227 [94] (byte) render_bcd::bcd#5 ← (byte) level_bcd#13 -- vbuxx=vbuz1 + //SEG214 [88] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuxx=vbuz1 ldx level_bcd - //SEG228 [95] call render_bcd - //SEG229 [97] phi from render_score::@9 to render_bcd [phi:render_score::@9->render_bcd] + //SEG215 [89] call render_bcd + //SEG216 [91] phi from render_score::@9 to render_bcd [phi:render_score::@9->render_bcd] render_bcd_from_b9: - //SEG230 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@9->render_bcd#0] -- register_copy - //SEG231 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@9->render_bcd#1] -- vbuyy=vbuc1 + //SEG217 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@9->render_bcd#0] -- register_copy + //SEG218 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@9->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG232 [97] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@9->render_bcd#2] -- vwuz1=vwuc1 + //SEG219 [91] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@9->render_bcd#2] -- vwuz1=vwuc1 lda #level_offset sta render_bcd.offset+1 - //SEG233 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@9->render_bcd#3] -- register_copy + //SEG220 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@9->render_bcd#3] -- register_copy jsr render_bcd jmp breturn - //SEG234 render_score::@return + //SEG221 render_score::@return breturn: - //SEG235 [96] return + //SEG222 [90] return rts } -//SEG236 render_bcd +//SEG223 render_bcd render_bcd: { - .const ZERO_CHAR = $33 + .const ZERO_CHAR = $35 .label screen = 5 .label screen_pos = 7 .label offset = 7 - //SEG237 [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz1 + //SEG224 [92] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz1 lda screen_pos clc adc screen @@ -16248,357 +17392,425 @@ render_bcd: { lda screen_pos+1 adc screen+1 sta screen_pos+1 - //SEG238 [99] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 -- vbuyy_neq_0_then_la1 + //SEG225 [93] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 -- vbuyy_neq_0_then_la1 cpy #0 bne b1_from_render_bcd jmp b2 - //SEG239 render_bcd::@2 + //SEG226 render_bcd::@2 b2: - //SEG240 [100] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG227 [94] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG241 [101] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuaa=vbuc1_plus_vbuaa + //SEG228 [95] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuaa=vbuc1_plus_vbuaa clc adc #ZERO_CHAR - //SEG242 [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuaa + //SEG229 [96] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuaa ldy #0 sta (screen_pos),y - //SEG243 [103] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 + //SEG230 [97] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 inc screen_pos bne !+ inc screen_pos+1 !: - //SEG244 [104] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] + //SEG231 [98] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] b1_from_render_bcd: b1_from_b2: - //SEG245 [104] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy + //SEG232 [98] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy jmp b1 - //SEG246 render_bcd::@1 + //SEG233 render_bcd::@1 b1: - //SEG247 [105] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG234 [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG248 [106] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuaa=vbuc1_plus_vbuaa + //SEG235 [100] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuaa=vbuc1_plus_vbuaa clc adc #ZERO_CHAR - //SEG249 [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuaa + //SEG236 [101] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (screen_pos),y - //SEG250 [108] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 -- pbuz1=_inc_pbuz1 + //SEG237 [102] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 -- pbuz1=_inc_pbuz1 inc screen_pos bne !+ inc screen_pos+1 !: jmp breturn - //SEG251 render_bcd::@return + //SEG238 render_bcd::@return breturn: - //SEG252 [109] return + //SEG239 [103] return rts } -//SEG253 render_moving +//SEG240 render_moving render_moving: { - .label ypos2 = $b + .label ypos2 = $c .label screen_line = 7 - .label xpos = $e - .label i = $d - .label l = $c - .label c = $f - //SEG254 [111] (byte) render_moving::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 - tya + .label xpos = $f + .label i = $e + .label l = $d + //SEG241 [105] (byte) render_moving::ypos2#0 ← (byte) current_ypos#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + txa asl sta ypos2 - //SEG255 [112] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] + //SEG242 [106] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] b1_from_render_moving: - //SEG256 [112] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 + //SEG243 [106] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG257 [112] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 + //SEG244 [106] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 lda #0 sta i - //SEG258 [112] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy + //SEG245 [106] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy jmp b1 - //SEG259 [112] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] + //SEG246 [106] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] b1_from_b3: - //SEG260 [112] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy - //SEG261 [112] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy - //SEG262 [112] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy + //SEG247 [106] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy + //SEG248 [106] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy + //SEG249 [106] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy jmp b1 - //SEG263 render_moving::@1 + //SEG250 render_moving::@1 b1: - //SEG264 [113] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@13 -- vbuz1_gt_vbuc1_then_la1 + //SEG251 [107] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@13 -- vbuz1_gt_vbuc1_then_la1 lda ypos2 cmp #2 beq !+ bcs b13 !: jmp b7 - //SEG265 render_moving::@7 + //SEG252 render_moving::@7 b7: - //SEG266 [114] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG253 [108] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lda #4 clc adc i sta i - //SEG267 [115] phi from render_moving::@5 render_moving::@7 to render_moving::@3 [phi:render_moving::@5/render_moving::@7->render_moving::@3] + //SEG254 [109] phi from render_moving::@5 render_moving::@7 to render_moving::@3 [phi:render_moving::@5/render_moving::@7->render_moving::@3] b3_from_b5: b3_from_b7: - //SEG268 [115] phi (byte) render_moving::i#8 = (byte) render_moving::i#10 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy + //SEG255 [109] phi (byte) render_moving::i#8 = (byte) render_moving::i#10 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy jmp b3 - //SEG269 render_moving::@3 + //SEG256 render_moving::@3 b3: - //SEG270 [116] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG257 [110] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG271 [117] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 + //SEG258 [111] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG272 [118] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG259 [112] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1_from_b3 jmp breturn - //SEG273 render_moving::@return + //SEG260 render_moving::@return breturn: - //SEG274 [119] return + //SEG261 [113] return rts - //SEG275 render_moving::@13 + //SEG262 render_moving::@13 b13: - //SEG276 [120] if((byte) render_moving::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_moving::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG263 [114] if((byte) render_moving::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_moving::@2 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b2 jmp b7 - //SEG277 render_moving::@2 + //SEG264 render_moving::@2 b2: - //SEG278 [121] (byte~) render_moving::$5 ← (byte) render_screen_render#30 + (byte) render_moving::ypos2#2 -- vbuaa=vbuz1_plus_vbuz2 + //SEG265 [115] (byte~) render_moving::$5 ← (byte) render_screen_render#30 + (byte) render_moving::ypos2#2 -- vbuaa=vbuz1_plus_vbuz2 lda render_screen_render_30 clc adc ypos2 - //SEG279 [122] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) -- pbuz1=pptc1_derefidx_vbuaa + //SEG266 [116] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG280 [123] (byte) render_moving::xpos#0 ← (byte) current_xpos#47 -- vbuz1=vbuz2 - lda current_xpos_47 + //SEG267 [117] (byte) render_moving::xpos#0 ← (byte) current_xpos#57 -- vbuz1=vbuz2 + lda current_xpos_57 sta xpos - //SEG281 [124] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] + //SEG268 [118] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] b4_from_b2: - //SEG282 [124] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuz1=vbuc1 - lda #0 - sta c - //SEG283 [124] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy - //SEG284 [124] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy + //SEG269 [118] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuxx=vbuc1 + ldx #0 + //SEG270 [118] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy + //SEG271 [118] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy jmp b4 - //SEG285 [124] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] + //SEG272 [118] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] b4_from_b5: - //SEG286 [124] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy - //SEG287 [124] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy - //SEG288 [124] phi (byte) render_moving::i#4 = (byte) render_moving::i#10 [phi:render_moving::@5->render_moving::@4#2] -- register_copy + //SEG273 [118] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy + //SEG274 [118] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy + //SEG275 [118] phi (byte) render_moving::i#4 = (byte) render_moving::i#10 [phi:render_moving::@5->render_moving::@4#2] -- register_copy jmp b4 - //SEG289 render_moving::@4 + //SEG276 render_moving::@4 b4: - //SEG290 [125] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG277 [119] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#62 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i - lda (current_piece_gfx_53),y - //SEG291 [126] (byte) render_moving::i#10 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 + lda (current_piece_gfx_62),y + //SEG278 [120] (byte) render_moving::i#10 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG292 [127] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 + //SEG279 [121] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 jmp b9 - //SEG293 render_moving::@9 + //SEG280 render_moving::@9 b9: - //SEG294 [128] if((byte) render_moving::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_moving::@5 -- vbuz1_ge_vbuc1_then_la1 + //SEG281 [122] if((byte) render_moving::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_moving::@5 -- vbuz1_ge_vbuc1_then_la1 lda xpos cmp #PLAYFIELD_COLS bcs b5 jmp b10 - //SEG295 render_moving::@10 + //SEG282 render_moving::@10 b10: - //SEG296 [129] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#64 -- pbuz1_derefidx_vbuz2=vbuxx + //SEG283 [123] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#75 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_char_75 ldy xpos - txa sta (screen_line),y jmp b5 - //SEG297 render_moving::@5 + //SEG284 render_moving::@5 b5: - //SEG298 [130] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG285 [124] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG299 [131] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuz1=_inc_vbuz1 - inc c - //SEG300 [132] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuz1_neq_vbuc1_then_la1 - lda c - cmp #4 + //SEG286 [125] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuxx=_inc_vbuxx + inx + //SEG287 [126] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuxx_neq_vbuc1_then_la1 + cpx #4 bne b4_from_b5 jmp b3_from_b5 } -//SEG301 render_playfield +//SEG288 render_playfield render_playfield: { .label screen_line = 5 .label i = $a .label c = $b .label l = 9 - //SEG302 [134] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG289 [128] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG303 [134] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG290 [128] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #PLAYFIELD_COLS*2 sta i - //SEG304 [134] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG291 [128] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #2 sta l jmp b1 - //SEG305 [134] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG292 [128] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG306 [134] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG307 [134] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG293 [128] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG294 [128] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG308 render_playfield::@1 + //SEG295 render_playfield::@1 b1: - //SEG309 [135] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG296 [129] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda l asl - //SEG310 [136] (byte~) render_playfield::$3 ← (byte) render_screen_render#21 + (byte~) render_playfield::$2 -- vbuaa=vbuxx_plus_vbuaa + //SEG297 [130] (byte~) render_playfield::$3 ← (byte) render_screen_render#21 + (byte~) render_playfield::$2 -- vbuaa=vbuxx_plus_vbuaa stx $ff clc adc $ff - //SEG311 [137] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuaa + //SEG298 [131] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG312 [138] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG299 [132] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG313 [138] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 + //SEG300 [132] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG314 [138] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG315 [138] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG301 [132] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG302 [132] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG316 [138] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG303 [132] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG317 [138] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG318 [138] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG319 [138] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG304 [132] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG305 [132] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG306 [132] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG320 render_playfield::@2 + //SEG307 render_playfield::@2 b2: - //SEG321 [139] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG308 [133] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (screen_line),y - //SEG322 [140] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG309 [134] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG323 [141] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG310 [135] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG324 [142] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG311 [136] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG325 [143] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG312 [137] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #PLAYFIELD_COLS-1+1 bne b2_from_b2 jmp b3 - //SEG326 render_playfield::@3 + //SEG313 render_playfield::@3 b3: - //SEG327 [144] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG314 [138] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG328 [145] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG315 [139] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1_from_b3 jmp breturn - //SEG329 render_playfield::@return + //SEG316 render_playfield::@return breturn: - //SEG330 [146] return + //SEG317 [140] return rts } -//SEG331 play_move_rotate +//SEG318 play_movement +play_movement: { + .label render = 9 + .label return = 9 + .label key_event = $28 + //SEG319 [141] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + lda key_event + //SEG320 [142] call play_move_down + jsr play_move_down + //SEG321 [143] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx + txa + jmp b5 + //SEG322 play_movement::@5 + b5: + //SEG323 [144] (byte~) play_movement::$0 ← (byte) play_move_down::return#0 + // (byte~) play_movement::$0 = (byte) play_move_down::return#0 // register copy reg byte a + //SEG324 [145] (byte) play_movement::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_movement::$0 -- vbuz1=vbuc1_plus_vbuaa + clc + adc #0 + sta render + //SEG325 [146] if((byte) game_over#14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 + lda game_over + cmp #0 + beq b1 + //SEG326 [147] phi from play_movement::@5 play_movement::@7 to play_movement::@return [phi:play_movement::@5/play_movement::@7->play_movement::@return] + breturn_from_b5: + breturn_from_b7: + //SEG327 [147] phi (byte) current_xpos#17 = (byte) current_xpos#20 [phi:play_movement::@5/play_movement::@7->play_movement::@return#0] -- register_copy + //SEG328 [147] phi (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#18 [phi:play_movement::@5/play_movement::@7->play_movement::@return#1] -- register_copy + //SEG329 [147] phi (byte) current_orientation#16 = (byte) current_orientation#19 [phi:play_movement::@5/play_movement::@7->play_movement::@return#2] -- register_copy + //SEG330 [147] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@5/play_movement::@7->play_movement::@return#3] -- register_copy + jmp breturn + //SEG331 play_movement::@return + breturn: + //SEG332 [148] return + rts + //SEG333 play_movement::@1 + b1: + //SEG334 [149] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + lda key_event + //SEG335 [150] call play_move_leftright + jsr play_move_leftright + //SEG336 [151] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + // (byte) play_move_leftright::return#0 = (byte) play_move_leftright::return#2 // register copy reg byte a + jmp b6 + //SEG337 play_movement::@6 + b6: + //SEG338 [152] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 + // (byte~) play_movement::$3 = (byte) play_move_leftright::return#0 // register copy reg byte a + //SEG339 [153] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa + clc + adc render + sta render + //SEG340 [154] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + lda key_event + //SEG341 [155] call play_move_rotate + jsr play_move_rotate + //SEG342 [156] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + // (byte) play_move_rotate::return#0 = (byte) play_move_rotate::return#2 // register copy reg byte a + jmp b7 + //SEG343 play_movement::@7 + b7: + //SEG344 [157] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 + // (byte~) play_movement::$4 = (byte) play_move_rotate::return#0 // register copy reg byte a + //SEG345 [158] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa + clc + adc return + sta return + jmp breturn_from_b7 +} +//SEG346 play_move_rotate play_move_rotate: { - .label orientation = 9 - //SEG332 [147] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + .label orientation = $a + //SEG347 [159] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_Z beq b1 jmp b6 - //SEG333 play_move_rotate::@6 + //SEG348 play_move_rotate::@6 b6: - //SEG334 [148] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG349 [160] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_X beq b2 - //SEG335 [149] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + //SEG350 [161] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] breturn_from_b14: breturn_from_b6: - //SEG336 [149] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#1 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG337 [149] phi (byte) current_orientation#19 = (byte) current_orientation#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG338 [149] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG351 [161] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG352 [161] phi (byte) current_orientation#24 = (byte) current_orientation#19 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG353 [161] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #0 jmp breturn - //SEG339 play_move_rotate::@return + //SEG354 play_move_rotate::@return breturn: - //SEG340 [150] return + //SEG355 [162] return rts - //SEG341 play_move_rotate::@2 + //SEG356 play_move_rotate::@2 b2: - //SEG342 [151] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 + //SEG357 [163] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#19 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 lda #$10 clc adc current_orientation - //SEG343 [152] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG358 [164] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation - //SEG344 [153] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + //SEG359 [165] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] b4_from_b1: b4_from_b2: - //SEG345 [153] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + //SEG360 [165] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy jmp b4 - //SEG346 play_move_rotate::@4 + //SEG361 play_move_rotate::@4 b4: - //SEG347 [154] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + //SEG362 [166] (byte) play_collision::xpos#3 ← (byte) current_xpos#24 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG348 [155] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 -- vbuyy=vbuz1 - ldy current_ypos - //SEG349 [156] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG363 [167] (byte) play_collision::ypos#3 ← (byte) current_ypos#17 -- vbuz1=vbuz2 + lda current_ypos + sta play_collision.ypos + //SEG364 [168] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG350 [157] (byte*~) current_piece#79 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG365 [169] (byte*~) current_piece#92 ← (byte*) current_piece#14 -- pbuz1=pbuz2 lda current_piece - sta current_piece_79 + sta current_piece_92 lda current_piece+1 - sta current_piece_79+1 - //SEG351 [158] call play_collision - //SEG352 [166] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + sta current_piece_92+1 + //SEG366 [170] call play_collision + //SEG367 [178] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] play_collision_from_b4: - //SEG353 [166] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy - //SEG354 [166] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy - //SEG355 [166] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy - //SEG356 [166] phi (byte*) current_piece#12 = (byte*~) current_piece#79 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + //SEG368 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG369 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG370 [178] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG371 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#92 [phi:play_move_rotate::@4->play_collision#3] -- register_copy jsr play_collision - //SEG357 [159] (byte) play_collision::return#13 ← (byte) play_collision::return#14 - // (byte) play_collision::return#13 = (byte) play_collision::return#14 // register copy reg byte a + //SEG372 [171] (byte) play_collision::return#14 ← (byte) play_collision::return#15 + // (byte) play_collision::return#14 = (byte) play_collision::return#15 // register copy reg byte a jmp b14 - //SEG358 play_move_rotate::@14 + //SEG373 play_move_rotate::@14 b14: - //SEG359 [160] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 - // (byte~) play_move_rotate::$6 = (byte) play_collision::return#13 // register copy reg byte a - //SEG360 [161] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG374 [172] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#14 + // (byte~) play_move_rotate::$6 = (byte) play_collision::return#14 // register copy reg byte a + //SEG375 [173] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne breturn_from_b14 jmp b11 - //SEG361 play_move_rotate::@11 + //SEG376 play_move_rotate::@11 b11: - //SEG362 [162] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG377 [174] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG363 [163] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + //SEG378 [175] (byte*) current_piece_gfx#6 ← (byte*) current_piece#14 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -16606,38 +17818,39 @@ play_move_rotate: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG364 [149] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG379 [161] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] breturn_from_b11: - //SEG365 [149] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#3 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG366 [149] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG367 [149] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG380 [161] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#6 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG381 [161] phi (byte) current_orientation#24 = (byte) current_orientation#7 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG382 [161] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG368 play_move_rotate::@1 + //SEG383 play_move_rotate::@1 b1: - //SEG369 [164] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 + //SEG384 [176] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#19 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 lda current_orientation sec sbc #$10 - //SEG370 [165] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG385 [177] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation jmp b4_from_b1 } -//SEG371 play_collision +//SEG386 play_collision play_collision: { - .label xpos = $a + .label xpos = $c + .label ypos = $b .label piece_gfx = 5 .label ypos2 = $b .label playfield_line = 7 - .label i = $28 - .label col = $e - .label l = $c - .label i_2 = $d - .label i_3 = $d - .label i_11 = $d - .label i_13 = $d - //SEG372 [167] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx + .label i = $29 + .label col = $f + .label l = $d + .label i_2 = $e + .label i_3 = $e + .label i_11 = $e + .label i_13 = $e + //SEG387 [179] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#16 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -16645,586 +17858,637 @@ play_collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - //SEG373 [168] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 - tya - asl - sta ypos2 - //SEG374 [169] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG388 [180] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + asl ypos2 + //SEG389 [181] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] b1_from_play_collision: - //SEG375 [169] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 + //SEG390 [181] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG376 [169] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 + //SEG391 [181] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG377 [169] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG392 [181] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy jmp b1 - //SEG378 play_collision::@1 + //SEG393 play_collision::@1 b1: - //SEG379 [170] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG394 [182] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG380 [171] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 + //SEG395 [183] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 lda xpos sta col - //SEG381 [172] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG396 [184] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] b2_from_b1: - //SEG382 [172] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 + //SEG397 [184] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG383 [172] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG384 [172] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG398 [184] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG399 [184] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy jmp b2 - //SEG385 play_collision::@2 + //SEG400 play_collision::@2 b2: - //SEG386 [173] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG401 [185] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG387 [174] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG402 [186] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b8 - //SEG388 play_collision::@8 + //SEG403 play_collision::@8 b8: - //SEG389 [175] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG404 [187] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG390 [176] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG405 [188] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] breturn_from_b8: - //SEG391 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG406 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM jmp breturn - //SEG392 play_collision::@return + //SEG407 play_collision::@return breturn: - //SEG393 [177] return + //SEG408 [189] return rts - //SEG394 play_collision::@4 + //SEG409 play_collision::@4 b4: - //SEG395 [178] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG410 [190] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and col - //SEG396 [179] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 + //SEG411 [191] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG397 [176] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG412 [188] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] breturn_from_b4: - //SEG398 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG413 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG399 play_collision::@5 + //SEG414 play_collision::@5 b5: - //SEG400 [180] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG415 [192] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG401 [176] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG416 [188] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] breturn_from_b5: - //SEG402 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG417 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG403 play_collision::@6 + //SEG418 play_collision::@6 b6: - //SEG404 [181] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG419 [193] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG405 [176] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG420 [188] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] breturn_from_b6: - //SEG406 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG421 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG407 play_collision::@3 + //SEG422 play_collision::@3 b3: - //SEG408 [182] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG423 [194] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG409 [183] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx + //SEG424 [195] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG410 [184] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuxx_neq_vbuc1_then_la1 + //SEG425 [196] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b21 jmp b17 - //SEG411 play_collision::@17 + //SEG426 play_collision::@17 b17: - //SEG412 [185] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG427 [197] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG413 [186] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG428 [198] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG414 [187] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG429 [199] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG415 [176] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] + //SEG430 [188] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] breturn_from_b17: - //SEG416 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG431 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG417 play_collision::@20 + //SEG432 play_collision::@20 b20: - //SEG418 [188] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG433 [200] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG419 [169] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] + //SEG434 [181] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] b1_from_b20: - //SEG420 [169] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy - //SEG421 [169] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy - //SEG422 [169] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy + //SEG435 [181] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG436 [181] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG437 [181] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG423 play_collision::@21 + //SEG438 play_collision::@21 b21: - //SEG424 [189] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG439 [201] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG425 [172] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] + //SEG440 [184] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] b2_from_b21: - //SEG426 [172] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy - //SEG427 [172] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy - //SEG428 [172] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy + //SEG441 [184] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG442 [184] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG443 [184] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } -//SEG429 play_move_leftright +//SEG444 play_move_leftright play_move_leftright: { - //SEG430 [190] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG445 [202] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_COMMA beq b1 jmp b6 - //SEG431 play_move_leftright::@6 + //SEG446 play_move_leftright::@6 b6: - //SEG432 [191] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG447 [203] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_DOT bne breturn_from_b6 jmp b7 - //SEG433 play_move_leftright::@7 + //SEG448 play_move_leftright::@7 b7: - //SEG434 [192] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG449 [204] (byte) play_collision::xpos#2 ← (byte) current_xpos#20 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG435 [193] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 -- vbuyy=vbuz1 - ldy current_ypos - //SEG436 [194] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuxx=vbuz1 + //SEG450 [205] (byte) play_collision::ypos#2 ← (byte) current_ypos#17 -- vbuz1=vbuz2 + lda current_ypos + sta play_collision.ypos + //SEG451 [206] (byte) play_collision::orientation#2 ← (byte) current_orientation#19 -- vbuxx=vbuz1 ldx current_orientation - //SEG437 [195] (byte*~) current_piece#78 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG452 [207] (byte*~) current_piece#91 ← (byte*) current_piece#14 -- pbuz1=pbuz2 lda current_piece - sta current_piece_78 + sta current_piece_91 lda current_piece+1 - sta current_piece_78+1 - //SEG438 [196] call play_collision - //SEG439 [166] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + sta current_piece_91+1 + //SEG453 [208] call play_collision + //SEG454 [178] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] play_collision_from_b7: - //SEG440 [166] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy - //SEG441 [166] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy - //SEG442 [166] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy - //SEG443 [166] phi (byte*) current_piece#12 = (byte*~) current_piece#78 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + //SEG455 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG456 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG457 [178] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG458 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#91 [phi:play_move_leftright::@7->play_collision#3] -- register_copy jsr play_collision - //SEG444 [197] (byte) play_collision::return#12 ← (byte) play_collision::return#14 - // (byte) play_collision::return#12 = (byte) play_collision::return#14 // register copy reg byte a + //SEG459 [209] (byte) play_collision::return#13 ← (byte) play_collision::return#15 + // (byte) play_collision::return#13 = (byte) play_collision::return#15 // register copy reg byte a jmp b15 - //SEG445 play_move_leftright::@15 + //SEG460 play_move_leftright::@15 b15: - //SEG446 [198] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 - // (byte~) play_move_leftright::$4 = (byte) play_collision::return#12 // register copy reg byte a - //SEG447 [199] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG461 [210] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 + // (byte~) play_move_leftright::$4 = (byte) play_collision::return#13 // register copy reg byte a + //SEG462 [211] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne breturn_from_b15 jmp b8 - //SEG448 play_move_leftright::@8 + //SEG463 play_move_leftright::@8 b8: - //SEG449 [200] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 -- vbuz1=_inc_vbuz1 + //SEG464 [212] (byte) current_xpos#5 ← ++ (byte) current_xpos#20 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG450 [201] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + //SEG465 [213] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] breturn_from_b11: breturn_from_b8: - //SEG451 [201] phi (byte) current_xpos#19 = (byte) current_xpos#4 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG452 [201] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG466 [213] phi (byte) current_xpos#24 = (byte) current_xpos#7 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG467 [213] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG453 [201] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + //SEG468 [213] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] breturn_from_b14: breturn_from_b15: breturn_from_b6: - //SEG454 [201] phi (byte) current_xpos#19 = (byte) current_xpos#1 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG455 [201] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG469 [213] phi (byte) current_xpos#24 = (byte) current_xpos#20 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG470 [213] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #0 jmp breturn - //SEG456 play_move_leftright::@return + //SEG471 play_move_leftright::@return breturn: - //SEG457 [202] return + //SEG472 [214] return rts - //SEG458 play_move_leftright::@1 + //SEG473 play_move_leftright::@1 b1: - //SEG459 [203] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG474 [215] (byte) play_collision::xpos#1 ← (byte) current_xpos#20 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG460 [204] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 -- vbuyy=vbuz1 - ldy current_ypos - //SEG461 [205] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuxx=vbuz1 + //SEG475 [216] (byte) play_collision::ypos#1 ← (byte) current_ypos#17 -- vbuz1=vbuz2 + lda current_ypos + sta play_collision.ypos + //SEG476 [217] (byte) play_collision::orientation#1 ← (byte) current_orientation#19 -- vbuxx=vbuz1 ldx current_orientation - //SEG462 [206] (byte*~) current_piece#77 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG477 [218] (byte*~) current_piece#90 ← (byte*) current_piece#14 -- pbuz1=pbuz2 lda current_piece - sta current_piece_77 + sta current_piece_90 lda current_piece+1 - sta current_piece_77+1 - //SEG463 [207] call play_collision - //SEG464 [166] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + sta current_piece_90+1 + //SEG478 [219] call play_collision + //SEG479 [178] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] play_collision_from_b1: - //SEG465 [166] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG466 [166] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG467 [166] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG468 [166] phi (byte*) current_piece#12 = (byte*~) current_piece#77 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG480 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG481 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG482 [178] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG483 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#90 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG469 [208] (byte) play_collision::return#1 ← (byte) play_collision::return#14 - // (byte) play_collision::return#1 = (byte) play_collision::return#14 // register copy reg byte a + //SEG484 [220] (byte) play_collision::return#1 ← (byte) play_collision::return#15 + // (byte) play_collision::return#1 = (byte) play_collision::return#15 // register copy reg byte a jmp b14 - //SEG470 play_move_leftright::@14 + //SEG485 play_move_leftright::@14 b14: - //SEG471 [209] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + //SEG486 [221] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 // (byte~) play_move_leftright::$8 = (byte) play_collision::return#1 // register copy reg byte a - //SEG472 [210] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG487 [222] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne breturn_from_b14 jmp b11 - //SEG473 play_move_leftright::@11 + //SEG488 play_move_leftright::@11 b11: - //SEG474 [211] (byte) current_xpos#4 ← -- (byte) current_xpos#1 -- vbuz1=_dec_vbuz1 + //SEG489 [223] (byte) current_xpos#7 ← -- (byte) current_xpos#20 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b11 } -//SEG475 play_move_down +//SEG490 play_move_down play_move_down: { - //SEG476 [212] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 + //SEG491 [224] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG477 [213] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG492 [225] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_SPACE bne b1_from_play_move_down - //SEG478 [214] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG493 [226] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] b8_from_play_move_down: jmp b8 - //SEG479 play_move_down::@8 + //SEG494 play_move_down::@8 b8: - //SEG480 [215] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG495 [227] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] b1_from_b8: - //SEG481 [215] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG496 [227] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #1 jmp b1 - //SEG482 [215] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG497 [227] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG483 [215] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG498 [227] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG484 play_move_down::@1 + //SEG499 play_move_down::@1 b1: - //SEG485 [216] call keyboard_event_pressed - //SEG486 [339] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG500 [228] call keyboard_event_pressed + //SEG501 [360] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG487 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG502 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG488 [217] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + //SEG503 [229] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b17 - //SEG489 play_move_down::@17 + //SEG504 play_move_down::@17 b17: - //SEG490 [218] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + //SEG505 [230] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 // (byte~) play_move_down::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a - //SEG491 [219] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 + //SEG506 [231] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b17 jmp b9 - //SEG492 play_move_down::@9 + //SEG507 play_move_down::@9 b9: - //SEG493 [220] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG508 [232] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_fast bcc b2_from_b9 jmp b10 - //SEG494 play_move_down::@10 + //SEG509 play_move_down::@10 b10: - //SEG495 [221] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + //SEG510 [233] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx inx - //SEG496 [222] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] + //SEG511 [234] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] b2_from_b10: b2_from_b17: b2_from_b9: - //SEG497 [222] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy + //SEG512 [234] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy jmp b2 - //SEG498 play_move_down::@2 + //SEG513 play_move_down::@2 b2: - //SEG499 [223] if((byte) current_movedown_counter#1<(byte) current_movedown_slow#12) goto play_move_down::@4 -- vbuz1_lt_vbuz2_then_la1 + //SEG514 [235] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@4 -- vbuz1_lt_vbuz2_then_la1 lda current_movedown_counter cmp current_movedown_slow bcc b4_from_b2 jmp b11 - //SEG500 play_move_down::@11 + //SEG515 play_move_down::@11 b11: - //SEG501 [224] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + //SEG516 [236] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx inx - //SEG502 [225] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] + //SEG517 [237] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] b4_from_b11: b4_from_b2: - //SEG503 [225] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy + //SEG518 [237] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy jmp b4 - //SEG504 play_move_down::@4 + //SEG519 play_move_down::@4 b4: - //SEG505 [226] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 + //SEG520 [238] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn_from_b4 jmp b12 - //SEG506 play_move_down::@12 + //SEG521 play_move_down::@12 b12: - //SEG507 [227] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 + //SEG522 [239] (byte) play_collision::ypos#0 ← (byte) current_ypos#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny - //SEG508 [228] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 + sty play_collision.ypos + //SEG523 [240] (byte) play_collision::xpos#0 ← (byte) current_xpos#115 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG509 [229] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuxx=vbuz1 + //SEG524 [241] (byte) play_collision::orientation#0 ← (byte) current_orientation#12 -- vbuxx=vbuz1 ldx current_orientation - //SEG510 [230] (byte*~) current_piece#76 ← (byte*) current_piece#16 -- pbuz1=pbuz2 + //SEG525 [242] (byte*~) current_piece#89 ← (byte*) current_piece#20 -- pbuz1=pbuz2 lda current_piece - sta current_piece_76 + sta current_piece_89 lda current_piece+1 - sta current_piece_76+1 - //SEG511 [231] call play_collision - //SEG512 [166] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + sta current_piece_89+1 + //SEG526 [243] call play_collision + //SEG527 [178] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] play_collision_from_b12: - //SEG513 [166] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy - //SEG514 [166] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy - //SEG515 [166] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy - //SEG516 [166] phi (byte*) current_piece#12 = (byte*~) current_piece#76 [phi:play_move_down::@12->play_collision#3] -- register_copy + //SEG528 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG529 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG530 [178] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG531 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#89 [phi:play_move_down::@12->play_collision#3] -- register_copy jsr play_collision - //SEG517 [232] (byte) play_collision::return#0 ← (byte) play_collision::return#14 - // (byte) play_collision::return#0 = (byte) play_collision::return#14 // register copy reg byte a + //SEG532 [244] (byte) play_collision::return#0 ← (byte) play_collision::return#15 + // (byte) play_collision::return#0 = (byte) play_collision::return#15 // register copy reg byte a jmp b18 - //SEG518 play_move_down::@18 + //SEG533 play_move_down::@18 b18: - //SEG519 [233] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + //SEG534 [245] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 // (byte~) play_move_down::$12 = (byte) play_collision::return#0 // register copy reg byte a - //SEG520 [234] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 + //SEG535 [246] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 cmp #COLLISION_NONE beq b6 - //SEG521 [235] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG536 [247] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] b13_from_b18: jmp b13 - //SEG522 play_move_down::@13 + //SEG537 play_move_down::@13 b13: - //SEG523 [236] call play_lock_current + //SEG538 [248] call play_lock_current jsr play_lock_current - //SEG524 [237] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG539 [249] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] b19_from_b13: jmp b19 - //SEG525 play_move_down::@19 + //SEG540 play_move_down::@19 b19: - //SEG526 [238] call play_remove_lines - //SEG527 [299] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + //SEG541 [250] call play_remove_lines + //SEG542 [320] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] play_remove_lines_from_b19: jsr play_remove_lines - //SEG528 [239] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 -- vbuaa=vbuz1 + //SEG543 [251] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 -- vbuaa=vbuz1 lda play_remove_lines.removed jmp b20 - //SEG529 play_move_down::@20 + //SEG544 play_move_down::@20 b20: - //SEG530 [240] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 + //SEG545 [252] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 // (byte) play_move_down::removed#0 = (byte) play_remove_lines::return#0 // register copy reg byte a - //SEG531 [241] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa + //SEG546 [253] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa tax - //SEG532 [242] call play_update_score + //SEG547 [254] call play_update_score jsr play_update_score - //SEG533 [243] phi from play_move_down::@20 to play_move_down::@21 [phi:play_move_down::@20->play_move_down::@21] + //SEG548 [255] phi from play_move_down::@20 to play_move_down::@21 [phi:play_move_down::@20->play_move_down::@21] b21_from_b20: jmp b21 - //SEG534 play_move_down::@21 + //SEG549 play_move_down::@21 b21: - //SEG535 [244] call play_spawn_current - //SEG536 [250] phi from play_move_down::@21 to play_spawn_current [phi:play_move_down::@21->play_spawn_current] + //SEG550 [256] call play_spawn_current + //SEG551 [262] phi from play_move_down::@21 to play_spawn_current [phi:play_move_down::@21->play_spawn_current] play_spawn_current_from_b21: + //SEG552 [262] phi (byte) game_over#69 = (byte) game_over#19 [phi:play_move_down::@21->play_spawn_current#0] -- register_copy jsr play_spawn_current - //SEG537 [245] (byte*~) current_piece#80 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG553 [257] (byte*~) current_piece#94 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG538 [246] phi from play_move_down::@21 to play_move_down::@7 [phi:play_move_down::@21->play_move_down::@7] + //SEG554 [258] phi from play_move_down::@21 to play_move_down::@7 [phi:play_move_down::@21->play_move_down::@7] b7_from_b21: - //SEG539 [246] phi (byte) current_piece_char#20 = (byte) current_piece_char#12 [phi:play_move_down::@21->play_move_down::@7#0] -- register_copy - //SEG540 [246] phi (byte) current_xpos#33 = (byte) current_xpos#23 [phi:play_move_down::@21->play_move_down::@7#1] -- register_copy - //SEG541 [246] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#16 [phi:play_move_down::@21->play_move_down::@7#2] -- register_copy - //SEG542 [246] phi (byte) current_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@21->play_move_down::@7#3] -- vbuz1=vbuc1 + //SEG555 [258] phi (byte) game_over#26 = (byte) game_over#15 [phi:play_move_down::@21->play_move_down::@7#0] -- register_copy + //SEG556 [258] phi (byte) current_xpos#41 = (byte) current_xpos#28 [phi:play_move_down::@21->play_move_down::@7#1] -- register_copy + //SEG557 [258] phi (byte*) current_piece_gfx#33 = (byte*) current_piece_gfx#21 [phi:play_move_down::@21->play_move_down::@7#2] -- register_copy + //SEG558 [258] phi (byte) current_orientation#36 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@21->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG543 [246] phi (byte*) current_piece#20 = (byte*~) current_piece#80 [phi:play_move_down::@21->play_move_down::@7#4] -- register_copy - //SEG544 [246] phi (byte) level_bcd#25 = (byte) level_bcd#15 [phi:play_move_down::@21->play_move_down::@7#5] -- register_copy - //SEG545 [246] phi (byte) current_movedown_slow#31 = (byte) current_movedown_slow#19 [phi:play_move_down::@21->play_move_down::@7#6] -- register_copy - //SEG546 [246] phi (byte) level#24 = (byte) level#14 [phi:play_move_down::@21->play_move_down::@7#7] -- register_copy - //SEG547 [246] phi (dword) score_bcd#20 = (dword) score_bcd#12 [phi:play_move_down::@21->play_move_down::@7#8] -- register_copy - //SEG548 [246] phi (word) lines_bcd#20 = (word) lines_bcd#13 [phi:play_move_down::@21->play_move_down::@7#9] -- register_copy - //SEG549 [246] phi (byte) current_ypos#29 = (byte) current_ypos#18 [phi:play_move_down::@21->play_move_down::@7#10] -- register_copy + //SEG559 [258] phi (byte) current_piece_char#27 = (byte) current_piece_char#16 [phi:play_move_down::@21->play_move_down::@7#4] -- register_copy + //SEG560 [258] phi (byte*) current_piece#27 = (byte*~) current_piece#94 [phi:play_move_down::@21->play_move_down::@7#5] -- register_copy + //SEG561 [258] phi (byte) level_bcd#32 = (byte) level_bcd#19 [phi:play_move_down::@21->play_move_down::@7#6] -- register_copy + //SEG562 [258] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#23 [phi:play_move_down::@21->play_move_down::@7#7] -- register_copy + //SEG563 [258] phi (byte) level#31 = (byte) level#18 [phi:play_move_down::@21->play_move_down::@7#8] -- register_copy + //SEG564 [258] phi (dword) score_bcd#27 = (dword) score_bcd#16 [phi:play_move_down::@21->play_move_down::@7#9] -- register_copy + //SEG565 [258] phi (word) lines_bcd#27 = (word) lines_bcd#17 [phi:play_move_down::@21->play_move_down::@7#10] -- register_copy + //SEG566 [258] phi (byte) current_ypos#36 = (byte) current_ypos#22 [phi:play_move_down::@21->play_move_down::@7#11] -- register_copy jmp b7 - //SEG550 play_move_down::@7 + //SEG567 play_move_down::@7 b7: - //SEG551 [247] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG568 [259] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG552 [247] phi (byte) current_piece_char#1 = (byte) current_piece_char#20 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG553 [247] phi (byte) current_xpos#1 = (byte) current_xpos#33 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG554 [247] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#26 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG555 [247] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG556 [247] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG557 [247] phi (byte) level_bcd#13 = (byte) level_bcd#25 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG558 [247] phi (byte) current_movedown_slow#17 = (byte) current_movedown_slow#31 [phi:play_move_down::@7->play_move_down::@return#6] -- register_copy - //SEG559 [247] phi (byte) level#12 = (byte) level#24 [phi:play_move_down::@7->play_move_down::@return#7] -- register_copy - //SEG560 [247] phi (dword) score_bcd#10 = (dword) score_bcd#20 [phi:play_move_down::@7->play_move_down::@return#8] -- register_copy - //SEG561 [247] phi (word) lines_bcd#11 = (word) lines_bcd#20 [phi:play_move_down::@7->play_move_down::@return#9] -- register_copy - //SEG562 [247] phi (byte) current_ypos#13 = (byte) current_ypos#29 [phi:play_move_down::@7->play_move_down::@return#10] -- register_copy - //SEG563 [247] phi (byte) current_movedown_counter#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#11] -- vbuz1=vbuc1 + //SEG569 [259] phi (byte) game_over#14 = (byte) game_over#26 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG570 [259] phi (byte) current_xpos#20 = (byte) current_xpos#41 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG571 [259] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#33 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG572 [259] phi (byte) current_orientation#19 = (byte) current_orientation#36 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG573 [259] phi (byte) current_piece_char#14 = (byte) current_piece_char#27 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG574 [259] phi (byte*) current_piece#14 = (byte*) current_piece#27 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG575 [259] phi (byte) level_bcd#17 = (byte) level_bcd#32 [phi:play_move_down::@7->play_move_down::@return#6] -- register_copy + //SEG576 [259] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#38 [phi:play_move_down::@7->play_move_down::@return#7] -- register_copy + //SEG577 [259] phi (byte) level#16 = (byte) level#31 [phi:play_move_down::@7->play_move_down::@return#8] -- register_copy + //SEG578 [259] phi (dword) score_bcd#14 = (dword) score_bcd#27 [phi:play_move_down::@7->play_move_down::@return#9] -- register_copy + //SEG579 [259] phi (word) lines_bcd#15 = (word) lines_bcd#27 [phi:play_move_down::@7->play_move_down::@return#10] -- register_copy + //SEG580 [259] phi (byte) current_ypos#17 = (byte) current_ypos#36 [phi:play_move_down::@7->play_move_down::@return#11] -- register_copy + //SEG581 [259] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#12] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG564 [247] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#12] -- vbuxx=vbuc1 + //SEG582 [259] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#13] -- vbuxx=vbuc1 ldx #1 jmp breturn - //SEG565 [247] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG583 [259] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG566 [247] phi (byte) current_piece_char#1 = (byte) current_piece_char#15 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG567 [247] phi (byte) current_xpos#1 = (byte) current_xpos#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG568 [247] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#20 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG569 [247] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG570 [247] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG571 [247] phi (byte) level_bcd#13 = (byte) level_bcd#20 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG572 [247] phi (byte) current_movedown_slow#17 = (byte) current_movedown_slow#12 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG573 [247] phi (byte) level#12 = (byte) level#19 [phi:play_move_down::@4->play_move_down::@return#7] -- register_copy - //SEG574 [247] phi (dword) score_bcd#10 = (dword) score_bcd#14 [phi:play_move_down::@4->play_move_down::@return#8] -- register_copy - //SEG575 [247] phi (word) lines_bcd#11 = (word) lines_bcd#15 [phi:play_move_down::@4->play_move_down::@return#9] -- register_copy - //SEG576 [247] phi (byte) current_ypos#13 = (byte) current_ypos#21 [phi:play_move_down::@4->play_move_down::@return#10] -- register_copy - //SEG577 [247] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#11] -- register_copy - //SEG578 [247] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#12] -- vbuxx=vbuc1 + //SEG584 [259] phi (byte) game_over#14 = (byte) game_over#19 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG585 [259] phi (byte) current_xpos#20 = (byte) current_xpos#115 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG586 [259] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#105 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG587 [259] phi (byte) current_orientation#19 = (byte) current_orientation#12 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG588 [259] phi (byte) current_piece_char#14 = (byte) current_piece_char#19 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG589 [259] phi (byte*) current_piece#14 = (byte*) current_piece#20 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG590 [259] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG591 [259] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@4->play_move_down::@return#7] -- register_copy + //SEG592 [259] phi (byte) level#16 = (byte) level#10 [phi:play_move_down::@4->play_move_down::@return#8] -- register_copy + //SEG593 [259] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@4->play_move_down::@return#9] -- register_copy + //SEG594 [259] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@4->play_move_down::@return#10] -- register_copy + //SEG595 [259] phi (byte) current_ypos#17 = (byte) current_ypos#25 [phi:play_move_down::@4->play_move_down::@return#11] -- register_copy + //SEG596 [259] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@4->play_move_down::@return#12] -- register_copy + //SEG597 [259] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#13] -- vbuxx=vbuc1 ldx #0 jmp breturn - //SEG579 play_move_down::@return + //SEG598 play_move_down::@return breturn: - //SEG580 [248] return + //SEG599 [260] return rts - //SEG581 play_move_down::@6 + //SEG600 play_move_down::@6 b6: - //SEG582 [249] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 -- vbuz1=_inc_vbuz1 + //SEG601 [261] (byte) current_ypos#2 ← ++ (byte) current_ypos#25 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG583 [246] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG602 [258] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG584 [246] phi (byte) current_piece_char#20 = (byte) current_piece_char#15 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG585 [246] phi (byte) current_xpos#33 = (byte) current_xpos#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG586 [246] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#20 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG587 [246] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG588 [246] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG589 [246] phi (byte) level_bcd#25 = (byte) level_bcd#20 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy - //SEG590 [246] phi (byte) current_movedown_slow#31 = (byte) current_movedown_slow#12 [phi:play_move_down::@6->play_move_down::@7#6] -- register_copy - //SEG591 [246] phi (byte) level#24 = (byte) level#19 [phi:play_move_down::@6->play_move_down::@7#7] -- register_copy - //SEG592 [246] phi (dword) score_bcd#20 = (dword) score_bcd#14 [phi:play_move_down::@6->play_move_down::@7#8] -- register_copy - //SEG593 [246] phi (word) lines_bcd#20 = (word) lines_bcd#15 [phi:play_move_down::@6->play_move_down::@7#9] -- register_copy - //SEG594 [246] phi (byte) current_ypos#29 = (byte) current_ypos#0 [phi:play_move_down::@6->play_move_down::@7#10] -- register_copy + //SEG603 [258] phi (byte) game_over#26 = (byte) game_over#19 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG604 [258] phi (byte) current_xpos#41 = (byte) current_xpos#115 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG605 [258] phi (byte*) current_piece_gfx#33 = (byte*) current_piece_gfx#105 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG606 [258] phi (byte) current_orientation#36 = (byte) current_orientation#12 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG607 [258] phi (byte) current_piece_char#27 = (byte) current_piece_char#19 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG608 [258] phi (byte*) current_piece#27 = (byte*) current_piece#20 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG609 [258] phi (byte) level_bcd#32 = (byte) level_bcd#11 [phi:play_move_down::@6->play_move_down::@7#6] -- register_copy + //SEG610 [258] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#14 [phi:play_move_down::@6->play_move_down::@7#7] -- register_copy + //SEG611 [258] phi (byte) level#31 = (byte) level#10 [phi:play_move_down::@6->play_move_down::@7#8] -- register_copy + //SEG612 [258] phi (dword) score_bcd#27 = (dword) score_bcd#18 [phi:play_move_down::@6->play_move_down::@7#9] -- register_copy + //SEG613 [258] phi (word) lines_bcd#27 = (word) lines_bcd#19 [phi:play_move_down::@6->play_move_down::@7#10] -- register_copy + //SEG614 [258] phi (byte) current_ypos#36 = (byte) current_ypos#2 [phi:play_move_down::@6->play_move_down::@7#11] -- register_copy jmp b7 } -//SEG595 play_spawn_current +//SEG615 play_spawn_current play_spawn_current: { .label _3 = 4 - //SEG596 [251] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] + //SEG616 [263] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] b1_from_play_spawn_current: - //SEG597 [251] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuxx=vbuc1 + //SEG617 [263] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuxx=vbuc1 ldx #7 jmp b1 - //SEG598 play_spawn_current::@1 + //SEG618 play_spawn_current::@1 b1: - //SEG599 [252] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 + //SEG619 [264] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 cpx #7 beq b2_from_b1 jmp b3 - //SEG600 play_spawn_current::@3 + //SEG620 play_spawn_current::@3 b3: - //SEG601 [253] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG621 [265] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta _3 - //SEG602 [254] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + //SEG622 [266] (byte) current_piece_char#16 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + lda PIECES_CHARS,x + sta current_piece_char + //SEG623 [267] (byte*) current_piece_gfx#21 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 ldy _3 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG603 [255] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG624 [268] (byte) current_xpos#28 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_X,x sta current_xpos - //SEG604 [256] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG625 [269] (byte) current_ypos#22 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_Y,x sta current_ypos - //SEG605 [257] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx - lda PIECES_CHARS,x - sta current_piece_char + //SEG626 [270] (byte) play_collision::xpos#4 ← (byte) current_xpos#28 -- vbuz1=vbuz2 + lda current_xpos + sta play_collision.xpos + //SEG627 [271] (byte) play_collision::ypos#4 ← (byte) current_ypos#22 -- vbuz1=vbuz2 + lda current_ypos + sta play_collision.ypos + //SEG628 [272] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + ldy _3 + lda PIECES,y + sta current_piece_93 + lda PIECES+1,y + sta current_piece_93+1 + //SEG629 [273] call play_collision + //SEG630 [178] phi from play_spawn_current::@3 to play_collision [phi:play_spawn_current::@3->play_collision] + play_collision_from_b3: + //SEG631 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current::@3->play_collision#0] -- register_copy + //SEG632 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#4 [phi:play_spawn_current::@3->play_collision#1] -- register_copy + //SEG633 [178] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current::@3->play_collision#2] -- vbuxx=vbuc1 + ldx #0 + //SEG634 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#93 [phi:play_spawn_current::@3->play_collision#3] -- register_copy + jsr play_collision + //SEG635 [274] (byte) play_collision::return#10 ← (byte) play_collision::return#15 + // (byte) play_collision::return#10 = (byte) play_collision::return#15 // register copy reg byte a + jmp b10 + //SEG636 play_spawn_current::@10 + b10: + //SEG637 [275] (byte~) play_spawn_current::$5 ← (byte) play_collision::return#10 + // (byte~) play_spawn_current::$5 = (byte) play_collision::return#10 // register copy reg byte a + //SEG638 [276] if((byte~) play_spawn_current::$5!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@11 -- vbuaa_neq_vbuc1_then_la1 + cmp #COLLISION_PLAYFIELD + bne b11_from_b10 + //SEG639 [277] phi from play_spawn_current::@10 to play_spawn_current::@return [phi:play_spawn_current::@10->play_spawn_current::@return] + breturn_from_b10: + //SEG640 [277] phi (byte) game_over#15 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@10->play_spawn_current::@return#0] -- vbuz1=vbuc1 + lda #1 + sta game_over jmp breturn - //SEG606 play_spawn_current::@return + //SEG641 play_spawn_current::@return breturn: - //SEG607 [258] return + //SEG642 [278] return rts - //SEG608 [259] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG643 [279] phi from play_spawn_current::@10 to play_spawn_current::@11 [phi:play_spawn_current::@10->play_spawn_current::@11] + b11_from_b10: + jmp b11 + //SEG644 play_spawn_current::@11 + b11: + //SEG645 [277] phi from play_spawn_current::@11 to play_spawn_current::@return [phi:play_spawn_current::@11->play_spawn_current::@return] + breturn_from_b11: + //SEG646 [277] phi (byte) game_over#15 = (byte) game_over#69 [phi:play_spawn_current::@11->play_spawn_current::@return#0] -- register_copy + jmp breturn + //SEG647 [280] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] b2_from_b1: jmp b2 - //SEG609 play_spawn_current::@2 + //SEG648 play_spawn_current::@2 b2: - //SEG610 [260] call sid_rnd + //SEG649 [281] call sid_rnd jsr sid_rnd - //SEG611 [261] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + //SEG650 [282] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 // (byte) sid_rnd::return#2 = (byte) sid_rnd::return#0 // register copy reg byte a - jmp b7 - //SEG612 play_spawn_current::@7 - b7: - //SEG613 [262] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + jmp b9 + //SEG651 play_spawn_current::@9 + b9: + //SEG652 [283] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 // (byte~) play_spawn_current::$1 = (byte) sid_rnd::return#2 // register copy reg byte a - //SEG614 [263] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 + //SEG653 [284] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 and #7 tax - //SEG615 [251] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] - b1_from_b7: - //SEG616 [251] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@7->play_spawn_current::@1#0] -- register_copy + //SEG654 [263] phi from play_spawn_current::@9 to play_spawn_current::@1 [phi:play_spawn_current::@9->play_spawn_current::@1] + b1_from_b9: + //SEG655 [263] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@9->play_spawn_current::@1#0] -- register_copy jmp b1 } -//SEG617 sid_rnd +//SEG656 sid_rnd sid_rnd: { - //SEG618 [264] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG657 [285] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC jmp breturn - //SEG619 sid_rnd::@return + //SEG658 sid_rnd::@return breturn: - //SEG620 [265] return + //SEG659 [286] return rts } -//SEG621 play_update_score +//SEG660 play_update_score play_update_score: { .label lines_before = 4 - .label add_bcd = $29 - //SEG622 [266] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 + .label add_bcd = $2a + //SEG661 [287] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn_from_play_update_score jmp b3 - //SEG623 play_update_score::@3 + //SEG662 play_update_score::@3 b3: - //SEG624 [267] (byte~) play_update_score::$2 ← < (word) lines_bcd#15 -- vbuaa=_lo_vwuz1 + //SEG663 [288] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG625 [268] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuaa_band_vbuc1 + //SEG664 [289] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuaa_band_vbuc1 and #$f0 sta lines_before - //SEG626 [269] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG665 [290] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG627 [270] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuaa + //SEG666 [291] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuaa tay lda score_add_bcd,y sta add_bcd @@ -17234,9 +18498,9 @@ play_update_score: { sta add_bcd+2 lda score_add_bcd+3,y sta add_bcd+3 - //SEG628 asm { sed } + //SEG667 asm { sed } sed - //SEG629 [272] (word) lines_bcd#23 ← (word) lines_bcd#15 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG668 [293] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc lines_bcd @@ -17244,7 +18508,7 @@ play_update_score: { lda #0 adc lines_bcd+1 sta lines_bcd+1 - //SEG630 [273] (dword) score_bcd#23 ← (dword) score_bcd#14 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 + //SEG669 [294] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 lda score_bcd clc adc add_bcd @@ -17258,107 +18522,107 @@ play_update_score: { lda score_bcd+3 adc add_bcd+3 sta score_bcd+3 - //SEG631 asm { cld } + //SEG670 asm { cld } cld - //SEG632 [275] (byte~) play_update_score::$5 ← < (word) lines_bcd#23 -- vbuaa=_lo_vwuz1 + //SEG671 [296] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG633 [276] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 -- vbuaa=vbuaa_band_vbuc1 + //SEG672 [297] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 -- vbuaa=vbuaa_band_vbuc1 and #$f0 - //SEG634 [277] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 + //SEG673 [298] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 cmp lines_before beq breturn_from_b3 - //SEG635 [278] phi from play_update_score::@3 to play_update_score::@4 [phi:play_update_score::@3->play_update_score::@4] + //SEG674 [299] phi from play_update_score::@3 to play_update_score::@4 [phi:play_update_score::@3->play_update_score::@4] b4_from_b3: jmp b4 - //SEG636 play_update_score::@4 + //SEG675 play_update_score::@4 b4: - //SEG637 [279] call play_increase_level + //SEG676 [300] call play_increase_level jsr play_increase_level - //SEG638 [280] phi from play_update_score play_update_score::@3 play_update_score::@4 to play_update_score::@return [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return] + //SEG677 [301] phi from play_update_score play_update_score::@3 play_update_score::@4 to play_update_score::@return [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return] breturn_from_play_update_score: breturn_from_b3: breturn_from_b4: - //SEG639 [280] phi (byte) level_bcd#15 = (byte) level_bcd#20 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#0] -- register_copy - //SEG640 [280] phi (byte) current_movedown_slow#19 = (byte) current_movedown_slow#12 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#1] -- register_copy - //SEG641 [280] phi (byte) level#14 = (byte) level#19 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#2] -- register_copy - //SEG642 [280] phi (dword) score_bcd#12 = (dword) score_bcd#14 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#3] -- register_copy - //SEG643 [280] phi (word) lines_bcd#13 = (word) lines_bcd#15 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#4] -- register_copy + //SEG678 [301] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#0] -- register_copy + //SEG679 [301] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#1] -- register_copy + //SEG680 [301] phi (byte) level#18 = (byte) level#10 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#2] -- register_copy + //SEG681 [301] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#3] -- register_copy + //SEG682 [301] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#4] -- register_copy jmp breturn - //SEG644 play_update_score::@return + //SEG683 play_update_score::@return breturn: - //SEG645 [281] return + //SEG684 [302] return rts } -//SEG646 play_increase_level +//SEG685 play_increase_level play_increase_level: { - //SEG647 [282] (byte) level#16 ← ++ (byte) level#19 -- vbuz1=_inc_vbuz1 + //SEG686 [303] (byte) level#20 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 inc level - //SEG648 [283] if((byte) level#16>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 -- vbuz1_gt_vbuc1_then_la1 + //SEG687 [304] if((byte) level#20>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 -- vbuz1_gt_vbuc1_then_la1 lda level cmp #$1d beq !+ bcs b2_from_play_increase_level !: jmp b5 - //SEG649 play_increase_level::@5 + //SEG688 play_increase_level::@5 b5: - //SEG650 [284] (byte) current_movedown_slow#8 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#16) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG689 [305] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#20) -- vbuz1=pbuc1_derefidx_vbuz2 ldy level lda MOVEDOWN_SLOW_SPEEDS,y sta current_movedown_slow - //SEG651 [285] phi from play_increase_level::@5 to play_increase_level::@2 [phi:play_increase_level::@5->play_increase_level::@2] + //SEG690 [306] phi from play_increase_level::@5 to play_increase_level::@2 [phi:play_increase_level::@5->play_increase_level::@2] b2_from_b5: - //SEG652 [285] phi (byte) current_movedown_slow#60 = (byte) current_movedown_slow#8 [phi:play_increase_level::@5->play_increase_level::@2#0] -- register_copy + //SEG691 [306] phi (byte) current_movedown_slow#68 = (byte) current_movedown_slow#10 [phi:play_increase_level::@5->play_increase_level::@2#0] -- register_copy jmp b2 - //SEG653 [285] phi from play_increase_level to play_increase_level::@2 [phi:play_increase_level->play_increase_level::@2] + //SEG692 [306] phi from play_increase_level to play_increase_level::@2 [phi:play_increase_level->play_increase_level::@2] b2_from_play_increase_level: - //SEG654 [285] phi (byte) current_movedown_slow#60 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@2#0] -- vbuz1=vbuc1 + //SEG693 [306] phi (byte) current_movedown_slow#68 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@2#0] -- vbuz1=vbuc1 lda #1 sta current_movedown_slow jmp b2 - //SEG655 play_increase_level::@2 + //SEG694 play_increase_level::@2 b2: - //SEG656 [286] (byte) level_bcd#17 ← ++ (byte) level_bcd#20 -- vbuz1=_inc_vbuz1 + //SEG695 [307] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 inc level_bcd - //SEG657 [287] (byte~) play_increase_level::$1 ← (byte) level_bcd#17 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG696 [308] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and level_bcd - //SEG658 [288] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 -- vbuaa_neq_vbuc1_then_la1 + //SEG697 [309] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 -- vbuaa_neq_vbuc1_then_la1 cmp #$a bne b3_from_b2 jmp b7 - //SEG659 play_increase_level::@7 + //SEG698 play_increase_level::@7 b7: - //SEG660 [289] (byte) level_bcd#6 ← (byte) level_bcd#17 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 + //SEG699 [310] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 lda #6 clc adc level_bcd sta level_bcd - //SEG661 [290] phi from play_increase_level::@2 play_increase_level::@7 to play_increase_level::@3 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3] + //SEG700 [311] phi from play_increase_level::@2 play_increase_level::@7 to play_increase_level::@3 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3] b3_from_b2: b3_from_b7: - //SEG662 [290] phi (byte) level_bcd#55 = (byte) level_bcd#17 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3#0] -- register_copy + //SEG701 [311] phi (byte) level_bcd#63 = (byte) level_bcd#21 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3#0] -- register_copy jmp b3 - //SEG663 play_increase_level::@3 + //SEG702 play_increase_level::@3 b3: - //SEG664 asm { sed } + //SEG703 asm { sed } sed - //SEG665 [292] phi from play_increase_level::@3 to play_increase_level::@4 [phi:play_increase_level::@3->play_increase_level::@4] + //SEG704 [313] phi from play_increase_level::@3 to play_increase_level::@4 [phi:play_increase_level::@3->play_increase_level::@4] b4_from_b3: - //SEG666 [292] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@3->play_increase_level::@4#0] -- vbuxx=vbuc1 + //SEG705 [313] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@3->play_increase_level::@4#0] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG667 [292] phi from play_increase_level::@4 to play_increase_level::@4 [phi:play_increase_level::@4->play_increase_level::@4] + //SEG706 [313] phi from play_increase_level::@4 to play_increase_level::@4 [phi:play_increase_level::@4->play_increase_level::@4] b4_from_b4: - //SEG668 [292] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@4->play_increase_level::@4#0] -- register_copy + //SEG707 [313] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@4->play_increase_level::@4#0] -- register_copy jmp b4 - //SEG669 play_increase_level::@4 + //SEG708 play_increase_level::@4 b4: - //SEG670 [293] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG709 [314] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG671 [294] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa + //SEG710 [315] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa tay clc lda score_add_bcd,y @@ -17373,164 +18637,164 @@ play_increase_level: { lda score_add_bcd+3,y adc SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG672 [295] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx + //SEG711 [316] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx inx - //SEG673 [296] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG712 [317] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b4_from_b4 jmp b8 - //SEG674 play_increase_level::@8 + //SEG713 play_increase_level::@8 b8: - //SEG675 asm { cld } + //SEG714 asm { cld } cld jmp breturn - //SEG676 play_increase_level::@return + //SEG715 play_increase_level::@return breturn: - //SEG677 [298] return + //SEG716 [319] return rts } -//SEG678 play_remove_lines +//SEG717 play_remove_lines play_remove_lines: { .label c = $c .label x = $a .label y = 4 .label removed = 9 .label full = $b - //SEG679 [300] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG718 [321] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] b1_from_play_remove_lines: - //SEG680 [300] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG719 [321] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta removed - //SEG681 [300] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG720 [321] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG682 [300] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 + //SEG721 [321] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG683 [300] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 + //SEG722 [321] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 jmp b1 - //SEG684 [300] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] + //SEG723 [321] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] b1_from_b4: - //SEG685 [300] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#7 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy - //SEG686 [300] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy - //SEG687 [300] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy - //SEG688 [300] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#3] -- register_copy + //SEG724 [321] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#7 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy + //SEG725 [321] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy + //SEG726 [321] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy + //SEG727 [321] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#3] -- register_copy jmp b1 - //SEG689 play_remove_lines::@1 + //SEG728 play_remove_lines::@1 b1: - //SEG690 [301] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG729 [322] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] b2_from_b1: - //SEG691 [301] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG730 [322] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG692 [301] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG731 [322] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG693 [301] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy - //SEG694 [301] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy + //SEG732 [322] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG733 [322] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG695 [301] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG734 [322] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] b2_from_b3: - //SEG696 [301] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy - //SEG697 [301] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy - //SEG698 [301] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy - //SEG699 [301] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy + //SEG735 [322] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG736 [322] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG737 [322] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG738 [322] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG700 play_remove_lines::@2 + //SEG739 play_remove_lines::@2 b2: - //SEG701 [302] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG740 [323] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy lda playfield,y sta c - //SEG702 [303] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG741 [324] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG703 [304] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 -- vbuz1_neq_0_then_la1 + //SEG742 [325] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b18_from_b2 - //SEG704 [305] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG743 [326] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] b3_from_b2: - //SEG705 [305] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG744 [326] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full jmp b3 - //SEG706 play_remove_lines::@3 + //SEG745 play_remove_lines::@3 b3: - //SEG707 [306] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG746 [327] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda c sta playfield,x - //SEG708 [307] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG747 [328] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG709 [308] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG748 [329] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG710 [309] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG749 [330] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2_from_b3 jmp b9 - //SEG711 play_remove_lines::@9 + //SEG750 play_remove_lines::@9 b9: - //SEG712 [310] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG751 [331] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4_from_b9 jmp b10 - //SEG713 play_remove_lines::@10 + //SEG752 play_remove_lines::@10 b10: - //SEG714 [311] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG753 [332] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #PLAYFIELD_COLS tax - //SEG715 [312] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 + //SEG754 [333] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 inc removed - //SEG716 [313] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] + //SEG755 [334] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] b4_from_b10: b4_from_b9: - //SEG717 [313] phi (byte) play_remove_lines::removed#7 = (byte) play_remove_lines::removed#1 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy - //SEG718 [313] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#1] -- register_copy + //SEG756 [334] phi (byte) play_remove_lines::removed#7 = (byte) play_remove_lines::removed#1 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy + //SEG757 [334] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#1] -- register_copy jmp b4 - //SEG719 play_remove_lines::@4 + //SEG758 play_remove_lines::@4 b4: - //SEG720 [314] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG759 [335] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG721 [315] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG760 [336] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1_from_b4 - //SEG722 [316] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] + //SEG761 [337] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] b5_from_b4: b5_from_b6: - //SEG723 [316] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy + //SEG762 [337] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy jmp b5 - //SEG724 play_remove_lines::@5 + //SEG763 play_remove_lines::@5 b5: - //SEG725 [317] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG764 [338] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b6 jmp breturn - //SEG726 play_remove_lines::@return + //SEG765 play_remove_lines::@return breturn: - //SEG727 [318] return + //SEG766 [339] return rts - //SEG728 play_remove_lines::@6 + //SEG767 play_remove_lines::@6 b6: - //SEG729 [319] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG768 [340] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta playfield,x - //SEG730 [320] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG769 [341] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b5_from_b6 - //SEG731 [321] phi from play_remove_lines::@2 to play_remove_lines::@18 [phi:play_remove_lines::@2->play_remove_lines::@18] + //SEG770 [342] phi from play_remove_lines::@2 to play_remove_lines::@18 [phi:play_remove_lines::@2->play_remove_lines::@18] b18_from_b2: jmp b18 - //SEG732 play_remove_lines::@18 + //SEG771 play_remove_lines::@18 b18: - //SEG733 [305] phi from play_remove_lines::@18 to play_remove_lines::@3 [phi:play_remove_lines::@18->play_remove_lines::@3] + //SEG772 [326] phi from play_remove_lines::@18 to play_remove_lines::@3 [phi:play_remove_lines::@18->play_remove_lines::@3] b3_from_b18: - //SEG734 [305] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@18->play_remove_lines::@3#0] -- register_copy + //SEG773 [326] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@18->play_remove_lines::@3#0] -- register_copy jmp b3 } -//SEG735 play_lock_current +//SEG774 play_lock_current play_lock_current: { .label ypos2 = $10 .label playfield_line = 5 @@ -17541,530 +18805,531 @@ play_lock_current: { .label i_3 = 9 .label i_7 = 9 .label i_9 = 9 - //SEG736 [322] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG775 [343] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#25 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG737 [323] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG776 [344] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] b1_from_play_lock_current: - //SEG738 [323] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 + //SEG777 [344] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG739 [323] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 + //SEG778 [344] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG740 [323] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG779 [344] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG741 play_lock_current::@1 + //SEG780 play_lock_current::@1 b1: - //SEG742 [324] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG781 [345] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG743 [325] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 + //SEG782 [346] (byte) play_lock_current::col#0 ← (byte) current_xpos#115 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG744 [326] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG783 [347] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] b2_from_b1: - //SEG745 [326] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 + //SEG784 [347] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG746 [326] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy - //SEG747 [326] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy + //SEG785 [347] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG786 [347] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy jmp b2 - //SEG748 play_lock_current::@2 + //SEG787 play_lock_current::@2 b2: - //SEG749 [327] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG788 [348] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG750 [328] if(*((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG789 [349] if(*((byte*) current_piece_gfx#105 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG751 play_lock_current::@4 + //SEG790 play_lock_current::@4 b4: - //SEG752 [329] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG791 [350] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#19 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy col sta (playfield_line),y jmp b3 - //SEG753 play_lock_current::@3 + //SEG792 play_lock_current::@3 b3: - //SEG754 [330] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG793 [351] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG755 [331] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG794 [352] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG756 [332] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG795 [353] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b8 jmp b5 - //SEG757 play_lock_current::@5 + //SEG796 play_lock_current::@5 b5: - //SEG758 [333] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG797 [354] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG759 [334] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG798 [355] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG760 [335] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG799 [356] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 jmp breturn - //SEG761 play_lock_current::@return + //SEG800 play_lock_current::@return breturn: - //SEG762 [336] return + //SEG801 [357] return rts - //SEG763 play_lock_current::@7 + //SEG802 play_lock_current::@7 b7: - //SEG764 [337] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG803 [358] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG765 [323] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] + //SEG804 [344] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] b1_from_b7: - //SEG766 [323] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy - //SEG767 [323] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy - //SEG768 [323] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy + //SEG805 [344] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy + //SEG806 [344] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy + //SEG807 [344] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG769 play_lock_current::@8 + //SEG808 play_lock_current::@8 b8: - //SEG770 [338] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG809 [359] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG771 [326] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] + //SEG810 [347] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] b2_from_b8: - //SEG772 [326] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy - //SEG773 [326] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy - //SEG774 [326] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy + //SEG811 [347] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy + //SEG812 [347] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy + //SEG813 [347] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG775 keyboard_event_pressed +//SEG814 keyboard_event_pressed keyboard_event_pressed: { .label row_bits = $a .label keycode = 9 - //SEG776 [340] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 + //SEG815 [361] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr lsr lsr - //SEG777 [341] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG816 [362] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda keyboard_scan_values,y sta row_bits - //SEG778 [342] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 + //SEG817 [363] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 lda #7 and keycode - //SEG779 [343] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa + //SEG818 [364] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa tay lda keyboard_matrix_col_bitmask,y and row_bits jmp breturn - //SEG780 keyboard_event_pressed::@return + //SEG819 keyboard_event_pressed::@return breturn: - //SEG781 [344] return + //SEG820 [365] return rts } -//SEG782 keyboard_event_get +//SEG821 keyboard_event_get keyboard_event_get: { - //SEG783 [345] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + //SEG822 [366] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq breturn_from_keyboard_event_get jmp b3 - //SEG784 keyboard_event_get::@3 + //SEG823 keyboard_event_get::@3 b3: - //SEG785 [346] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG824 [367] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG786 [347] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 - ldy keyboard_events_size - lda keyboard_events,y - //SEG787 [348] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG825 [368] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 + ldx keyboard_events_size + lda keyboard_events,x + tax + //SEG826 [369] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG788 [348] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG789 [348] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG827 [369] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG828 [369] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG790 [348] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG829 [369] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG791 [348] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG792 [348] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 - lda #$ff + //SEG830 [369] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG831 [369] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 + ldx #$ff jmp breturn - //SEG793 keyboard_event_get::@return + //SEG832 keyboard_event_get::@return breturn: - //SEG794 [349] return + //SEG833 [370] return rts } -//SEG795 keyboard_event_scan +//SEG834 keyboard_event_scan keyboard_event_scan: { .label row_scan = $b .label keycode = $a .label row = 9 - //SEG796 [351] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG835 [372] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG797 [351] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG798 [351] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG836 [372] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG837 [372] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG799 [351] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG838 [372] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 lda #0 sta row jmp b1 - //SEG800 [351] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG839 [372] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG801 [351] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG802 [351] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG803 [351] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG840 [372] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG841 [372] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG842 [372] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy jmp b1 - //SEG804 keyboard_event_scan::@1 + //SEG843 keyboard_event_scan::@1 b1: - //SEG805 [352] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG844 [373] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG806 [353] call keyboard_matrix_read + //SEG845 [374] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG807 [354] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG846 [375] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 // (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#0 // register copy reg byte a jmp b25 - //SEG808 keyboard_event_scan::@25 + //SEG847 keyboard_event_scan::@25 b25: - //SEG809 [355] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG848 [376] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG810 [356] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG849 [377] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b4_from_b25 jmp b13 - //SEG811 keyboard_event_scan::@13 + //SEG850 keyboard_event_scan::@13 b13: - //SEG812 [357] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG851 [378] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG813 [358] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG852 [379] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] b3_from_b13: b3_from_b19: - //SEG814 [358] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG815 [358] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG853 [379] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG854 [379] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy jmp b3 - //SEG816 keyboard_event_scan::@3 + //SEG855 keyboard_event_scan::@3 b3: - //SEG817 [359] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG856 [380] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG818 [360] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG857 [381] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1_from_b3 - //SEG819 [361] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG858 [382] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] b20_from_b3: jmp b20 - //SEG820 keyboard_event_scan::@20 + //SEG859 keyboard_event_scan::@20 b20: - //SEG821 [362] call keyboard_event_pressed - //SEG822 [339] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG860 [383] call keyboard_event_pressed + //SEG861 [360] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG823 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG862 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG824 [363] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG863 [384] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b26 - //SEG825 keyboard_event_scan::@26 + //SEG864 keyboard_event_scan::@26 b26: - //SEG826 [364] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG865 [385] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 // (byte~) keyboard_event_scan::$14 = (byte) keyboard_event_pressed::return#0 // register copy reg byte a - //SEG827 [365] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 + //SEG866 [386] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 cmp #0 beq b9_from_b26 - //SEG828 [366] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG867 [387] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] b21_from_b26: jmp b21 - //SEG829 keyboard_event_scan::@21 + //SEG868 keyboard_event_scan::@21 b21: - //SEG830 [367] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG869 [388] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] b9_from_b21: - //SEG831 [367] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + //SEG870 [388] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 ldx #0|KEY_MODIFIER_LSHIFT jmp b9 - //SEG832 [367] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG871 [388] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b26: - //SEG833 [367] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + //SEG872 [388] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 ldx #0 jmp b9 - //SEG834 keyboard_event_scan::@9 + //SEG873 keyboard_event_scan::@9 b9: - //SEG835 [368] call keyboard_event_pressed - //SEG836 [339] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG874 [389] call keyboard_event_pressed + //SEG875 [360] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG837 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG876 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG838 [369] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG877 [390] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b27 - //SEG839 keyboard_event_scan::@27 + //SEG878 keyboard_event_scan::@27 b27: - //SEG840 [370] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG879 [391] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 // (byte~) keyboard_event_scan::$18 = (byte) keyboard_event_pressed::return#1 // register copy reg byte a - //SEG841 [371] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 + //SEG880 [392] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10_from_b27 jmp b22 - //SEG842 keyboard_event_scan::@22 + //SEG881 keyboard_event_scan::@22 b22: - //SEG843 [372] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG882 [393] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_RSHIFT tax - //SEG844 [373] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG883 [394] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] b10_from_b22: b10_from_b27: - //SEG845 [373] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy + //SEG884 [394] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy jmp b10 - //SEG846 keyboard_event_scan::@10 + //SEG885 keyboard_event_scan::@10 b10: - //SEG847 [374] call keyboard_event_pressed - //SEG848 [339] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG886 [395] call keyboard_event_pressed + //SEG887 [360] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG849 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG888 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG850 [375] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG889 [396] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b28 - //SEG851 keyboard_event_scan::@28 + //SEG890 keyboard_event_scan::@28 b28: - //SEG852 [376] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG891 [397] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 // (byte~) keyboard_event_scan::$22 = (byte) keyboard_event_pressed::return#2 // register copy reg byte a - //SEG853 [377] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 + //SEG892 [398] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11_from_b28 jmp b23 - //SEG854 keyboard_event_scan::@23 + //SEG893 keyboard_event_scan::@23 b23: - //SEG855 [378] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG894 [399] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_CTRL tax - //SEG856 [379] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG895 [400] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] b11_from_b23: b11_from_b28: - //SEG857 [379] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy + //SEG896 [400] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy jmp b11 - //SEG858 keyboard_event_scan::@11 + //SEG897 keyboard_event_scan::@11 b11: - //SEG859 [380] call keyboard_event_pressed - //SEG860 [339] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG898 [401] call keyboard_event_pressed + //SEG899 [360] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG861 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG900 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG862 [381] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG901 [402] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b29 - //SEG863 keyboard_event_scan::@29 + //SEG902 keyboard_event_scan::@29 b29: - //SEG864 [382] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG903 [403] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 // (byte~) keyboard_event_scan::$26 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a - //SEG865 [383] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 + //SEG904 [404] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 beq breturn jmp b24 - //SEG866 keyboard_event_scan::@24 + //SEG905 keyboard_event_scan::@24 b24: - //SEG867 [384] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 + //SEG906 [405] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_COMMODORE jmp breturn - //SEG868 keyboard_event_scan::@return + //SEG907 keyboard_event_scan::@return breturn: - //SEG869 [385] return + //SEG908 [406] return rts - //SEG870 [386] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG909 [407] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG871 [386] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG872 [386] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG873 [386] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 + //SEG910 [407] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG911 [407] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG912 [407] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG874 [386] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG913 [407] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG875 [386] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG876 [386] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG877 [386] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG914 [407] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG915 [407] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG916 [407] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy jmp b4 - //SEG878 keyboard_event_scan::@4 + //SEG917 keyboard_event_scan::@4 b4: - //SEG879 [387] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 + //SEG918 [408] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 lda row_scan ldy row eor keyboard_scan_values,y - //SEG880 [388] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + //SEG919 [409] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx and keyboard_matrix_col_bitmask,x - //SEG881 [389] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 + //SEG920 [410] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5_from_b4 jmp b15 - //SEG882 keyboard_event_scan::@15 + //SEG921 keyboard_event_scan::@15 b15: - //SEG883 [390] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG922 [411] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5_from_b15 jmp b16 - //SEG884 keyboard_event_scan::@16 + //SEG923 keyboard_event_scan::@16 b16: - //SEG885 [391] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx + //SEG924 [412] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx lda keyboard_matrix_col_bitmask,x and row_scan - //SEG886 [392] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 + //SEG925 [413] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 jmp b17 - //SEG887 keyboard_event_scan::@17 + //SEG926 keyboard_event_scan::@17 b17: - //SEG888 [393] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG927 [414] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG889 [394] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG928 [415] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG890 [395] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG929 [416] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] b5_from_b15: b5_from_b17: b5_from_b4: b5_from_b7: - //SEG891 [395] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG930 [416] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy jmp b5 - //SEG892 keyboard_event_scan::@5 + //SEG931 keyboard_event_scan::@5 b5: - //SEG893 [396] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG932 [417] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG894 [397] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG933 [418] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG895 [398] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG934 [419] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b4_from_b5 jmp b19 - //SEG896 keyboard_event_scan::@19 + //SEG935 keyboard_event_scan::@19 b19: - //SEG897 [399] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG936 [420] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3_from_b19 - //SEG898 keyboard_event_scan::@7 + //SEG937 keyboard_event_scan::@7 b7: - //SEG899 [400] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 + //SEG938 [421] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG900 [401] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG939 [422] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa ldy keyboard_events_size sta keyboard_events,y - //SEG901 [402] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG940 [423] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG902 keyboard_matrix_read +//SEG941 keyboard_matrix_read keyboard_matrix_read: { - //SEG903 [403] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + //SEG942 [424] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A - //SEG904 [404] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG943 [425] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG905 keyboard_matrix_read::@return + //SEG944 keyboard_matrix_read::@return breturn: - //SEG906 [405] return + //SEG945 [426] return rts } -//SEG907 render_show +//SEG946 render_show render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f - //SEG908 [406] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + //SEG947 [427] if((byte) render_screen_show#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181_from_render_show - //SEG909 [407] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG948 [428] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] toD0182_from_render_show: jmp toD0182 - //SEG910 render_show::toD0182 + //SEG949 render_show::toD0182 toD0182: - //SEG911 [408] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] + //SEG950 [429] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] b2_from_toD0182: - //SEG912 [408] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuaa=vbuc1 + //SEG951 [429] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuaa=vbuc1 lda #toD0182_return jmp b2 - //SEG913 render_show::@2 + //SEG952 render_show::@2 b2: - //SEG914 [409] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa + //SEG953 [430] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa sta D018 - //SEG915 [410] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + //SEG954 [431] (byte) render_screen_showing#1 ← (byte) render_screen_show#17 -- vbuz1=vbuz2 lda render_screen_show sta render_screen_showing jmp breturn - //SEG916 render_show::@return + //SEG955 render_show::@return breturn: - //SEG917 [411] return + //SEG956 [432] return rts - //SEG918 [412] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG957 [433] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] toD0181_from_render_show: jmp toD0181 - //SEG919 render_show::toD0181 + //SEG958 render_show::toD0181 toD0181: - //SEG920 [408] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] + //SEG959 [429] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] b2_from_toD0181: - //SEG921 [408] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuaa=vbuc1 + //SEG960 [429] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuaa=vbuc1 lda #toD0181_return jmp b2 } -//SEG922 play_init +//SEG961 play_init play_init: { .label pli = 5 .label idx = 2 - //SEG923 [414] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG962 [435] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] b1_from_play_init: - //SEG924 [414] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 + //SEG963 [435] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG925 [414] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 + //SEG964 [435] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG926 [414] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuxx=vbuc1 + //SEG965 [435] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG927 [414] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG966 [435] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] b1_from_b1: - //SEG928 [414] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG929 [414] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG930 [414] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG967 [435] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG968 [435] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG969 [435] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy jmp b1 - //SEG931 play_init::@1 + //SEG970 play_init::@1 b1: - //SEG932 [415] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG971 [436] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG933 [416] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG972 [437] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG934 [417] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG973 [438] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda idx sta playfield_lines_idx,x - //SEG935 [418] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG974 [439] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -18072,41 +19337,41 @@ play_init: { bcc !+ inc pli+1 !: - //SEG936 [419] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG975 [440] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG937 [420] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx + //SEG976 [441] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG938 [421] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG977 [442] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp b3 - //SEG939 play_init::@3 + //SEG978 play_init::@3 b3: - //SEG940 [422] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 + //SEG979 [443] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES - //SEG941 [423] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 + //SEG980 [444] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 lda MOVEDOWN_SLOW_SPEEDS sta current_movedown_slow - //SEG942 [424] phi from play_init::@3 to play_init::@2 [phi:play_init::@3->play_init::@2] + //SEG981 [445] phi from play_init::@3 to play_init::@2 [phi:play_init::@3->play_init::@2] b2_from_b3: - //SEG943 [424] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@3->play_init::@2#0] -- vbuxx=vbuc1 + //SEG982 [445] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@3->play_init::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG944 [424] phi from play_init::@2 to play_init::@2 [phi:play_init::@2->play_init::@2] + //SEG983 [445] phi from play_init::@2 to play_init::@2 [phi:play_init::@2->play_init::@2] b2_from_b2: - //SEG945 [424] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@2->play_init::@2#0] -- register_copy + //SEG984 [445] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@2->play_init::@2#0] -- register_copy jmp b2 - //SEG946 play_init::@2 + //SEG985 play_init::@2 b2: - //SEG947 [425] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG986 [446] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG948 [426] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa + //SEG987 [447] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa tay lda SCORE_BASE_BCD,y sta score_add_bcd,y @@ -18116,222 +19381,222 @@ play_init: { sta score_add_bcd+2,y lda SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG949 [427] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx + //SEG988 [448] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx inx - //SEG950 [428] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG989 [449] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b2_from_b2 jmp breturn - //SEG951 play_init::@return + //SEG990 play_init::@return breturn: - //SEG952 [429] return + //SEG991 [450] return rts } -//SEG953 sprites_irq_init +//SEG992 sprites_irq_init sprites_irq_init: { - //SEG954 asm { sei } + //SEG993 asm { sei } sei - //SEG955 [431] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG994 [452] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG956 asm { ldaCIA1_INTERRUPT } + //SEG995 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG957 [433] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG996 [454] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG958 [434] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG997 [455] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG959 [435] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG998 [456] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG960 [436] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG999 [457] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda VIC_CONTROL and #$7f sta VIC_CONTROL - //SEG961 [437] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG1000 [458] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG962 [438] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1001 [459] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG963 [439] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG1002 [460] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG964 asm { cli } + //SEG1003 asm { cli } cli jmp breturn - //SEG965 sprites_irq_init::@return + //SEG1004 sprites_irq_init::@return breturn: - //SEG966 [441] return + //SEG1005 [462] return rts } -//SEG967 sprites_init +//SEG1006 sprites_init sprites_init: { .label xpos = 2 - //SEG968 [442] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG1007 [463] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG969 [443] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1008 [464] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG970 [444] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1009 [465] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG971 [445] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1010 [466] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG972 [446] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG1011 [467] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG973 [446] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG1012 [467] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG974 [446] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 + //SEG1013 [467] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG975 [446] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG1014 [467] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG976 [446] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG977 [446] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG1015 [467] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG1016 [467] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG978 sprites_init::@1 + //SEG1017 sprites_init::@1 b1: - //SEG979 [447] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1018 [468] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG980 [448] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG1019 [469] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda xpos sta SPRITES_XPOS,y - //SEG981 [449] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG1020 [470] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #BLACK sta SPRITES_COLS,x - //SEG982 [450] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1021 [471] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG983 [451] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx + //SEG1022 [472] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx inx - //SEG984 [452] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1023 [473] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1_from_b1 jmp breturn - //SEG985 sprites_init::@return + //SEG1024 sprites_init::@return breturn: - //SEG986 [453] return + //SEG1025 [474] return rts } -//SEG987 render_init +//SEG1026 render_init render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)>>6 .label li_1 = 5 .label li_2 = 7 jmp vicSelectGfxBank1 - //SEG988 render_init::vicSelectGfxBank1 + //SEG1027 render_init::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG989 [455] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1028 [476] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG990 [456] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG1029 [477] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG991 render_init::vicSelectGfxBank1_toDd001 + //SEG1030 render_init::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG992 render_init::vicSelectGfxBank1_@1 + //SEG1031 render_init::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG993 [457] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG1032 [478] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A jmp b3 - //SEG994 render_init::@3 + //SEG1033 render_init::@3 b3: - //SEG995 [458] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1034 [479] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG996 [459] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1035 [480] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG997 [460] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1036 [481] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG998 [461] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG1037 [482] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL2 - //SEG999 [462] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 + //SEG1038 [483] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 lda #CYAN sta BGCOL3 - //SEG1000 [463] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG1039 [484] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG1001 [464] call render_screen_original - //SEG1002 [477] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] + //SEG1040 [485] call render_screen_original + //SEG1041 [498] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] render_screen_original_from_b3: - //SEG1003 [477] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1042 [498] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1004 [465] phi from render_init::@3 to render_init::@4 [phi:render_init::@3->render_init::@4] + //SEG1043 [486] phi from render_init::@3 to render_init::@4 [phi:render_init::@3->render_init::@4] b4_from_b3: jmp b4 - //SEG1005 render_init::@4 + //SEG1044 render_init::@4 b4: - //SEG1006 [466] call render_screen_original - //SEG1007 [477] phi from render_init::@4 to render_screen_original [phi:render_init::@4->render_screen_original] + //SEG1045 [487] call render_screen_original + //SEG1046 [498] phi from render_init::@4 to render_screen_original [phi:render_init::@4->render_screen_original] render_screen_original_from_b4: - //SEG1008 [477] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@4->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1047 [498] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@4->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1009 [467] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] + //SEG1048 [488] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] b1_from_b4: - //SEG1010 [467] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#0] -- pbuz1=pbuc1 + //SEG1049 [488] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG1011 [467] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#1] -- pbuz1=pbuc1 + //SEG1050 [488] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG1012 [467] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@1#2] -- vbuxx=vbuc1 + //SEG1051 [488] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@1#2] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG1013 [467] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG1052 [488] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] b1_from_b1: - //SEG1014 [467] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG1015 [467] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG1016 [467] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy + //SEG1053 [488] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG1054 [488] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG1055 [488] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy jmp b1 - //SEG1017 render_init::@1 + //SEG1056 render_init::@1 b1: - //SEG1018 [468] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1057 [489] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1019 [469] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG1058 [490] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_1 sta screen_lines_1,y lda li_1+1 sta screen_lines_1+1,y - //SEG1020 [470] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1059 [491] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1021 [471] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG1060 [492] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_2 sta screen_lines_2,y lda li_2+1 sta screen_lines_2+1,y - //SEG1022 [472] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1061 [493] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_1 clc adc #$28 @@ -18339,7 +19604,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG1023 [473] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1062 [494] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_2 clc adc #$28 @@ -18347,18 +19612,18 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG1024 [474] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx + //SEG1063 [495] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG1025 [475] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1064 [496] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp breturn - //SEG1026 render_init::@return + //SEG1065 render_init::@return breturn: - //SEG1027 [476] return + //SEG1066 [497] return rts } -//SEG1028 render_screen_original +//SEG1067 render_screen_original render_screen_original: { .const SPACE = 0 .label screen = $11 @@ -18366,341 +19631,357 @@ render_screen_original: { .label oscr = 5 .label ocols = 7 .label y = 2 - //SEG1029 [478] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + //SEG1068 [499] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] b1_from_render_screen_original: - //SEG1030 [478] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG1069 [499] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1031 [478] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG1070 [499] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_COLORS_ORIGINAL+$20*2 sta ocols+1 - //SEG1032 [478] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG1071 [499] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta oscr+1 - //SEG1033 [478] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 + //SEG1072 [499] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 lda #COLS sta cols+1 - //SEG1034 [478] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy + //SEG1073 [499] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1035 [478] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] + //SEG1074 [499] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] b1_from_b7: - //SEG1036 [478] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy - //SEG1037 [478] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy - //SEG1038 [478] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy - //SEG1039 [478] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@7->render_screen_original::@1#3] -- register_copy - //SEG1040 [478] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@7->render_screen_original::@1#4] -- register_copy + //SEG1075 [499] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy + //SEG1076 [499] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy + //SEG1077 [499] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy + //SEG1078 [499] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@7->render_screen_original::@1#3] -- register_copy + //SEG1079 [499] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@7->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1041 render_screen_original::@1 + //SEG1080 render_screen_original::@1 b1: - //SEG1042 [479] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG1081 [500] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] b2_from_b1: - //SEG1043 [479] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 + //SEG1082 [500] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1044 [479] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy - //SEG1045 [479] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy + //SEG1083 [500] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG1084 [500] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1046 [479] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG1085 [500] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] b2_from_b2: - //SEG1047 [479] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy - //SEG1048 [479] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy - //SEG1049 [479] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy + //SEG1086 [500] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy + //SEG1087 [500] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG1088 [500] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1050 render_screen_original::@2 + //SEG1089 render_screen_original::@2 b2: - //SEG1051 [480] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1090 [501] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1052 [481] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG1091 [502] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1053 [482] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1092 [503] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1054 [483] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 + //SEG1093 [504] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1055 [484] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx + //SEG1094 [505] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx inx - //SEG1056 [485] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1095 [506] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b2_from_b2 - //SEG1057 [486] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] + //SEG1096 [507] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] b3_from_b2: b3_from_b3: - //SEG1058 [486] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy - //SEG1059 [486] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG1060 [486] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy - //SEG1061 [486] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy - //SEG1062 [486] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy + //SEG1097 [507] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy + //SEG1098 [507] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG1099 [507] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG1100 [507] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy + //SEG1101 [507] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy jmp b3 - //SEG1063 render_screen_original::@3 + //SEG1102 render_screen_original::@3 b3: - //SEG1064 [487] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1103 [508] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (oscr),y ldy #0 sta (screen),y - //SEG1065 [488] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG1104 [509] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1066 [489] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 + //SEG1105 [510] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 inc oscr bne !+ inc oscr+1 !: - //SEG1067 [490] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1106 [511] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (ocols),y ldy #0 sta (cols),y - //SEG1068 [491] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 + //SEG1107 [512] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1069 [492] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 + //SEG1108 [513] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 inc ocols bne !+ inc ocols+1 !: - //SEG1070 [493] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx + //SEG1109 [514] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx inx - //SEG1071 [494] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1110 [515] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$24 bne b3_from_b3 - //SEG1072 [495] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] + //SEG1111 [516] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] b4_from_b3: b4_from_b4: - //SEG1073 [495] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy - //SEG1074 [495] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy - //SEG1075 [495] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy + //SEG1112 [516] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy + //SEG1113 [516] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG1114 [516] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy jmp b4 - //SEG1076 render_screen_original::@4 + //SEG1115 render_screen_original::@4 b4: - //SEG1077 [496] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1116 [517] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1078 [497] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG1117 [518] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1079 [498] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1118 [519] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1080 [499] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 + //SEG1119 [520] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1081 [500] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx + //SEG1120 [521] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx inx - //SEG1082 [501] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG1121 [522] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b4_from_b4 jmp b7 - //SEG1083 render_screen_original::@7 + //SEG1122 render_screen_original::@7 b7: - //SEG1084 [502] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG1123 [523] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1085 [503] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1124 [524] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1_from_b7 jmp breturn - //SEG1086 render_screen_original::@return + //SEG1125 render_screen_original::@return breturn: - //SEG1087 [504] return + //SEG1126 [525] return rts } -//SEG1088 sid_rnd_init +//SEG1127 sid_rnd_init sid_rnd_init: { - //SEG1089 [505] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG1128 [526] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG1090 [506] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG1129 [527] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL jmp breturn - //SEG1091 sid_rnd_init::@return + //SEG1130 sid_rnd_init::@return breturn: - //SEG1092 [507] return + //SEG1131 [528] return rts } -//SEG1093 sprites_irq +//SEG1132 sprites_irq sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 - //SEG1094 entry interrupt(HARDWARE_CLOBBER) + .label raster_sprite_gfx_modify = $2e + //SEG1133 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG1095 asm { cld } + //SEG1134 asm { cld } cld - //SEG1096 [509] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG1135 [530] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 lda irq_sprite_ypos - //SEG1097 [510] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1136 [531] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG1098 [511] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1137 [532] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG1099 [512] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1138 [533] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG1100 [513] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1139 [534] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 + //SEG1140 [535] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + ldx irq_raster_next + inx + //SEG1141 [536] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx + stx raster_sprite_gfx_modify jmp b1 - //SEG1101 sprites_irq::@1 + //SEG1142 sprites_irq::@1 b1: - //SEG1102 [514] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG1143 [537] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER - cmp irq_sprite_ypos + cmp raster_sprite_gfx_modify bcc b1 - jmp b7 - //SEG1103 sprites_irq::@7 - b7: - //SEG1104 [515] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + jmp b8 + //SEG1144 sprites_irq::@8 + b8: + //SEG1145 [538] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 ldx irq_sprite_ptr - //SEG1105 [516] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + //SEG1146 [539] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b2 - jmp b8 - //SEG1106 sprites_irq::@8 - b8: - //SEG1107 [517] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + jmp b9 + //SEG1147 sprites_irq::@9 + b9: + //SEG1148 [540] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2 - //SEG1108 [518] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx - inx - //SEG1109 [519] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_2+1 - //SEG1110 [520] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_2+2 - //SEG1111 [521] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuxx=_inc_vbuxx - inx - //SEG1112 [522] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_2+3 + //SEG1149 [541] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + txa + clc + adc #1 + //SEG1150 [542] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_2+1 + //SEG1151 [543] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_2+2 + //SEG1152 [544] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa + clc + adc #1 + //SEG1153 [545] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_2+3 jmp b3 - //SEG1113 sprites_irq::@3 + //SEG1154 sprites_irq::@3 b3: - //SEG1114 [523] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG1155 [546] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG1115 [524] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG1156 [547] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + lda irq_cnt + cmp #9 + beq b4 + jmp b11 + //SEG1157 sprites_irq::@11 + b11: + //SEG1158 [548] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt cmp #$a - beq b4 - jmp b10 - //SEG1116 sprites_irq::@10 - b10: - //SEG1117 [525] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 - lda #$15 + beq b5 + jmp b12 + //SEG1159 sprites_irq::@12 + b12: + //SEG1160 [549] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz1_plus_vbuc1 + lda #$14 clc adc irq_raster_next sta irq_raster_next - //SEG1118 [526] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1161 [550] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 lda #$15 clc adc irq_sprite_ypos sta irq_sprite_ypos - //SEG1119 [527] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1162 [551] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr - //SEG1120 [528] phi from sprites_irq::@10 sprites_irq::@13 to sprites_irq::@5 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5] - b5_from_b10: - b5_from_b13: - //SEG1121 [528] phi (byte) irq_raster_next#13 = (byte) irq_raster_next#2 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5#0] -- register_copy - jmp b5 - //SEG1122 sprites_irq::@5 - b5: - //SEG1123 [529] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 -- vbuxx=vbuz1 - ldx irq_raster_next - //SEG1124 [530] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 - txa - and #7 - //SEG1125 [531] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 -- vbuaa_neq_vbuc1_then_la1 - cmp #3 - bne b6_from_b5 - jmp b12 - //SEG1126 sprites_irq::@12 - b12: - //SEG1127 [532] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 - dex - //SEG1128 [533] phi from sprites_irq::@12 sprites_irq::@5 to sprites_irq::@6 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6] - b6_from_b12: - b6_from_b5: - //SEG1129 [533] phi (byte) sprites_irq::raster_next#2 = (byte) sprites_irq::raster_next#1 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6#0] -- register_copy - jmp b6 - //SEG1130 sprites_irq::@6 - b6: - //SEG1131 [534] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 -- _deref_pbuc1=vbuxx - stx RASTER - //SEG1132 [535] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1163 [552] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] + b7_from_b12: + b7_from_b15: + b7_from_b5: + //SEG1164 [552] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy + jmp b7 + //SEG1165 sprites_irq::@7 + b7: + //SEG1166 [553] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + lda irq_raster_next + sta RASTER + //SEG1167 [554] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG1133 sprites_irq::@return + //SEG1168 sprites_irq::@return breturn: - //SEG1134 [536] return - exit interrupt(HARDWARE_CLOBBER) + //SEG1169 [555] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG1135 sprites_irq::@4 - b4: - //SEG1136 [537] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG1170 sprites_irq::@5 + b5: + //SEG1171 [556] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG1137 [538] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG1172 [557] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG1138 [539] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 - lda #$32 + //SEG1173 [558] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_sprite_ypos sta irq_sprite_ypos - //SEG1139 [540] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + //SEG1174 [559] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + lda #3 + clc + adc irq_sprite_ptr + sta irq_sprite_ptr + jmp b7_from_b5 + //SEG1175 sprites_irq::@4 + b4: + //SEG1176 [560] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_raster_next + sta irq_raster_next + //SEG1177 [561] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + lda #SPRITES_FIRST_YPOS + sta irq_sprite_ypos + //SEG1178 [562] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] toSpritePtr2_from_b4: jmp toSpritePtr2 - //SEG1140 sprites_irq::toSpritePtr2 + //SEG1179 sprites_irq::toSpritePtr2 toSpritePtr2: - jmp b13 - //SEG1141 sprites_irq::@13 - b13: - //SEG1142 [541] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + jmp b15 + //SEG1180 sprites_irq::@15 + b15: + //SEG1181 [563] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr - jmp b5_from_b13 - //SEG1143 sprites_irq::@2 + jmp b7_from_b15 + //SEG1182 sprites_irq::@2 b2: - //SEG1144 [542] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1183 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1 - //SEG1145 [543] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG1184 [565] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx txa clc adc #1 - //SEG1146 [544] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG1185 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG1147 [545] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG1186 [567] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG1148 [546] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa + //SEG1187 [568] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG1149 [547] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + //SEG1188 [569] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 } @@ -18725,9 +20006,9 @@ sprites_irq: { PIECES_CHARS: .byte $64, $65, $a5, $65, $64, $64, $a5 PIECES_START_X: .byte 4, 4, 4, 4, 4, 4, 4 PIECES_START_Y: .byte 1, 1, 1, 1, 1, 0, 1 + MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 SCORE_BASE_BCD: .dword 0, $40, $100, $300, $1200 score_add_bcd: .fill 4*5, 0 - MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 .align $80 screen_lines_1: .fill 2*PLAYFIELD_LINES, 0 .align $40 @@ -18755,11 +20036,14 @@ sprites_irq: { .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 @@ -18772,29 +20056,30 @@ Removing instruction jmp b14 Removing instruction jmp b22 Removing instruction jmp b23 Removing instruction jmp toSpritePtr1 +Removing instruction jmp b38 Removing instruction jmp b37 -Removing instruction jmp b36 Removing instruction jmp bend -Removing instruction jmp b15 -Removing instruction jmp b16 -Removing instruction jmp b17 -Removing instruction jmp b18 -Removing instruction jmp b19 -Removing instruction jmp b20 -Removing instruction jmp b21 -Removing instruction jmp b1 -Removing instruction jmp b4 -Removing instruction jmp b6 -Removing instruction jmp b23 -Removing instruction jmp b24 Removing instruction jmp b25 Removing instruction jmp b26 Removing instruction jmp b27 Removing instruction jmp b28 -Removing instruction jmp b13 Removing instruction jmp b29 Removing instruction jmp b30 Removing instruction jmp b31 +Removing instruction jmp b1 +Removing instruction jmp b4 +Removing instruction jmp b6 +Removing instruction jmp b33 +Removing instruction jmp b34 +Removing instruction jmp b35 +Removing instruction jmp b9 +Removing instruction jmp b36 +Removing instruction jmp b11 +Removing instruction jmp b23 +Removing instruction jmp b37 +Removing instruction jmp b38 +Removing instruction jmp b39 +Removing instruction jmp b12 Removing instruction jmp breturn Removing instruction jmp b3 Removing instruction jmp b2 @@ -18819,6 +20104,10 @@ Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b3 Removing instruction jmp breturn +Removing instruction jmp b5 +Removing instruction jmp breturn +Removing instruction jmp b6 +Removing instruction jmp b7 Removing instruction jmp b6 Removing instruction jmp breturn Removing instruction jmp b4 @@ -18854,9 +20143,11 @@ Removing instruction jmp b7 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp b3 +Removing instruction jmp b10 Removing instruction jmp breturn +Removing instruction jmp b11 Removing instruction jmp b2 -Removing instruction jmp b7 +Removing instruction jmp b9 Removing instruction jmp breturn Removing instruction jmp b3 Removing instruction jmp b4 @@ -18936,16 +20227,15 @@ Removing instruction jmp b7 Removing instruction jmp breturn Removing instruction jmp breturn Removing instruction jmp b1 -Removing instruction jmp b7 Removing instruction jmp b8 +Removing instruction jmp b9 Removing instruction jmp b3 -Removing instruction jmp b10 -Removing instruction jmp b5 +Removing instruction jmp b11 Removing instruction jmp b12 -Removing instruction jmp b6 +Removing instruction jmp b7 Removing instruction jmp breturn Removing instruction jmp toSpritePtr2 -Removing instruction jmp b13 +Removing instruction jmp b15 Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 Removing instruction lda #0 @@ -18955,11 +20245,10 @@ Removing instruction lda #>0 Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 -Removing instruction lda key_event Removing instruction lda #0 Removing instruction lda current_orientation Removing instruction lda #0 -Replacing instruction ldy _3 with TAY +Removing instruction ldy _3 Removing instruction lda #0 Removing instruction lda c Removing instruction lda #0 @@ -18971,8 +20260,7 @@ Removing instruction lda #BLACK Removing instruction ldy #0 Removing instruction ldy #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination -Replacing label b1 with b4 -Replacing label b1_from_b28 with b4 +Replacing label b12_from_b11 with b12 Replacing label b1 with b4 Replacing label b1_from_render_bcd with b1 Replacing label b1_from_b3 with b1 @@ -18980,6 +20268,7 @@ Replacing label b4_from_b5 with b4 Replacing label b3_from_b5 with b3 Replacing label b2_from_b2 with b2 Replacing label b1_from_b3 with b1 +Replacing label breturn_from_b7 with breturn Replacing label breturn_from_b14 with breturn_from_b6 Replacing label b4_from_b1 with b4 Replacing label breturn_from_b15 with breturn_from_b6 @@ -18989,6 +20278,7 @@ Replacing label b2_from_b17 with b2 Replacing label b2_from_b9 with b2 Replacing label b4_from_b2 with b4 Replacing label b2_from_b1 with b2 +Replacing label b11_from_b10 with b11 Replacing label breturn_from_play_update_score with breturn Replacing label breturn_from_b3 with breturn Replacing label b3_from_b2 with b3 @@ -19015,31 +20305,31 @@ Replacing label b2_from_b2 with b2 Replacing label b3_from_b3 with b3 Replacing label b4_from_b4 with b4 Replacing label b1_from_b7 with b1 -Replacing label b6_from_b5 with b6 -Replacing label b5_from_b13 with b5 +Replacing label b7_from_b5 with b7 +Replacing label b7_from_b15 with b7 Removing instruction b14: Removing instruction b22: Removing instruction toSpritePtr1_from_b23: Removing instruction toSpritePtr1: -Removing instruction b36_from_b37: -Removing instruction main_from_b36: -Removing instruction bend_from_b36: -Removing instruction b16_from_b15: -Removing instruction b17_from_b16: -Removing instruction b18_from_b17: -Removing instruction play_init_from_b18: -Removing instruction b19_from_b18: -Removing instruction play_spawn_current_from_b19: -Removing instruction b20_from_b19: -Removing instruction render_playfield_from_b20: -Removing instruction b1_from_b28: -Removing instruction b1: -Removing instruction b6_from_b4: -Removing instruction b23_from_b6: -Removing instruction keyboard_event_scan_from_b23: -Removing instruction b24_from_b23: +Removing instruction b37_from_b38: +Removing instruction main_from_b37: +Removing instruction bend_from_b37: +Removing instruction b26_from_b25: +Removing instruction b27_from_b26: +Removing instruction b28_from_b27: +Removing instruction play_init_from_b28: +Removing instruction b29_from_b28: +Removing instruction play_spawn_current_from_b29: Removing instruction b30_from_b29: -Removing instruction b31_from_b30: +Removing instruction render_playfield_from_b30: +Removing instruction b1: +Removing instruction b33_from_b6: +Removing instruction keyboard_event_scan_from_b33: +Removing instruction b34_from_b33: +Removing instruction b38_from_b37: +Removing instruction b39_from_b38: +Removing instruction b12_from_b11: +Removing instruction b12_from_b39: Removing instruction b3_from_render_score: Removing instruction b2_from_b3: Removing instruction b1_from_render_bcd: @@ -19050,6 +20340,8 @@ Removing instruction b3_from_b7: Removing instruction b4_from_b5: Removing instruction b1_from_b3: Removing instruction b2_from_b2: +Removing instruction breturn_from_b5: +Removing instruction breturn_from_b7: Removing instruction breturn_from_b14: Removing instruction b4_from_b1: Removing instruction b4_from_b2: @@ -19070,6 +20362,8 @@ Removing instruction play_remove_lines_from_b19: Removing instruction b21_from_b20: Removing instruction play_spawn_current_from_b21: Removing instruction breturn_from_b7: +Removing instruction b11_from_b10: +Removing instruction breturn_from_b11: Removing instruction b2_from_b1: Removing instruction b4_from_b3: Removing instruction breturn_from_play_update_score: @@ -19125,42 +20419,40 @@ Removing instruction b3_from_b2: Removing instruction b3_from_b3: Removing instruction b4_from_b3: Removing instruction b4_from_b4: -Removing instruction b5_from_b10: -Removing instruction b5_from_b13: -Removing instruction b6_from_b12: -Removing instruction b6_from_b5: +Removing instruction b7_from_b12: +Removing instruction b7_from_b15: +Removing instruction b7_from_b5: Removing instruction breturn: Removing instruction toSpritePtr2_from_b4: Removing instruction toSpritePtr2: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction b23: +Removing instruction b38: Removing instruction b37: -Removing instruction b36: Removing instruction bend: -Removing instruction b15: -Removing instruction render_init_from_b15: -Removing instruction b16: -Removing instruction b17: -Removing instruction b18: -Removing instruction b19: -Removing instruction b20: -Removing instruction b21: -Removing instruction render_moving_from_b21: -Removing instruction b1_from_b21: -Removing instruction b6: -Removing instruction b23: -Removing instruction b24: Removing instruction b25: +Removing instruction render_init_from_b25: Removing instruction b26: Removing instruction b27: Removing instruction b28: -Removing instruction b13: -Removing instruction render_playfield_from_b13: Removing instruction b29: -Removing instruction render_moving_from_b29: Removing instruction b30: Removing instruction b31: +Removing instruction render_moving_from_b31: Removing instruction b1_from_b31: +Removing instruction b6: +Removing instruction b33: +Removing instruction b34: +Removing instruction b35: +Removing instruction b36: +Removing instruction b11: +Removing instruction b23: +Removing instruction render_playfield_from_b23: +Removing instruction b37: +Removing instruction render_moving_from_b37: +Removing instruction b38: +Removing instruction b39: +Removing instruction b1_from_b12: Removing instruction breturn: Removing instruction b3: Removing instruction render_bcd_from_b2: @@ -19186,6 +20478,9 @@ Removing instruction b1_from_render_playfield: Removing instruction b2_from_b1: Removing instruction b3: Removing instruction breturn: +Removing instruction b5: +Removing instruction b6: +Removing instruction b7: Removing instruction b6: Removing instruction play_collision_from_b4: Removing instruction b14: @@ -19226,9 +20521,11 @@ Removing instruction b7_from_b21: Removing instruction b7_from_b6: Removing instruction b1_from_play_spawn_current: Removing instruction b3: -Removing instruction breturn: -Removing instruction b7: -Removing instruction b1_from_b7: +Removing instruction play_collision_from_b3: +Removing instruction b10: +Removing instruction breturn_from_b10: +Removing instruction b9: +Removing instruction b1_from_b9: Removing instruction breturn: Removing instruction b3: Removing instruction b4: @@ -19290,12 +20587,13 @@ Removing instruction b1_from_render_screen_original: Removing instruction b7: Removing instruction breturn: Removing instruction breturn: -Removing instruction b7: Removing instruction b8: -Removing instruction b10: +Removing instruction b9: +Removing instruction b11: Removing instruction b12: -Removing instruction b13: +Removing instruction b15: Succesful ASM optimization Pass5UnusedLabelElimination +Skipping double jump to breturn in bne b11 Skipping double jump to b3 in bne b18 Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label b2_from_render_score to b1 @@ -19309,7 +20607,6 @@ Relabelling long label breturn_from_keyboard_event_get to b1 Relabelling long label b9_from_b26 to b2 Relabelling long label b4_from_b25 to b6 Succesful ASM optimization Pass5RelabelLongLabels -Removing instruction jmp b4 Removing instruction jmp b1 Removing instruction jmp b4 Removing instruction jmp b1 @@ -19326,9 +20623,12 @@ Removing instruction jmp b1 Removing instruction jmp b1 Removing instruction jmp b2 Succesful ASM optimization Pass5NextJumpElimination -Replacing instruction ldy xpos with TAY +Removing instruction lda irq_cnt +Succesful ASM optimization Pass5UnnecesaryLoadElimination +Removing instruction b11: Removing instruction b18: Succesful ASM optimization Pass5UnusedLabelElimination +Removing unreachable instruction jmp breturn Removing unreachable instruction jmp b3 Succesful ASM optimization Pass5UnreachableCodeElimination @@ -19336,8 +20636,8 @@ FINAL SYMBOL TABLE (label) @14 (label) @22 (label) @23 -(label) @36 (label) @37 +(label) @38 (label) @begin (label) @end (byte*) BGCOL @@ -19407,7 +20707,7 @@ FINAL SYMBOL TABLE (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) IRQ_RASTER_FIRST -(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (byte/signed byte/word/signed word/dword/signed dword) 49 +(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 19 (byte*) IRQ_STATUS (const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 (void()**) KERNEL_IRQ @@ -19588,6 +20888,8 @@ FINAL SYMBOL TABLE (const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277 (byte*) SPRITES_EXPAND_Y (const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271 +(byte) SPRITES_FIRST_YPOS +(const byte) SPRITES_FIRST_YPOS#0 SPRITES_FIRST_YPOS = (byte/signed byte/word/signed word/dword/signed dword) 49 (byte*) SPRITES_MC (const byte*) SPRITES_MC#0 SPRITES_MC = ((byte*))(word/dword/signed dword) 53276 (byte*) SPRITES_MC1 @@ -19617,99 +20919,112 @@ FINAL SYMBOL TABLE (byte) WHITE (byte) YELLOW (byte) current_movedown_counter -(byte) current_movedown_counter#1 current_movedown_counter zp ZP_BYTE:4 0.5333333333333333 -(byte) current_movedown_counter#10 current_movedown_counter zp ZP_BYTE:4 3.931034482758621 -(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:4 10.363636363636363 +(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:4 0.5333333333333333 +(byte) current_movedown_counter#14 current_movedown_counter zp ZP_BYTE:4 0.35135135135135137 +(byte) current_movedown_counter#16 current_movedown_counter zp ZP_BYTE:4 0.9285714285714286 (byte) current_movedown_fast (const byte) current_movedown_fast#0 current_movedown_fast = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) current_movedown_slow (byte) current_movedown_slow#1 current_movedown_slow zp ZP_BYTE:24 0.2222222222222222 -(byte) current_movedown_slow#12 current_movedown_slow zp ZP_BYTE:24 2.296296296296297 -(byte) current_movedown_slow#17 current_movedown_slow zp ZP_BYTE:24 4.0 -(byte) current_movedown_slow#19 current_movedown_slow zp ZP_BYTE:24 1.3333333333333333 -(byte) current_movedown_slow#31 current_movedown_slow zp ZP_BYTE:24 6.0 -(byte) current_movedown_slow#60 current_movedown_slow zp ZP_BYTE:24 0.26666666666666666 -(byte) current_movedown_slow#8 current_movedown_slow zp ZP_BYTE:24 4.0 +(byte) current_movedown_slow#10 current_movedown_slow zp ZP_BYTE:24 4.0 +(byte) current_movedown_slow#14 current_movedown_slow zp ZP_BYTE:24 0.40350877192982454 +(byte) current_movedown_slow#21 current_movedown_slow zp ZP_BYTE:24 0.40540540540540543 +(byte) current_movedown_slow#23 current_movedown_slow zp ZP_BYTE:24 1.3333333333333333 +(byte) current_movedown_slow#38 current_movedown_slow zp ZP_BYTE:24 6.0 +(byte) current_movedown_slow#68 current_movedown_slow zp ZP_BYTE:24 0.26666666666666666 (byte) current_orientation -(byte) current_orientation#10 current_orientation zp ZP_BYTE:28 3.371428571428571 -(byte) current_orientation#14 current_orientation zp ZP_BYTE:28 0.32653061224489793 -(byte) current_orientation#19 current_orientation zp ZP_BYTE:28 6.210526315789475 -(byte) current_orientation#29 current_orientation zp ZP_BYTE:28 4.0 -(byte) current_orientation#4 current_orientation zp ZP_BYTE:28 3.0 +(byte) current_orientation#12 current_orientation zp ZP_BYTE:29 0.4473684210526316 +(byte) current_orientation#16 current_orientation zp ZP_BYTE:29 0.75 +(byte) current_orientation#19 current_orientation zp ZP_BYTE:29 0.36 +(byte) current_orientation#24 current_orientation zp ZP_BYTE:29 1.3333333333333333 +(byte) current_orientation#36 current_orientation zp ZP_BYTE:29 4.0 +(byte) current_orientation#7 current_orientation zp ZP_BYTE:29 3.0 (byte*) current_piece -(byte*) current_piece#10 current_piece zp ZP_WORD:26 1.771428571428571 -(byte*) current_piece#12 current_piece#12 zp ZP_WORD:5 10.0 -(byte*) current_piece#16 current_piece zp ZP_WORD:26 3.428571428571428 -(byte*) current_piece#20 current_piece zp ZP_WORD:26 6.0 -(byte*~) current_piece#73 current_piece zp ZP_WORD:26 4.0 -(byte*~) current_piece#76 current_piece#76 zp ZP_WORD:5 4.0 -(byte*~) current_piece#77 current_piece#77 zp ZP_WORD:5 4.0 -(byte*~) current_piece#78 current_piece#78 zp ZP_WORD:5 4.0 -(byte*~) current_piece#79 current_piece#79 zp ZP_WORD:5 4.0 -(byte*~) current_piece#80 current_piece zp ZP_WORD:26 4.0 +(byte*) current_piece#14 current_piece zp ZP_WORD:26 0.2948717948717949 +(byte*) current_piece#16 current_piece#16 zp ZP_WORD:5 12.0 +(byte*) current_piece#20 current_piece zp ZP_WORD:26 0.5 +(byte*) current_piece#27 current_piece zp ZP_WORD:26 6.0 +(byte*~) current_piece#88 current_piece zp ZP_WORD:26 4.0 +(byte*~) current_piece#89 current_piece#89 zp ZP_WORD:5 4.0 +(byte*~) current_piece#90 current_piece#90 zp ZP_WORD:5 4.0 +(byte*~) current_piece#91 current_piece#91 zp ZP_WORD:5 4.0 +(byte*~) current_piece#92 current_piece#92 zp ZP_WORD:5 4.0 +(byte*~) current_piece#93 current_piece#93 zp ZP_WORD:5 4.0 +(byte*~) current_piece#94 current_piece zp ZP_WORD:26 4.0 (byte) current_piece_char -(byte) current_piece_char#1 current_piece_char zp ZP_BYTE:32 4.379310344827585 -(byte) current_piece_char#12 current_piece_char zp ZP_BYTE:32 0.6153846153846154 -(byte) current_piece_char#15 current_piece_char zp ZP_BYTE:32 194.59615384615384 -(byte) current_piece_char#20 current_piece_char zp ZP_BYTE:32 6.0 -(byte) current_piece_char#64 reg byte x 46.09090909090909 -(byte~) current_piece_char#90 reg byte x 4.0 -(byte~) current_piece_char#91 reg byte x 22.0 +(byte~) current_piece_char#103 current_piece_char#103 zp ZP_BYTE:11 4.0 +(byte~) current_piece_char#104 current_piece_char#104 zp ZP_BYTE:11 22.0 +(byte) current_piece_char#14 current_piece_char zp ZP_BYTE:28 0.7027027027027027 +(byte) current_piece_char#16 current_piece_char zp ZP_BYTE:28 0.32 +(byte) current_piece_char#19 current_piece_char zp ZP_BYTE:28 18.509090909090908 +(byte) current_piece_char#27 current_piece_char zp ZP_BYTE:28 6.0 +(byte) current_piece_char#75 current_piece_char#75 zp ZP_BYTE:11 46.09090909090909 (byte*) current_piece_gfx -(byte*) current_piece_gfx#1 current_piece_gfx zp ZP_WORD:29 0.2962962962962963 -(byte*~) current_piece_gfx#102 current_piece_gfx#102 zp ZP_WORD:5 2.0 -(byte*~) current_piece_gfx#103 current_piece_gfx#103 zp ZP_WORD:5 11.0 -(byte*) current_piece_gfx#14 current_piece_gfx zp ZP_WORD:29 6.789473684210528 -(byte*) current_piece_gfx#16 current_piece_gfx zp ZP_WORD:29 0.5 -(byte*) current_piece_gfx#20 current_piece_gfx zp ZP_WORD:29 194.59615384615384 -(byte*) current_piece_gfx#26 current_piece_gfx zp ZP_WORD:29 6.0 -(byte*) current_piece_gfx#3 current_piece_gfx zp ZP_WORD:29 4.0 -(byte*) current_piece_gfx#53 current_piece_gfx#53 zp ZP_WORD:5 46.09090909090909 +(byte*) current_piece_gfx#105 current_piece_gfx zp ZP_WORD:30 18.509090909090908 +(byte*~) current_piece_gfx#115 current_piece_gfx#115 zp ZP_WORD:5 2.0 +(byte*~) current_piece_gfx#116 current_piece_gfx#116 zp ZP_WORD:5 11.0 +(byte*) current_piece_gfx#16 current_piece_gfx zp ZP_WORD:30 1.3000000000000003 +(byte*) current_piece_gfx#18 current_piece_gfx zp ZP_WORD:30 0.3571428571428571 +(byte*) current_piece_gfx#19 current_piece_gfx zp ZP_WORD:30 1.3333333333333333 +(byte*) current_piece_gfx#21 current_piece_gfx zp ZP_WORD:30 0.3333333333333333 +(byte*) current_piece_gfx#33 current_piece_gfx zp ZP_WORD:30 6.0 +(byte*) current_piece_gfx#6 current_piece_gfx zp ZP_WORD:30 4.0 +(byte*) current_piece_gfx#62 current_piece_gfx#62 zp ZP_WORD:5 46.09090909090909 (byte) current_xpos -(byte) current_xpos#1 current_xpos zp ZP_BYTE:31 0.72 -(byte) current_xpos#10 current_xpos zp ZP_BYTE:31 21.557692307692307 -(byte~) current_xpos#112 current_xpos#112 zp ZP_BYTE:10 1.3333333333333333 -(byte~) current_xpos#113 current_xpos#113 zp ZP_BYTE:10 7.333333333333333 -(byte) current_xpos#19 current_xpos zp ZP_BYTE:31 3.139534883720931 -(byte) current_xpos#2 current_xpos zp ZP_BYTE:31 4.0 -(byte) current_xpos#23 current_xpos zp ZP_BYTE:31 0.5333333333333333 -(byte) current_xpos#33 current_xpos zp ZP_BYTE:31 6.0 -(byte) current_xpos#4 current_xpos zp ZP_BYTE:31 4.0 -(byte) current_xpos#47 current_xpos#47 zp ZP_BYTE:10 5.181818181818182 +(byte) current_xpos#115 current_xpos zp ZP_BYTE:32 2.181818181818182 +(byte~) current_xpos#125 current_xpos#125 zp ZP_BYTE:10 1.3333333333333333 +(byte~) current_xpos#126 current_xpos#126 zp ZP_BYTE:10 7.333333333333333 +(byte) current_xpos#17 current_xpos zp ZP_BYTE:32 1.3000000000000003 +(byte) current_xpos#20 current_xpos zp ZP_BYTE:32 0.7692307692307692 +(byte) current_xpos#24 current_xpos zp ZP_BYTE:32 0.4666666666666666 +(byte) current_xpos#28 current_xpos zp ZP_BYTE:32 0.43478260869565216 +(byte) current_xpos#41 current_xpos zp ZP_BYTE:32 6.0 +(byte) current_xpos#5 current_xpos zp ZP_BYTE:32 4.0 +(byte) current_xpos#57 current_xpos#57 zp ZP_BYTE:10 5.181818181818182 +(byte) current_xpos#7 current_xpos zp ZP_BYTE:32 4.0 (byte) current_ypos -(byte) current_ypos#0 current_ypos zp ZP_BYTE:16 4.0 -(byte) current_ypos#13 current_ypos zp ZP_BYTE:16 1.8999999999999995 -(byte) current_ypos#18 current_ypos zp ZP_BYTE:16 0.5714285714285714 -(byte) current_ypos#21 current_ypos zp ZP_BYTE:16 3.485714285714285 -(byte) current_ypos#29 current_ypos zp ZP_BYTE:16 6.0 -(byte~) current_ypos#86 reg byte y 1.0 -(byte~) current_ypos#87 reg byte y 4.4 -(byte) current_ypos#9 reg byte y 15.0 +(byte~) current_ypos#100 reg byte x 4.4 +(byte) current_ypos#11 reg byte x 15.0 +(byte) current_ypos#17 current_ypos zp ZP_BYTE:16 0.41025641025641035 +(byte) current_ypos#2 current_ypos zp ZP_BYTE:16 4.0 +(byte) current_ypos#22 current_ypos zp ZP_BYTE:16 0.4545454545454546 +(byte) current_ypos#25 current_ypos zp ZP_BYTE:16 0.5526315789473684 +(byte) current_ypos#36 current_ypos zp ZP_BYTE:16 6.0 +(byte~) current_ypos#99 reg byte x 1.0 +(byte) game_over +(byte) game_over#14 game_over zp ZP_BYTE:33 0.4594594594594595 +(byte) game_over#15 game_over zp ZP_BYTE:33 0.46153846153846156 +(byte) game_over#19 game_over zp ZP_BYTE:33 0.6382978723404255 +(byte) game_over#26 game_over zp ZP_BYTE:33 6.0 +(byte) game_over#69 game_over zp ZP_BYTE:33 0.19047619047619047 (byte) irq_cnt -(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:38 0.19047619047619047 -(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:38 4.0 -(byte) irq_cnt#14 irq_cnt zp ZP_BYTE:38 20.0 +(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:39 0.17391304347826086 +(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:39 3.0 +(byte) irq_cnt#2 irq_cnt zp ZP_BYTE:39 20.0 (byte) irq_raster_next -(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:34 0.17391304347826086 -(byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:34 1.0 -(byte) irq_raster_next#13 irq_raster_next zp ZP_BYTE:34 6.0 -(byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:34 1.3333333333333333 +(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:35 0.3076923076923077 +(byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:35 1.0 +(byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:35 1.3333333333333333 +(byte) irq_raster_next#3 irq_raster_next zp ZP_BYTE:35 1.3333333333333333 +(byte) irq_raster_next#4 irq_raster_next zp ZP_BYTE:35 8.0 (byte) irq_sprite_ptr -(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:37 0.24 -(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:37 20.0 -(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:37 20.0 +(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:38 0.25806451612903225 +(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:38 20.0 +(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:38 20.0 +(byte) irq_sprite_ptr#3 irq_sprite_ptr zp ZP_BYTE:38 20.0 (byte) irq_sprite_ypos -(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:36 0.7083333333333334 -(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:36 20.0 -(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:36 20.0 +(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:37 0.27586206896551724 +(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:37 20.0 +(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:37 20.0 +(byte) irq_sprite_ypos#3 irq_sprite_ypos zp ZP_BYTE:37 20.0 (byte[]) keyboard_char_keycodes (byte()) keyboard_event_get() (label) keyboard_event_get::@3 (label) keyboard_event_get::@return (byte) keyboard_event_get::return -(byte) keyboard_event_get::return#1 reg byte a 4.0 -(byte) keyboard_event_get::return#2 reg byte a 34.33333333333333 -(byte) keyboard_event_get::return#3 reg byte a 202.0 +(byte) keyboard_event_get::return#1 reg byte x 4.0 +(byte) keyboard_event_get::return#2 reg byte x 4.333333333333333 +(byte) keyboard_event_get::return#3 reg byte x 22.0 (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode) (byte~) keyboard_event_pressed::$0 reg byte a 4.0 (byte~) keyboard_event_pressed::$1 reg byte a 4.0 @@ -19726,13 +21041,13 @@ FINAL SYMBOL TABLE (byte) keyboard_event_pressed::row_bits (byte) keyboard_event_pressed::row_bits#0 row_bits zp ZP_BYTE:10 2.0 (void()) keyboard_event_scan() -(byte/word/dword~) keyboard_event_scan::$11 reg byte a 20002.0 +(byte/word/dword~) keyboard_event_scan::$11 reg byte a 2002.0 (byte~) keyboard_event_scan::$14 reg byte a 4.0 (byte~) keyboard_event_scan::$18 reg byte a 4.0 (byte~) keyboard_event_scan::$22 reg byte a 4.0 (byte~) keyboard_event_scan::$26 reg byte a 4.0 -(byte~) keyboard_event_scan::$3 reg byte a 20002.0 -(byte~) keyboard_event_scan::$4 reg byte a 20002.0 +(byte~) keyboard_event_scan::$3 reg byte a 2002.0 +(byte~) keyboard_event_scan::$4 reg byte a 2002.0 (label) keyboard_event_scan::@1 (label) keyboard_event_scan::@10 (label) keyboard_event_scan::@11 @@ -19758,43 +21073,43 @@ FINAL SYMBOL TABLE (label) keyboard_event_scan::@9 (label) keyboard_event_scan::@return (byte) keyboard_event_scan::col -(byte) keyboard_event_scan::col#1 reg byte x 15001.5 -(byte) keyboard_event_scan::col#2 reg byte x 2857.4285714285716 +(byte) keyboard_event_scan::col#1 reg byte x 1501.5 +(byte) keyboard_event_scan::col#2 reg byte x 286.0 (byte) keyboard_event_scan::event_type -(byte) keyboard_event_scan::event_type#0 reg byte a 20002.0 +(byte) keyboard_event_scan::event_type#0 reg byte a 2002.0 (byte) keyboard_event_scan::keycode -(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:10 2002.0 -(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:10 3154.230769230769 -(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:10 500.5 -(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:10 1001.0 -(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:10 5250.75 +(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:10 202.0 +(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:10 315.7692307692308 +(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:10 50.5 +(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:10 101.0 +(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:10 525.75 (byte) keyboard_event_scan::row -(byte) keyboard_event_scan::row#1 row zp ZP_BYTE:9 1501.5 -(byte) keyboard_event_scan::row#2 row zp ZP_BYTE:9 600.24 +(byte) keyboard_event_scan::row#1 row zp ZP_BYTE:9 151.5 +(byte) keyboard_event_scan::row#2 row zp ZP_BYTE:9 60.24 (byte) keyboard_event_scan::row_scan -(byte) keyboard_event_scan::row_scan#0 row_scan zp ZP_BYTE:11 1278.0555555555554 +(byte) keyboard_event_scan::row_scan#0 row_scan zp ZP_BYTE:11 128.05555555555557 (byte[8]) keyboard_events (const byte[8]) keyboard_events#0 keyboard_events = { fill( 8, 0) } (byte) keyboard_events_size -(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:33 20002.0 -(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:33 8100.9000000000015 -(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:33 97.06451612903226 -(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:33 3.515151515151515 -(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:33 18.999999999999996 -(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:33 20002.0 -(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:33 429.2857142857143 -(byte) keyboard_events_size#30 keyboard_events_size zp ZP_BYTE:33 10201.2 -(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:33 3.0 +(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:34 2002.0 +(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:34 810.9000000000001 +(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:34 9.967741935483872 +(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:34 0.6 +(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:34 1.8571428571428572 +(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:34 2002.0 +(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:34 43.57142857142858 +(byte) keyboard_events_size#30 keyboard_events_size zp ZP_BYTE:34 1021.2 +(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:34 3.0 (byte[8]) keyboard_matrix_col_bitmask (const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 334.33333333333337 -(byte) keyboard_matrix_read::return#2 reg byte a 2002.0 +(byte) keyboard_matrix_read::return#0 reg byte a 34.33333333333333 +(byte) keyboard_matrix_read::return#2 reg byte a 202.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte x 1003.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 103.0 (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte) keyboard_modifiers @@ -19807,40 +21122,31 @@ FINAL SYMBOL TABLE (byte[8]) keyboard_scan_values (const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) } (byte) level -(byte) level#12 level zp ZP_BYTE:23 4.0 -(byte) level#14 level zp ZP_BYTE:23 1.3333333333333333 -(byte) level#16 level zp ZP_BYTE:23 0.4444444444444444 -(byte) level#19 level zp ZP_BYTE:23 2.2181818181818174 -(byte) level#24 level zp ZP_BYTE:23 6.0 +(byte) level#10 level zp ZP_BYTE:23 0.36206896551724144 +(byte) level#16 level zp ZP_BYTE:23 0.40540540540540543 +(byte) level#18 level zp ZP_BYTE:23 1.3333333333333333 +(byte) level#20 level zp ZP_BYTE:23 0.4444444444444444 +(byte) level#31 level zp ZP_BYTE:23 6.0 (byte) level_bcd -(byte) level_bcd#13 level_bcd zp ZP_BYTE:25 2.313725490196078 -(byte) level_bcd#15 level_bcd zp ZP_BYTE:25 1.3333333333333333 -(byte) level_bcd#17 level_bcd zp ZP_BYTE:25 2.6666666666666665 -(byte) level_bcd#20 level_bcd zp ZP_BYTE:25 2.0677966101694913 -(byte) level_bcd#25 level_bcd zp ZP_BYTE:25 6.0 -(byte) level_bcd#55 level_bcd zp ZP_BYTE:25 0.6000000000000001 -(byte) level_bcd#6 level_bcd zp ZP_BYTE:25 4.0 +(byte) level_bcd#11 level_bcd zp ZP_BYTE:25 0.33870967741935476 +(byte) level_bcd#17 level_bcd zp ZP_BYTE:25 0.288135593220339 +(byte) level_bcd#19 level_bcd zp ZP_BYTE:25 1.3333333333333333 +(byte) level_bcd#21 level_bcd zp ZP_BYTE:25 2.6666666666666665 +(byte) level_bcd#32 level_bcd zp ZP_BYTE:25 6.0 +(byte) level_bcd#63 level_bcd zp ZP_BYTE:25 0.6000000000000001 +(byte) level_bcd#8 level_bcd zp ZP_BYTE:25 4.0 (word) lines_bcd -(word) lines_bcd#11 lines_bcd zp ZP_WORD:17 2.352941176470588 -(word) lines_bcd#13 lines_bcd zp ZP_WORD:17 1.3333333333333333 -(word) lines_bcd#15 lines_bcd zp ZP_WORD:17 2.5416666666666656 -(word) lines_bcd#20 lines_bcd zp ZP_WORD:17 6.0 -(word) lines_bcd#23 lines_bcd zp ZP_WORD:17 1.0 +(word) lines_bcd#15 lines_bcd zp ZP_WORD:17 0.3220338983050848 +(word) lines_bcd#17 lines_bcd zp ZP_WORD:17 1.3333333333333333 +(word) lines_bcd#19 lines_bcd zp ZP_WORD:17 0.4117647058823528 +(word) lines_bcd#27 lines_bcd zp ZP_WORD:17 6.0 +(word) lines_bcd#30 lines_bcd zp ZP_WORD:17 1.0 (void()) main() -(byte~) main::$12 reg byte a 202.0 -(byte~) main::$13 reg byte a 202.0 -(byte~) main::$14 reg byte a 202.0 +(byte~) main::$9 reg byte a 22.0 (label) main::@1 -(label) main::@13 -(label) main::@15 -(label) main::@16 -(label) main::@17 -(label) main::@18 -(label) main::@19 -(label) main::@20 -(label) main::@21 +(label) main::@11 +(label) main::@12 (label) main::@23 -(label) main::@24 (label) main::@25 (label) main::@26 (label) main::@27 @@ -19848,16 +21154,23 @@ FINAL SYMBOL TABLE (label) main::@29 (label) main::@30 (label) main::@31 +(label) main::@33 +(label) main::@34 +(label) main::@35 +(label) main::@36 +(label) main::@37 +(label) main::@38 +(label) main::@39 (label) main::@4 (label) main::@6 +(label) main::@7 +(label) main::@9 (byte) main::key_event -(byte) main::key_event#0 key_event zp ZP_BYTE:15 36.72727272727273 +(byte) main::key_event#0 reg byte x 11.0 (byte) main::render -(byte) main::render#1 render zp ZP_BYTE:39 40.4 -(byte) main::render#2 render zp ZP_BYTE:39 40.4 -(byte) main::render#3 reg byte a 202.0 +(byte) main::render#1 reg byte a 22.0 (byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) -(byte~) play_collision::$7 reg byte a 20002.0 +(byte~) play_collision::$7 reg byte a 2002.0 (label) play_collision::@1 (label) play_collision::@17 (label) play_collision::@2 @@ -19870,53 +21183,56 @@ FINAL SYMBOL TABLE (label) play_collision::@8 (label) play_collision::@return (byte) play_collision::c -(byte) play_collision::c#1 reg byte x 10001.0 -(byte) play_collision::c#2 reg byte x 2222.4444444444443 +(byte) play_collision::c#1 reg byte x 1001.0 +(byte) play_collision::c#2 reg byte x 222.44444444444446 (byte) play_collision::col -(byte) play_collision::col#1 col zp ZP_BYTE:14 5000.5 -(byte) play_collision::col#2 col zp ZP_BYTE:14 6375.75 -(byte~) play_collision::col#9 col zp ZP_BYTE:14 2002.0 +(byte) play_collision::col#1 col zp ZP_BYTE:15 500.5 +(byte) play_collision::col#2 col zp ZP_BYTE:15 638.25 +(byte~) play_collision::col#9 col zp ZP_BYTE:15 202.0 (byte) play_collision::i -(byte) play_collision::i#1 i zp ZP_BYTE:40 1615.6153846153845 -(byte~) play_collision::i#11 i#11 zp ZP_BYTE:13 2002.0 -(byte~) play_collision::i#13 i#13 zp ZP_BYTE:13 20002.0 -(byte) play_collision::i#2 i#2 zp ZP_BYTE:13 15502.0 -(byte) play_collision::i#3 i#3 zp ZP_BYTE:13 667.3333333333334 +(byte) play_collision::i#1 i zp ZP_BYTE:41 161.76923076923077 +(byte~) play_collision::i#11 i#11 zp ZP_BYTE:14 202.0 +(byte~) play_collision::i#13 i#13 zp ZP_BYTE:14 2002.0 +(byte) play_collision::i#2 i#2 zp ZP_BYTE:14 1552.0 +(byte) play_collision::i#3 i#3 zp ZP_BYTE:14 67.33333333333333 (byte) play_collision::l -(byte) play_collision::l#1 l zp ZP_BYTE:12 1001.0 -(byte) play_collision::l#6 l zp ZP_BYTE:12 125.125 +(byte) play_collision::l#1 l zp ZP_BYTE:13 101.0 +(byte) play_collision::l#6 l zp ZP_BYTE:13 12.625 (byte) play_collision::orientation (byte) play_collision::orientation#0 reg byte x 2.0 (byte) play_collision::orientation#1 reg byte x 2.0 (byte) play_collision::orientation#2 reg byte x 2.0 (byte) play_collision::orientation#3 reg byte x 2.0 -(byte) play_collision::orientation#4 reg byte x 10.0 +(byte) play_collision::orientation#5 reg byte x 10.0 (byte*) play_collision::piece_gfx -(byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:5 476.3333333333333 +(byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:5 47.76190476190476 (byte*) play_collision::playfield_line -(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:7 785.8571428571429 +(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:7 78.71428571428571 (byte) play_collision::return (byte) play_collision::return#0 reg byte a 4.0 (byte) play_collision::return#1 reg byte a 4.0 -(byte) play_collision::return#12 reg byte a 4.0 +(byte) play_collision::return#10 reg byte a 4.0 (byte) play_collision::return#13 reg byte a 4.0 -(byte) play_collision::return#14 reg byte a 1.3333333333333333 +(byte) play_collision::return#14 reg byte a 4.0 +(byte) play_collision::return#15 reg byte a 1.4285714285714284 (byte) play_collision::xpos -(byte) play_collision::xpos#0 xpos zp ZP_BYTE:10 1.3333333333333333 -(byte) play_collision::xpos#1 xpos zp ZP_BYTE:10 1.0 -(byte) play_collision::xpos#2 xpos zp ZP_BYTE:10 1.0 -(byte) play_collision::xpos#3 xpos zp ZP_BYTE:10 1.0 -(byte) play_collision::xpos#5 xpos zp ZP_BYTE:10 45.86363636363637 +(byte) play_collision::xpos#0 xpos zp ZP_BYTE:12 1.3333333333333333 +(byte) play_collision::xpos#1 xpos zp ZP_BYTE:12 1.0 +(byte) play_collision::xpos#2 xpos zp ZP_BYTE:12 1.0 +(byte) play_collision::xpos#3 xpos zp ZP_BYTE:12 1.0 +(byte) play_collision::xpos#4 xpos zp ZP_BYTE:12 1.3333333333333333 +(byte) play_collision::xpos#6 xpos zp ZP_BYTE:12 5.045454545454545 (byte) play_collision::ypos -(byte) play_collision::ypos#0 reg byte y 1.0 -(byte) play_collision::ypos#1 reg byte y 1.3333333333333333 -(byte) play_collision::ypos#2 reg byte y 1.3333333333333333 -(byte) play_collision::ypos#3 reg byte y 1.3333333333333333 -(byte) play_collision::ypos#4 reg byte y 5.0 +(byte) play_collision::ypos#0 ypos zp ZP_BYTE:11 1.0 +(byte) play_collision::ypos#1 ypos zp ZP_BYTE:11 1.3333333333333333 +(byte) play_collision::ypos#2 ypos zp ZP_BYTE:11 1.3333333333333333 +(byte) play_collision::ypos#3 ypos zp ZP_BYTE:11 1.3333333333333333 +(byte) play_collision::ypos#4 ypos zp ZP_BYTE:11 2.0 +(byte) play_collision::ypos#5 ypos zp ZP_BYTE:11 6.0 (byte) play_collision::ypos2 (byte) play_collision::ypos2#0 ypos2 zp ZP_BYTE:11 4.0 -(byte) play_collision::ypos2#1 ypos2 zp ZP_BYTE:11 500.5 -(byte) play_collision::ypos2#2 ypos2 zp ZP_BYTE:11 867.0666666666667 +(byte) play_collision::ypos2#1 ypos2 zp ZP_BYTE:11 50.5 +(byte) play_collision::ypos2#2 ypos2 zp ZP_BYTE:11 87.06666666666668 (void()) play_increase_level() (byte~) play_increase_level::$1 reg byte a 4.0 (label) play_increase_level::@2 @@ -19927,10 +21243,10 @@ FINAL SYMBOL TABLE (label) play_increase_level::@8 (label) play_increase_level::@return (byte) play_increase_level::b -(byte) play_increase_level::b#1 reg byte x 1501.5 -(byte) play_increase_level::b#2 reg byte x 1001.0 +(byte) play_increase_level::b#1 reg byte x 151.5 +(byte) play_increase_level::b#2 reg byte x 101.0 (byte) play_increase_level::b4 -(byte) play_increase_level::b4#0 reg byte a 4004.0 +(byte) play_increase_level::b4#0 reg byte a 404.0 (void()) play_init() (byte~) play_init::$1 reg byte a 22.0 (label) play_init::@1 @@ -19961,27 +21277,27 @@ FINAL SYMBOL TABLE (label) play_lock_current::@8 (label) play_lock_current::@return (byte) play_lock_current::c -(byte) play_lock_current::c#1 reg byte x 10001.0 -(byte) play_lock_current::c#2 reg byte x 4000.4 +(byte) play_lock_current::c#1 reg byte x 1001.0 +(byte) play_lock_current::c#2 reg byte x 400.4 (byte) play_lock_current::col -(byte) play_lock_current::col#0 col zp ZP_BYTE:10 2002.0 -(byte) play_lock_current::col#1 col zp ZP_BYTE:10 5000.5 -(byte) play_lock_current::col#2 col zp ZP_BYTE:10 7751.0 +(byte) play_lock_current::col#0 col zp ZP_BYTE:10 202.0 +(byte) play_lock_current::col#1 col zp ZP_BYTE:10 500.5 +(byte) play_lock_current::col#2 col zp ZP_BYTE:10 776.0 (byte) play_lock_current::i -(byte) play_lock_current::i#1 i zp ZP_BYTE:11 2333.6666666666665 -(byte) play_lock_current::i#2 i#2 zp ZP_BYTE:9 15502.0 -(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:9 667.3333333333334 -(byte~) play_lock_current::i#7 i#7 zp ZP_BYTE:9 2002.0 -(byte~) play_lock_current::i#9 i#9 zp ZP_BYTE:9 20002.0 +(byte) play_lock_current::i#1 i zp ZP_BYTE:11 233.66666666666669 +(byte) play_lock_current::i#2 i#2 zp ZP_BYTE:9 1552.0 +(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:9 67.33333333333333 +(byte~) play_lock_current::i#7 i#7 zp ZP_BYTE:9 202.0 +(byte~) play_lock_current::i#9 i#9 zp ZP_BYTE:9 2002.0 (byte) play_lock_current::l -(byte) play_lock_current::l#1 l zp ZP_BYTE:4 1001.0 -(byte) play_lock_current::l#6 l zp ZP_BYTE:4 166.83333333333334 +(byte) play_lock_current::l#1 l zp ZP_BYTE:4 101.0 +(byte) play_lock_current::l#6 l zp ZP_BYTE:4 16.833333333333332 (byte*) play_lock_current::playfield_line -(byte*) play_lock_current::playfield_line#0 playfield_line zp ZP_WORD:5 1100.2 +(byte*) play_lock_current::playfield_line#0 playfield_line zp ZP_WORD:5 110.19999999999999 (byte) play_lock_current::ypos2 (byte) play_lock_current::ypos2#0 ypos2 zp ZP_BYTE:16 4.0 -(byte) play_lock_current::ypos2#1 ypos2 zp ZP_BYTE:16 500.5 -(byte) play_lock_current::ypos2#2 ypos2 zp ZP_BYTE:16 273.1818181818182 +(byte) play_lock_current::ypos2#1 ypos2 zp ZP_BYTE:16 50.5 +(byte) play_lock_current::ypos2#2 ypos2 zp ZP_BYTE:16 27.727272727272727 (byte()) play_move_down((byte) play_move_down::key_event) (byte~) play_move_down::$12 reg byte a 4.0 (byte~) play_move_down::$2 reg byte a 4.0 @@ -20003,7 +21319,7 @@ FINAL SYMBOL TABLE (label) play_move_down::@9 (label) play_move_down::@return (byte) play_move_down::key_event -(byte) play_move_down::key_event#0 reg byte a 51.5 +(byte) play_move_down::key_event#0 reg byte a 2.0 (byte) play_move_down::movedown (byte) play_move_down::movedown#10 reg byte x 1.0 (byte) play_move_down::movedown#2 reg byte x 4.0 @@ -20013,8 +21329,8 @@ FINAL SYMBOL TABLE (byte) play_move_down::removed (byte) play_move_down::removed#0 reg byte a 4.0 (byte) play_move_down::return -(byte) play_move_down::return#2 reg byte x 33.666666666666664 -(byte) play_move_down::return#3 reg byte a 202.0 +(byte) play_move_down::return#0 reg byte a 4.0 +(byte) play_move_down::return#3 reg byte x 0.6666666666666666 (byte()) play_move_leftright((byte) play_move_leftright::key_event) (byte~) play_move_leftright::$4 reg byte a 4.0 (byte~) play_move_leftright::$8 reg byte a 4.0 @@ -20027,10 +21343,10 @@ FINAL SYMBOL TABLE (label) play_move_leftright::@8 (label) play_move_leftright::@return (byte) play_move_leftright::key_event -(byte) play_move_leftright::key_event#0 reg byte a 52.5 +(byte) play_move_leftright::key_event#0 reg byte a 3.0 (byte) play_move_leftright::return -(byte) play_move_leftright::return#1 reg byte a 33.666666666666664 -(byte) play_move_leftright::return#4 reg byte a 202.0 +(byte) play_move_leftright::return#0 reg byte a 4.0 +(byte) play_move_leftright::return#2 reg byte a 0.6666666666666666 (byte()) play_move_rotate((byte) play_move_rotate::key_event) (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 reg byte a 4.0 (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 reg byte a 4.0 @@ -20043,14 +21359,32 @@ FINAL SYMBOL TABLE (label) play_move_rotate::@6 (label) play_move_rotate::@return (byte) play_move_rotate::key_event -(byte) play_move_rotate::key_event#0 reg byte a 52.5 +(byte) play_move_rotate::key_event#0 reg byte a 3.0 (byte) play_move_rotate::orientation -(byte) play_move_rotate::orientation#1 orientation zp ZP_BYTE:9 4.0 -(byte) play_move_rotate::orientation#2 orientation zp ZP_BYTE:9 4.0 -(byte) play_move_rotate::orientation#3 orientation zp ZP_BYTE:9 0.8888888888888888 +(byte) play_move_rotate::orientation#1 orientation zp ZP_BYTE:10 4.0 +(byte) play_move_rotate::orientation#2 orientation zp ZP_BYTE:10 4.0 +(byte) play_move_rotate::orientation#3 orientation zp ZP_BYTE:10 0.8888888888888888 (byte) play_move_rotate::return -(byte) play_move_rotate::return#1 reg byte a 33.666666666666664 -(byte) play_move_rotate::return#4 reg byte a 202.0 +(byte) play_move_rotate::return#0 reg byte a 4.0 +(byte) play_move_rotate::return#2 reg byte a 0.6666666666666666 +(byte()) play_movement((byte) play_movement::key_event) +(byte~) play_movement::$0 reg byte a 4.0 +(byte~) play_movement::$3 reg byte a 4.0 +(byte~) play_movement::$4 reg byte a 4.0 +(label) play_movement::@1 +(label) play_movement::@5 +(label) play_movement::@6 +(label) play_movement::@7 +(label) play_movement::@return +(byte) play_movement::key_event +(byte) play_movement::key_event#0 key_event zp ZP_BYTE:40 1.4166666666666667 +(byte) play_movement::render +(byte) play_movement::render#1 render zp ZP_BYTE:9 1.0 +(byte) play_movement::render#2 render zp ZP_BYTE:9 0.8 +(byte) play_movement::return +(byte) play_movement::return#0 return zp ZP_BYTE:9 4.0 +(byte) play_movement::return#2 return zp ZP_BYTE:9 5.0 +(byte) play_movement::return#3 reg byte a 22.0 (byte()) play_remove_lines() (label) play_remove_lines::@1 (label) play_remove_lines::@10 @@ -20063,45 +21397,48 @@ FINAL SYMBOL TABLE (label) play_remove_lines::@9 (label) play_remove_lines::@return (byte) play_remove_lines::c -(byte) play_remove_lines::c#0 c zp ZP_BYTE:12 6000.6 +(byte) play_remove_lines::c#0 c zp ZP_BYTE:12 600.5999999999999 (byte) play_remove_lines::full -(byte) play_remove_lines::full#2 full zp ZP_BYTE:11 4200.6 -(byte) play_remove_lines::full#4 full zp ZP_BYTE:11 4000.4 +(byte) play_remove_lines::full#2 full zp ZP_BYTE:11 420.59999999999997 +(byte) play_remove_lines::full#4 full zp ZP_BYTE:11 400.4 (byte) play_remove_lines::r -(byte) play_remove_lines::r#1 reg byte y 1500.2142857142858 -(byte) play_remove_lines::r#2 reg byte y 15502.0 -(byte) play_remove_lines::r#3 reg byte y 2002.0 +(byte) play_remove_lines::r#1 reg byte y 150.21428571428572 +(byte) play_remove_lines::r#2 reg byte y 1552.0 +(byte) play_remove_lines::r#3 reg byte y 202.0 (byte) play_remove_lines::removed -(byte) play_remove_lines::removed#1 removed zp ZP_BYTE:9 2002.0 -(byte) play_remove_lines::removed#11 removed zp ZP_BYTE:9 231.0 -(byte) play_remove_lines::removed#7 removed zp ZP_BYTE:9 333.8888888888889 +(byte) play_remove_lines::removed#1 removed zp ZP_BYTE:9 202.0 +(byte) play_remove_lines::removed#11 removed zp ZP_BYTE:9 23.307692307692307 +(byte) play_remove_lines::removed#7 removed zp ZP_BYTE:9 33.888888888888886 (byte) play_remove_lines::return (byte) play_remove_lines::return#0 reg byte a 4.0 (byte) play_remove_lines::w -(byte) play_remove_lines::w#1 reg byte x 5501.0 -(byte) play_remove_lines::w#11 reg byte x 1334.6666666666667 -(byte) play_remove_lines::w#12 reg byte x 2002.0 -(byte) play_remove_lines::w#2 reg byte x 1001.0 -(byte) play_remove_lines::w#3 reg byte x 2002.0 -(byte) play_remove_lines::w#4 reg byte x 4429.142857142857 -(byte) play_remove_lines::w#6 reg byte x 1668.3333333333335 +(byte) play_remove_lines::w#1 reg byte x 551.0 +(byte) play_remove_lines::w#11 reg byte x 134.66666666666666 +(byte) play_remove_lines::w#12 reg byte x 202.0 +(byte) play_remove_lines::w#2 reg byte x 101.0 +(byte) play_remove_lines::w#3 reg byte x 202.0 +(byte) play_remove_lines::w#4 reg byte x 443.42857142857144 +(byte) play_remove_lines::w#6 reg byte x 168.33333333333331 (byte) play_remove_lines::x -(byte) play_remove_lines::x#1 x zp ZP_BYTE:10 15001.5 -(byte) play_remove_lines::x#2 x zp ZP_BYTE:10 2500.25 +(byte) play_remove_lines::x#1 x zp ZP_BYTE:10 1501.5 +(byte) play_remove_lines::x#2 x zp ZP_BYTE:10 250.25 (byte) play_remove_lines::y -(byte) play_remove_lines::y#1 y zp ZP_BYTE:4 1501.5 -(byte) play_remove_lines::y#8 y zp ZP_BYTE:4 133.46666666666667 +(byte) play_remove_lines::y#1 y zp ZP_BYTE:4 151.5 +(byte) play_remove_lines::y#8 y zp ZP_BYTE:4 13.466666666666667 (void()) play_spawn_current() -(byte~) play_spawn_current::$1 reg byte a 2002.0 -(byte~) play_spawn_current::$3 $3 zp ZP_BYTE:4 0.13333333333333333 +(byte~) play_spawn_current::$1 reg byte a 202.0 +(byte~) play_spawn_current::$3 $3 zp ZP_BYTE:4 0.08333333333333333 +(byte~) play_spawn_current::$5 reg byte a 4.0 (label) play_spawn_current::@1 +(label) play_spawn_current::@10 +(label) play_spawn_current::@11 (label) play_spawn_current::@2 (label) play_spawn_current::@3 -(label) play_spawn_current::@7 +(label) play_spawn_current::@9 (label) play_spawn_current::@return (byte) play_spawn_current::piece_idx -(byte) play_spawn_current::piece_idx#1 reg byte x 2002.0 -(byte) play_spawn_current::piece_idx#2 reg byte x 334.99999999999994 +(byte) play_spawn_current::piece_idx#1 reg byte x 202.0 +(byte) play_spawn_current::piece_idx#2 reg byte x 35.00000000000001 (void()) play_update_score((byte) play_update_score::removed) (byte~) play_update_score::$2 reg byte a 4.0 (byte~) play_update_score::$4 reg byte a 4.0 @@ -20110,7 +21447,7 @@ FINAL SYMBOL TABLE (label) play_update_score::@4 (label) play_update_score::@return (dword) play_update_score::add_bcd -(dword) play_update_score::add_bcd#0 add_bcd zp ZP_DWORD:41 1.3333333333333333 +(dword) play_update_score::add_bcd#0 add_bcd zp ZP_DWORD:42 1.3333333333333333 (byte) play_update_score::lines_after (byte) play_update_score::lines_after#0 reg byte a 4.0 (byte) play_update_score::lines_before @@ -20132,7 +21469,7 @@ FINAL SYMBOL TABLE (label) render_bcd::@2 (label) render_bcd::@return (byte) render_bcd::ZERO_CHAR -(const byte) render_bcd::ZERO_CHAR#0 ZERO_CHAR = (byte/signed byte/word/signed word/dword/signed dword) 51 +(const byte) render_bcd::ZERO_CHAR#0 ZERO_CHAR = (byte/signed byte/word/signed word/dword/signed dword) 53 (byte) render_bcd::bcd (byte) render_bcd::bcd#0 reg byte x 4.0 (byte) render_bcd::bcd#1 reg byte x 4.0 @@ -20199,29 +21536,29 @@ FINAL SYMBOL TABLE (label) render_moving::@9 (label) render_moving::@return (byte) render_moving::c -(byte) render_moving::c#1 c zp ZP_BYTE:15 1501.5 -(byte) render_moving::c#2 c zp ZP_BYTE:15 286.0 +(byte) render_moving::c#1 reg byte x 1501.5 +(byte) render_moving::c#2 reg byte x 286.0 (byte) render_moving::current_cell (byte) render_moving::current_cell#0 reg byte a 1001.0 (byte) render_moving::i -(byte) render_moving::i#1 i zp ZP_BYTE:13 202.0 -(byte) render_moving::i#10 i zp ZP_BYTE:13 429.0 -(byte) render_moving::i#3 i zp ZP_BYTE:13 50.5 -(byte) render_moving::i#4 i zp ZP_BYTE:13 1552.0 -(byte) render_moving::i#8 i zp ZP_BYTE:13 300.75 +(byte) render_moving::i#1 i zp ZP_BYTE:14 202.0 +(byte) render_moving::i#10 i zp ZP_BYTE:14 429.0 +(byte) render_moving::i#3 i zp ZP_BYTE:14 50.5 +(byte) render_moving::i#4 i zp ZP_BYTE:14 1552.0 +(byte) render_moving::i#8 i zp ZP_BYTE:14 300.75 (byte) render_moving::l -(byte) render_moving::l#1 l zp ZP_BYTE:12 151.5 -(byte) render_moving::l#4 l zp ZP_BYTE:12 11.222222222222221 +(byte) render_moving::l#1 l zp ZP_BYTE:13 151.5 +(byte) render_moving::l#4 l zp ZP_BYTE:13 11.222222222222221 (byte*) render_moving::screen_line (byte*) render_moving::screen_line#0 screen_line zp ZP_WORD:7 100.18181818181819 (byte) render_moving::xpos -(byte) render_moving::xpos#0 xpos zp ZP_BYTE:14 202.0 -(byte) render_moving::xpos#1 xpos zp ZP_BYTE:14 667.3333333333334 -(byte) render_moving::xpos#2 xpos zp ZP_BYTE:14 684.1666666666667 +(byte) render_moving::xpos#0 xpos zp ZP_BYTE:15 202.0 +(byte) render_moving::xpos#1 xpos zp ZP_BYTE:15 667.3333333333334 +(byte) render_moving::xpos#2 xpos zp ZP_BYTE:15 684.1666666666667 (byte) render_moving::ypos2 -(byte) render_moving::ypos2#0 ypos2 zp ZP_BYTE:11 4.0 -(byte) render_moving::ypos2#1 ypos2 zp ZP_BYTE:11 67.33333333333333 -(byte) render_moving::ypos2#2 ypos2 zp ZP_BYTE:11 29.823529411764707 +(byte) render_moving::ypos2#0 ypos2 zp ZP_BYTE:12 4.0 +(byte) render_moving::ypos2#1 ypos2 zp ZP_BYTE:12 67.33333333333333 +(byte) render_moving::ypos2#2 ypos2 zp ZP_BYTE:12 29.823529411764707 (void()) render_playfield() (byte~) render_playfield::$2 reg byte a 202.0 (byte~) render_playfield::$3 reg byte a 202.0 @@ -20257,7 +21594,7 @@ FINAL SYMBOL TABLE (word) render_score::lines_offset (const word) render_score::lines_offset#0 lines_offset = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 22 (byte*) render_score::score_bytes -(const byte*) render_score::score_bytes#0 score_bytes = ((byte*))&(dword) score_bcd#10 +(const byte*) render_score::score_bytes#0 score_bytes = ((byte*))&(dword) score_bcd#14 (word) render_score::score_offset (const word) render_score::score_offset#0 score_offset = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5+(byte/signed byte/word/signed word/dword/signed dword) 28 (byte*) render_score::screen @@ -20308,17 +21645,19 @@ FINAL SYMBOL TABLE (byte) render_screen_original::y#6 y zp ZP_BYTE:2 0.9166666666666666 (byte) render_screen_render (byte) render_screen_render#11 render_screen_render zp ZP_BYTE:3 3.25 -(byte) render_screen_render#17 render_screen_render zp ZP_BYTE:3 0.6271186440677967 +(byte) render_screen_render#17 render_screen_render zp ZP_BYTE:3 0.9600000000000001 (byte) render_screen_render#21 reg byte x 8.615384615384615 (byte) render_screen_render#30 render_screen_render#30 zp ZP_BYTE:9 5.090909090909091 -(byte~) render_screen_render#64 render_screen_render#64 zp ZP_BYTE:9 5.5 -(byte~) render_screen_render#65 reg byte x 22.0 +(byte) render_screen_render#33 render_screen_render zp ZP_BYTE:3 16.5 +(byte~) render_screen_render#68 render_screen_render#68 zp ZP_BYTE:9 5.5 +(byte~) render_screen_render#69 reg byte x 22.0 (byte) render_screen_show (byte) render_screen_show#13 render_screen_show zp ZP_BYTE:2 4.333333333333333 -(byte) render_screen_show#16 render_screen_show zp ZP_BYTE:2 0.37777777777777777 +(byte) render_screen_show#17 render_screen_show zp ZP_BYTE:2 1.0833333333333335 +(byte) render_screen_show#29 render_screen_show zp ZP_BYTE:2 16.5 (byte) render_screen_showing -(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:35 0.5 -(byte) render_screen_showing#1 render_screen_showing zp ZP_BYTE:35 20.0 +(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:36 0.4 +(byte) render_screen_showing#1 render_screen_showing zp ZP_BYTE:36 20.0 (void()) render_screen_swap() (label) render_screen_swap::@return (void()) render_show() @@ -20357,11 +21696,11 @@ FINAL SYMBOL TABLE (dword[5]) score_add_bcd (const dword[5]) score_add_bcd#0 score_add_bcd = { fill( 5, 0) } (dword) score_bcd -(dword) score_bcd#10 score_bcd zp ZP_DWORD:19 4.0 -(dword) score_bcd#12 score_bcd zp ZP_DWORD:19 1.3333333333333333 -(dword) score_bcd#14 score_bcd zp ZP_DWORD:19 2.4489795918367347 -(dword) score_bcd#20 score_bcd zp ZP_DWORD:19 6.0 -(dword) score_bcd#23 score_bcd zp ZP_DWORD:19 0.8571428571428571 +(dword) score_bcd#14 score_bcd zp ZP_DWORD:19 0.40540540540540543 +(dword) score_bcd#16 score_bcd zp ZP_DWORD:19 1.3333333333333333 +(dword) score_bcd#18 score_bcd zp ZP_DWORD:19 0.3653846153846153 +(dword) score_bcd#27 score_bcd zp ZP_DWORD:19 6.0 +(dword) score_bcd#30 score_bcd zp ZP_DWORD:19 0.8571428571428571 (byte*[PLAYFIELD_LINES#0]) screen_lines_1 (const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 screen_lines_1 = { fill( PLAYFIELD_LINES#0, 0) } (byte*[PLAYFIELD_LINES#0]) screen_lines_2 @@ -20369,8 +21708,8 @@ FINAL SYMBOL TABLE (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return -(byte) sid_rnd::return#0 reg byte a 334.33333333333337 -(byte) sid_rnd::return#2 reg byte a 2002.0 +(byte) sid_rnd::return#0 reg byte a 34.33333333333333 +(byte) sid_rnd::return#2 reg byte a 202.0 (void()) sid_rnd_init() (label) sid_rnd_init::@return (void()) sprites_init() @@ -20385,29 +21724,27 @@ FINAL SYMBOL TABLE (byte) sprites_init::xpos#1 xpos zp ZP_BYTE:2 7.333333333333333 (byte) sprites_init::xpos#2 xpos zp ZP_BYTE:2 8.25 interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -(byte~) sprites_irq::$4 reg byte a 4.0 +(byte/signed word/word/dword/signed dword~) sprites_irq::$0 reg byte x 4.0 (label) sprites_irq::@1 -(label) sprites_irq::@10 +(label) sprites_irq::@11 (label) sprites_irq::@12 -(label) sprites_irq::@13 +(label) sprites_irq::@15 (label) sprites_irq::@2 (label) sprites_irq::@3 (label) sprites_irq::@4 (label) sprites_irq::@5 -(label) sprites_irq::@6 (label) sprites_irq::@7 (label) sprites_irq::@8 +(label) sprites_irq::@9 (label) sprites_irq::@return (byte) sprites_irq::ptr (byte) sprites_irq::ptr#0 reg byte x 2.5 (byte) sprites_irq::ptr#1 reg byte a 2.6666666666666665 (byte) sprites_irq::ptr#2 reg byte a 4.0 -(byte) sprites_irq::ptr#3 reg byte x 2.6666666666666665 -(byte) sprites_irq::ptr#4 reg byte x 4.0 -(byte) sprites_irq::raster_next -(byte) sprites_irq::raster_next#0 reg byte x 2.6666666666666665 -(byte) sprites_irq::raster_next#1 reg byte x 4.0 -(byte) sprites_irq::raster_next#2 reg byte x 6.0 +(byte) sprites_irq::ptr#3 reg byte a 2.6666666666666665 +(byte) sprites_irq::ptr#4 reg byte a 4.0 +(byte) sprites_irq::raster_sprite_gfx_modify +(byte) sprites_irq::raster_sprite_gfx_modify#0 raster_sprite_gfx_modify zp ZP_BYTE:46 6.5 (label) sprites_irq::toSpritePtr2 (word~) sprites_irq::toSpritePtr2_$0 (word~) sprites_irq::toSpritePtr2_$1 @@ -20427,75 +21764,68 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() (const byte) toSpritePtr1_return#0 toSpritePtr1_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 (byte*) toSpritePtr1_sprite -zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 render_screen_original::y#6 render_screen_original::y#1 ] -zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#11 ] -zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$3 play_update_score::lines_before#0 ] -zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 play_lock_current::playfield_line#0 ] +zp ZP_BYTE:2 [ render_screen_show#17 render_screen_show#29 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 render_screen_original::y#6 render_screen_original::y#1 ] +zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#33 render_screen_render#11 ] +zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$3 play_update_score::lines_before#0 ] +zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#16 current_piece#89 current_piece#90 current_piece#91 current_piece#92 current_piece#93 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 play_lock_current::playfield_line#0 ] zp ZP_WORD:7 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_bcd::screen_pos#1 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 render_moving::screen_line#0 play_collision::playfield_line#0 ] reg byte y [ render_bcd::only_low#6 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] -reg byte y [ current_ypos#9 current_ypos#86 current_ypos#87 ] -zp ZP_BYTE:9 [ render_screen_render#30 render_screen_render#64 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -zp ZP_BYTE:10 [ current_xpos#47 current_xpos#112 current_xpos#113 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 keyboard_event_pressed::row_bits#0 ] -reg byte x [ current_piece_char#64 current_piece_char#90 current_piece_char#91 ] -zp ZP_BYTE:11 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] -zp ZP_BYTE:12 [ render_moving::l#4 render_moving::l#1 play_collision::l#6 play_collision::l#1 play_remove_lines::c#0 ] -zp ZP_BYTE:13 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -zp ZP_BYTE:14 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -zp ZP_BYTE:15 [ render_moving::c#2 render_moving::c#1 main::key_event#0 ] -reg byte x [ render_screen_render#21 render_screen_render#65 ] -reg byte a [ play_move_rotate::return#1 ] -reg byte x [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -reg byte y [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] +reg byte x [ current_ypos#11 current_ypos#99 current_ypos#100 ] +zp ZP_BYTE:9 [ render_screen_render#30 render_screen_render#68 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +zp ZP_BYTE:10 [ current_xpos#57 current_xpos#125 current_xpos#126 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 keyboard_event_pressed::row_bits#0 ] +zp ZP_BYTE:11 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] +zp ZP_BYTE:12 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 play_remove_lines::c#0 ] +zp ZP_BYTE:13 [ render_moving::l#4 render_moving::l#1 play_collision::l#6 play_collision::l#1 ] +zp ZP_BYTE:14 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +zp ZP_BYTE:15 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +reg byte x [ render_moving::c#2 render_moving::c#1 ] +reg byte x [ render_screen_render#21 render_screen_render#69 ] +reg byte a [ play_move_rotate::return#2 ] +reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] -reg byte a [ play_collision::return#14 ] -reg byte a [ play_move_leftright::return#1 ] +reg byte a [ play_collision::return#15 ] +reg byte a [ play_move_leftright::return#2 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -zp ZP_BYTE:16 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -zp ZP_WORD:17 [ lines_bcd#20 lines_bcd#13 lines_bcd#15 lines_bcd#11 lines_bcd#23 render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] -zp ZP_DWORD:19 [ score_bcd#20 score_bcd#12 score_bcd#14 score_bcd#10 score_bcd#23 ] -zp ZP_BYTE:23 [ level#24 level#14 level#19 level#12 level#16 ] -zp ZP_BYTE:24 [ current_movedown_slow#31 current_movedown_slow#19 current_movedown_slow#12 current_movedown_slow#1 current_movedown_slow#17 current_movedown_slow#60 current_movedown_slow#8 ] -zp ZP_BYTE:25 [ level_bcd#25 level_bcd#15 level_bcd#20 level_bcd#13 level_bcd#55 level_bcd#17 level_bcd#6 ] -zp ZP_WORD:26 [ current_piece#20 current_piece#80 current_piece#16 current_piece#73 current_piece#10 render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] -zp ZP_BYTE:28 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] -zp ZP_WORD:29 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] -zp ZP_BYTE:31 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] -zp ZP_BYTE:32 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] -reg byte x [ play_move_down::return#2 ] +zp ZP_BYTE:16 [ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +zp ZP_WORD:17 [ lines_bcd#27 lines_bcd#17 lines_bcd#19 lines_bcd#15 lines_bcd#30 render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] +zp ZP_DWORD:19 [ score_bcd#27 score_bcd#16 score_bcd#18 score_bcd#14 score_bcd#30 ] +zp ZP_BYTE:23 [ level#31 level#18 level#10 level#16 level#20 ] +zp ZP_BYTE:24 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#68 current_movedown_slow#10 ] +zp ZP_BYTE:25 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#63 level_bcd#21 level_bcd#8 ] +zp ZP_WORD:26 [ current_piece#27 current_piece#94 current_piece#20 current_piece#14 current_piece#88 render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] +zp ZP_BYTE:28 [ current_piece_char#27 current_piece_char#19 current_piece_char#14 current_piece_char#16 ] +zp ZP_BYTE:29 [ current_orientation#36 current_orientation#12 current_orientation#16 current_orientation#19 current_orientation#24 current_orientation#7 ] +zp ZP_WORD:30 [ current_piece_gfx#33 current_piece_gfx#105 current_piece_gfx#16 current_piece_gfx#21 current_piece_gfx#18 current_piece_gfx#19 current_piece_gfx#6 ] +zp ZP_BYTE:32 [ current_xpos#41 current_xpos#115 current_xpos#17 current_xpos#28 current_xpos#20 current_xpos#24 current_xpos#7 current_xpos#5 ] +reg byte x [ play_move_down::return#3 ] +zp ZP_BYTE:33 [ game_over#69 game_over#26 game_over#19 game_over#14 game_over#15 ] reg byte x [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] -reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -zp ZP_BYTE:33 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +zp ZP_BYTE:34 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] reg byte a [ render_show::d018val#3 ] reg byte x [ play_init::j#2 play_init::j#1 ] reg byte x [ play_init::b#2 play_init::b#1 ] reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] -zp ZP_BYTE:34 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] -reg byte x [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] -zp ZP_BYTE:35 [ render_screen_showing#0 render_screen_showing#1 ] -zp ZP_BYTE:36 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] -zp ZP_BYTE:37 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] -zp ZP_BYTE:38 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ] -reg byte a [ keyboard_event_get::return#3 ] -reg byte a [ play_move_down::key_event#0 ] -reg byte a [ play_move_down::return#3 ] -reg byte a [ main::$12 ] -zp ZP_BYTE:39 [ main::render#1 main::render#2 ] -reg byte a [ play_move_leftright::key_event#0 ] -reg byte a [ play_move_leftright::return#4 ] -reg byte a [ main::$13 ] -reg byte a [ play_move_rotate::key_event#0 ] -reg byte a [ play_move_rotate::return#4 ] -reg byte a [ main::$14 ] -reg byte a [ main::render#3 ] +zp ZP_BYTE:35 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 ] +zp ZP_BYTE:36 [ render_screen_showing#0 render_screen_showing#1 ] +zp ZP_BYTE:37 [ irq_sprite_ypos#0 irq_sprite_ypos#3 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +zp ZP_BYTE:38 [ irq_sprite_ptr#0 irq_sprite_ptr#3 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +zp ZP_BYTE:39 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] +reg byte a [ main::$9 ] +reg byte x [ keyboard_event_get::return#3 ] +reg byte x [ main::key_event#0 ] +zp ZP_BYTE:40 [ play_movement::key_event#0 ] +reg byte a [ play_movement::return#3 ] +reg byte a [ main::render#1 ] reg byte a [ render_bcd::$3 ] reg byte a [ render_bcd::$4 ] reg byte a [ render_bcd::$5 ] @@ -20504,13 +21834,22 @@ reg byte a [ render_moving::$5 ] reg byte a [ render_moving::current_cell#0 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$3 ] +reg byte a [ play_move_down::key_event#0 ] +reg byte a [ play_move_down::return#0 ] +reg byte a [ play_movement::$0 ] +reg byte a [ play_move_leftright::key_event#0 ] +reg byte a [ play_move_leftright::return#0 ] +reg byte a [ play_movement::$3 ] +reg byte a [ play_move_rotate::key_event#0 ] +reg byte a [ play_move_rotate::return#0 ] +reg byte a [ play_movement::$4 ] reg byte a [ play_move_rotate::$2 ] -reg byte a [ play_collision::return#13 ] +reg byte a [ play_collision::return#14 ] reg byte a [ play_move_rotate::$6 ] reg byte a [ play_move_rotate::$4 ] -zp ZP_BYTE:40 [ play_collision::i#1 ] +zp ZP_BYTE:41 [ play_collision::i#1 ] reg byte a [ play_collision::$7 ] -reg byte a [ play_collision::return#12 ] +reg byte a [ play_collision::return#13 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_collision::return#1 ] reg byte a [ play_move_leftright::$8 ] @@ -20521,12 +21860,14 @@ reg byte a [ play_move_down::$12 ] reg byte a [ play_remove_lines::return#0 ] reg byte a [ play_move_down::removed#0 ] reg byte x [ play_update_score::removed#0 ] +reg byte a [ play_collision::return#10 ] +reg byte a [ play_spawn_current::$5 ] reg byte a [ sid_rnd::return#2 ] reg byte a [ play_spawn_current::$1 ] reg byte a [ sid_rnd::return#0 ] reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$4 ] -zp ZP_DWORD:41 [ play_update_score::add_bcd#0 ] +zp ZP_DWORD:42 [ play_update_score::add_bcd#0 ] reg byte a [ play_update_score::$5 ] reg byte a [ play_update_score::lines_after#0 ] reg byte a [ play_increase_level::$1 ] @@ -20556,16 +21897,17 @@ reg byte a [ sprites_init::s2#0 ] reg byte a [ render_init::$13 ] reg byte a [ render_init::$14 ] reg byte a [ sprites_irq::ypos#0 ] +reg byte x [ sprites_irq::$0 ] +zp ZP_BYTE:46 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::ptr#0 ] -reg byte x [ sprites_irq::ptr#3 ] -reg byte x [ sprites_irq::ptr#4 ] -reg byte a [ sprites_irq::$4 ] +reg byte a [ sprites_irq::ptr#3 ] +reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#1 ] reg byte a [ sprites_irq::ptr#2 ] FINAL ASSEMBLER -Score: 3295423 +Score: 459167 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -20636,7 +21978,7 @@ Score: 3295423 .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a - .const IRQ_RASTER_FIRST = $31 + .const SPRITES_FIRST_YPOS = $31 .const current_movedown_fast = 2 .const COLLISION_NONE = 0 .const COLLISION_PLAYFIELD = 1 @@ -20645,40 +21987,46 @@ Score: 3295423 .const COLLISION_RIGHT = 8 .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS .label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS + .const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13 .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 - .label keyboard_events_size = $21 - .label render_screen_showing = $23 - .label irq_raster_next = $22 - .label irq_sprite_ypos = $24 - .label irq_sprite_ptr = $25 - .label irq_cnt = $26 + .label keyboard_events_size = $22 + .label render_screen_showing = $24 + .label irq_raster_next = $23 + .label irq_sprite_ypos = $25 + .label irq_sprite_ptr = $26 + .label irq_cnt = $27 .label current_movedown_slow = $18 - .label current_movedown_counter = 4 .label current_ypos = $10 - .label current_piece_gfx = $1d - .label current_xpos = $1f - .label current_piece_char = $20 - .label current_orientation = $1c + .label current_xpos = $20 + .label current_orientation = $1d + .label current_piece_gfx = $1e .label level_bcd = $19 + .label level = $17 .label render_screen_render = 3 .label render_screen_show = 2 + .label current_movedown_counter = 4 .label lines_bcd = $11 .label score_bcd = $13 - .label level = $17 .label current_piece = $1a - .label current_piece_12 = 5 + .label current_piece_char = $1c + .label game_over = $21 + .label current_piece_16 = 5 .label render_screen_render_30 = 9 - .label current_xpos_47 = $a - .label current_piece_gfx_53 = 5 - .label render_screen_render_64 = 9 - .label current_xpos_112 = $a - .label current_xpos_113 = $a - .label current_piece_gfx_102 = 5 - .label current_piece_gfx_103 = 5 - .label current_piece_76 = 5 - .label current_piece_77 = 5 - .label current_piece_78 = 5 - .label current_piece_79 = 5 + .label current_xpos_57 = $a + .label current_piece_gfx_62 = 5 + .label current_piece_char_75 = $b + .label render_screen_render_68 = 9 + .label current_xpos_125 = $a + .label current_xpos_126 = $a + .label current_piece_gfx_115 = 5 + .label current_piece_gfx_116 = 5 + .label current_piece_char_103 = $b + .label current_piece_char_104 = $b + .label current_piece_89 = 5 + .label current_piece_90 = 5 + .label current_piece_91 = 5 + .label current_piece_92 = 5 + .label current_piece_93 = 5 //SEG2 @begin bbegin: //SEG3 @14 @@ -20689,421 +22037,411 @@ bbegin: //SEG6 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ // Load chars for the screen .var screen = LoadBinary("playfield-screen.iscr") // Load extended colors for the screen .var extended = LoadBinary("playfield-extended.col") // screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8 // extended.get(i)-1 because the extended colors are 1-based (1/2/3/4) // <<6 to move extended colors to the upper 2 bits .fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 ) }} //SEG7 kickasm(location (const byte*) PLAYFIELD_COLORS_ORIGINAL#0) {{ .import binary "playfield-screen.col" }} //SEG8 @22 -//SEG9 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} +//SEG9 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} //SEG10 @23 //SEG11 [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG12 [7] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 - lda #$32 +//SEG12 [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 + lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos //SEG13 [8] phi from @23 to toSpritePtr1 [phi:@23->toSpritePtr1] //SEG14 toSpritePtr1 -//SEG15 @37 -//SEG16 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 - lda #toSpritePtr1_return +//SEG15 @38 +//SEG16 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 + lda #toSpritePtr1_return+3 sta irq_sprite_ptr //SEG17 [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt -//SEG18 [11] phi from @37 to @36 [phi:@37->@36] -//SEG19 @36 +//SEG18 [11] phi from @38 to @37 [phi:@38->@37] +//SEG19 @37 //SEG20 [12] call main -//SEG21 [14] phi from @36 to main [phi:@36->main] +//SEG21 [14] phi from @37 to main [phi:@37->main] jsr main -//SEG22 [13] phi from @36 to @end [phi:@36->@end] +//SEG22 [13] phi from @37 to @end [phi:@37->@end] //SEG23 @end //SEG24 main main: { - .label key_event = $f - .label render = $27 //SEG25 [15] call sid_rnd_init jsr sid_rnd_init - //SEG26 main::@15 + //SEG26 main::@25 //SEG27 asm { sei } sei //SEG28 [17] call render_init - //SEG29 [454] phi from main::@15 to render_init [phi:main::@15->render_init] + //SEG29 [475] phi from main::@25 to render_init [phi:main::@25->render_init] jsr render_init - //SEG30 [18] phi from main::@15 to main::@16 [phi:main::@15->main::@16] - //SEG31 main::@16 + //SEG30 [18] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + //SEG31 main::@26 //SEG32 [19] call sprites_init jsr sprites_init - //SEG33 [20] phi from main::@16 to main::@17 [phi:main::@16->main::@17] - //SEG34 main::@17 + //SEG33 [20] phi from main::@26 to main::@27 [phi:main::@26->main::@27] + //SEG34 main::@27 //SEG35 [21] call sprites_irq_init jsr sprites_irq_init - //SEG36 [22] phi from main::@17 to main::@18 [phi:main::@17->main::@18] - //SEG37 main::@18 + //SEG36 [22] phi from main::@27 to main::@28 [phi:main::@27->main::@28] + //SEG37 main::@28 //SEG38 [23] call play_init - //SEG39 [413] phi from main::@18 to play_init [phi:main::@18->play_init] + //SEG39 [434] phi from main::@28 to play_init [phi:main::@28->play_init] jsr play_init - //SEG40 [24] phi from main::@18 to main::@19 [phi:main::@18->main::@19] - //SEG41 main::@19 + //SEG40 [24] phi from main::@28 to main::@29 [phi:main::@28->main::@29] + //SEG41 main::@29 //SEG42 [25] call play_spawn_current - //SEG43 [250] phi from main::@19 to play_spawn_current [phi:main::@19->play_spawn_current] + //SEG43 [262] phi from main::@29 to play_spawn_current [phi:main::@29->play_spawn_current] + //SEG44 [262] phi (byte) game_over#69 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#0] -- vbuz1=vbuc1 + lda #0 + sta game_over jsr play_spawn_current - //SEG44 [26] phi from main::@19 to main::@20 [phi:main::@19->main::@20] - //SEG45 main::@20 - //SEG46 [27] call render_playfield - //SEG47 [133] phi from main::@20 to render_playfield [phi:main::@20->render_playfield] - //SEG48 [133] phi (byte) render_screen_render#21 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@20->render_playfield#0] -- vbuxx=vbuc1 + //SEG45 [26] phi from main::@29 to main::@30 [phi:main::@29->main::@30] + //SEG46 main::@30 + //SEG47 [27] call render_playfield + //SEG48 [127] phi from main::@30 to render_playfield [phi:main::@30->render_playfield] + //SEG49 [127] phi (byte) render_screen_render#21 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@30->render_playfield#0] -- vbuxx=vbuc1 ldx #$40 jsr render_playfield - //SEG49 main::@21 - //SEG50 [28] (byte~) current_ypos#86 ← (byte) current_ypos#18 -- vbuyy=vbuz1 - ldy current_ypos - //SEG51 [29] (byte~) current_xpos#112 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG50 main::@31 + //SEG51 [28] (byte~) current_ypos#99 ← (byte) current_ypos#22 -- vbuxx=vbuz1 + ldx current_ypos + //SEG52 [29] (byte~) current_xpos#125 ← (byte) current_xpos#28 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_112 - //SEG52 [30] (byte*~) current_piece_gfx#102 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 + sta current_xpos_125 + //SEG53 [30] (byte*~) current_piece_gfx#115 ← (byte*) current_piece_gfx#21 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_102 + sta current_piece_gfx_115 lda current_piece_gfx+1 - sta current_piece_gfx_102+1 - //SEG53 [31] (byte~) current_piece_char#90 ← (byte) current_piece_char#12 -- vbuxx=vbuz1 - ldx current_piece_char - //SEG54 [32] call render_moving - //SEG55 [110] phi from main::@21 to render_moving [phi:main::@21->render_moving] - //SEG56 [110] phi (byte) current_piece_char#64 = (byte~) current_piece_char#90 [phi:main::@21->render_moving#0] -- register_copy - //SEG57 [110] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#102 [phi:main::@21->render_moving#1] -- register_copy - //SEG58 [110] phi (byte) current_xpos#47 = (byte~) current_xpos#112 [phi:main::@21->render_moving#2] -- register_copy - //SEG59 [110] phi (byte) render_screen_render#30 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->render_moving#3] -- vbuz1=vbuc1 + sta current_piece_gfx_115+1 + //SEG54 [31] (byte~) current_piece_char#103 ← (byte) current_piece_char#16 -- vbuz1=vbuz2 + lda current_piece_char + sta current_piece_char_103 + //SEG55 [32] call render_moving + //SEG56 [104] phi from main::@31 to render_moving [phi:main::@31->render_moving] + //SEG57 [104] phi (byte) current_piece_char#75 = (byte~) current_piece_char#103 [phi:main::@31->render_moving#0] -- register_copy + //SEG58 [104] phi (byte*) current_piece_gfx#62 = (byte*~) current_piece_gfx#115 [phi:main::@31->render_moving#1] -- register_copy + //SEG59 [104] phi (byte) current_xpos#57 = (byte~) current_xpos#125 [phi:main::@31->render_moving#2] -- register_copy + //SEG60 [104] phi (byte) render_screen_render#30 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@31->render_moving#3] -- vbuz1=vbuc1 lda #$40 sta render_screen_render_30 - //SEG60 [110] phi (byte) current_ypos#9 = (byte~) current_ypos#86 [phi:main::@21->render_moving#4] -- register_copy + //SEG61 [104] phi (byte) current_ypos#11 = (byte~) current_ypos#99 [phi:main::@31->render_moving#4] -- register_copy jsr render_moving - //SEG61 [33] (byte*~) current_piece#73 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG62 [33] (byte*~) current_piece#88 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG62 [34] phi from main::@21 to main::@1 [phi:main::@21->main::@1] - //SEG63 [34] phi (byte) level_bcd#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#0] -- vbuz1=vbuc1 + //SEG63 [34] phi from main::@31 to main::@1 [phi:main::@31->main::@1] + //SEG64 [34] phi (byte) level_bcd#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#0] -- vbuz1=vbuc1 lda #0 sta level_bcd - //SEG64 [34] phi (byte) level#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#1] -- vbuz1=vbuc1 + //SEG65 [34] phi (byte) level#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#1] -- vbuz1=vbuc1 sta level - //SEG65 [34] phi (dword) score_bcd#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#2] -- vduz1=vbuc1 + //SEG66 [34] phi (dword) score_bcd#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#2] -- vduz1=vbuc1 sta score_bcd sta score_bcd+1 sta score_bcd+2 sta score_bcd+3 - //SEG66 [34] phi (word) lines_bcd#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#3] -- vwuz1=vbuc1 + //SEG67 [34] phi (word) lines_bcd#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#3] -- vwuz1=vbuc1 sta lines_bcd sta lines_bcd+1 - //SEG67 [34] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#4] -- vbuz1=vbuc1 + //SEG68 [34] phi (byte) current_movedown_counter#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#4] -- vbuz1=vbuc1 sta current_movedown_counter - //SEG68 [34] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#5] -- vbuz1=vbuc1 + //SEG69 [34] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#5] -- vbuz1=vbuc1 sta keyboard_events_size - //SEG69 [34] phi (byte) current_piece_char#15 = (byte) current_piece_char#12 [phi:main::@21->main::@1#6] -- register_copy - //SEG70 [34] phi (byte) current_ypos#21 = (byte) current_ypos#18 [phi:main::@21->main::@1#7] -- register_copy - //SEG71 [34] phi (byte) current_xpos#10 = (byte) current_xpos#23 [phi:main::@21->main::@1#8] -- register_copy - //SEG72 [34] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#16 [phi:main::@21->main::@1#9] -- register_copy - //SEG73 [34] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#10] -- vbuz1=vbuc1 + //SEG70 [34] phi (byte) game_over#19 = (byte) game_over#15 [phi:main::@31->main::@1#6] -- register_copy + //SEG71 [34] phi (byte) current_ypos#25 = (byte) current_ypos#22 [phi:main::@31->main::@1#7] -- register_copy + //SEG72 [34] phi (byte) current_xpos#115 = (byte) current_xpos#28 [phi:main::@31->main::@1#8] -- register_copy + //SEG73 [34] phi (byte*) current_piece_gfx#105 = (byte*) current_piece_gfx#21 [phi:main::@31->main::@1#9] -- register_copy + //SEG74 [34] phi (byte) current_orientation#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#10] -- vbuz1=vbuc1 sta current_orientation - //SEG74 [34] phi (byte*) current_piece#16 = (byte*~) current_piece#73 [phi:main::@21->main::@1#11] -- register_copy - //SEG75 [34] phi (byte) current_movedown_slow#12 = (byte) current_movedown_slow#1 [phi:main::@21->main::@1#12] -- register_copy - //SEG76 [34] phi (byte) render_screen_render#17 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@21->main::@1#13] -- vbuz1=vbuc1 + //SEG75 [34] phi (byte) current_piece_char#19 = (byte) current_piece_char#16 [phi:main::@31->main::@1#11] -- register_copy + //SEG76 [34] phi (byte*) current_piece#20 = (byte*~) current_piece#88 [phi:main::@31->main::@1#12] -- register_copy + //SEG77 [34] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@31->main::@1#13] -- register_copy + //SEG78 [34] phi (byte) render_screen_render#17 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@31->main::@1#14] -- vbuz1=vbuc1 lda #$40 sta render_screen_render - //SEG77 [34] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@1#14] -- vbuz1=vbuc1 + //SEG79 [34] phi (byte) render_screen_show#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@31->main::@1#15] -- vbuz1=vbuc1 lda #0 sta render_screen_show - //SEG78 [34] phi from main::@28 to main::@1 [phi:main::@28->main::@1] - //SEG79 [34] phi (byte) level_bcd#20 = (byte) level_bcd#13 [phi:main::@28->main::@1#0] -- register_copy - //SEG80 [34] phi (byte) level#19 = (byte) level#12 [phi:main::@28->main::@1#1] -- register_copy - //SEG81 [34] phi (dword) score_bcd#14 = (dword) score_bcd#10 [phi:main::@28->main::@1#2] -- register_copy - //SEG82 [34] phi (word) lines_bcd#15 = (word) lines_bcd#11 [phi:main::@28->main::@1#3] -- register_copy - //SEG83 [34] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@28->main::@1#4] -- register_copy - //SEG84 [34] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@28->main::@1#5] -- register_copy - //SEG85 [34] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@28->main::@1#6] -- register_copy - //SEG86 [34] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@28->main::@1#7] -- register_copy - //SEG87 [34] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@28->main::@1#8] -- register_copy - //SEG88 [34] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@28->main::@1#9] -- register_copy - //SEG89 [34] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@28->main::@1#10] -- register_copy - //SEG90 [34] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@28->main::@1#11] -- register_copy - //SEG91 [34] phi (byte) current_movedown_slow#12 = (byte) current_movedown_slow#17 [phi:main::@28->main::@1#12] -- register_copy - //SEG92 main::@1 - //SEG93 main::@4 + //SEG80 main::@1 + //SEG81 main::@4 b4: - //SEG94 [35] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG82 [35] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 - //SEG95 [36] phi from main::@4 to main::@6 [phi:main::@4->main::@6] - //SEG96 main::@6 - //SEG97 [37] call render_show + //SEG83 main::@6 + //SEG84 [36] (byte~) main::$9 ← (byte) render_screen_show#17 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + lda render_screen_show + lsr + lsr + lsr + lsr + //SEG85 [37] *((const byte*) BORDERCOL#0) ← (byte~) main::$9 -- _deref_pbuc1=vbuaa + sta BORDERCOL + //SEG86 [38] call render_show jsr render_show - //SEG98 [38] phi from main::@6 to main::@23 [phi:main::@6->main::@23] - //SEG99 main::@23 - //SEG100 [39] call keyboard_event_scan - //SEG101 [350] phi from main::@23 to keyboard_event_scan [phi:main::@23->keyboard_event_scan] + //SEG87 [39] phi from main::@6 to main::@33 [phi:main::@6->main::@33] + //SEG88 main::@33 + //SEG89 [40] call keyboard_event_scan + //SEG90 [371] phi from main::@33 to keyboard_event_scan [phi:main::@33->keyboard_event_scan] jsr keyboard_event_scan - //SEG102 [40] phi from main::@23 to main::@24 [phi:main::@23->main::@24] - //SEG103 main::@24 - //SEG104 [41] call keyboard_event_get + //SEG91 [41] phi from main::@33 to main::@34 [phi:main::@33->main::@34] + //SEG92 main::@34 + //SEG93 [42] call keyboard_event_get jsr keyboard_event_get - //SEG105 [42] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 - // (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#2 // register copy reg byte a - //SEG106 main::@25 - //SEG107 [43] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa - sta key_event - //SEG108 [44] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 - //SEG109 [45] call play_move_down - jsr play_move_down - //SEG110 [46] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuaa=vbuxx - txa - //SEG111 main::@26 - //SEG112 [47] (byte~) main::$12 ← (byte) play_move_down::return#3 - // (byte~) main::$12 = (byte) play_move_down::return#3 // register copy reg byte a - //SEG113 [48] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$12 -- vbuz1=vbuc1_plus_vbuaa - clc - adc #0 - sta render - //SEG114 [49] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 - lda key_event - //SEG115 [50] call play_move_leftright - jsr play_move_leftright - //SEG116 [51] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 - // (byte) play_move_leftright::return#4 = (byte) play_move_leftright::return#1 // register copy reg byte a - //SEG117 main::@27 - //SEG118 [52] (byte~) main::$13 ← (byte) play_move_leftright::return#4 - // (byte~) main::$13 = (byte) play_move_leftright::return#4 // register copy reg byte a - //SEG119 [53] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$13 -- vbuz1=vbuz1_plus_vbuaa - clc - adc render - sta render - //SEG120 [54] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 - lda key_event - //SEG121 [55] call play_move_rotate - jsr play_move_rotate - //SEG122 [56] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 - // (byte) play_move_rotate::return#4 = (byte) play_move_rotate::return#1 // register copy reg byte a - //SEG123 main::@28 - //SEG124 [57] (byte~) main::$14 ← (byte) play_move_rotate::return#4 - // (byte~) main::$14 = (byte) play_move_rotate::return#4 // register copy reg byte a - //SEG125 [58] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$14 -- vbuaa=vbuz1_plus_vbuaa - clc - adc render - //SEG126 [59] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuaa_eq_0_then_la1 + //SEG94 [43] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + // (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#2 // register copy reg byte x + //SEG95 main::@35 + //SEG96 [44] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + // (byte) main::key_event#0 = (byte) keyboard_event_get::return#3 // register copy reg byte x + //SEG97 [45] if((byte) game_over#19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuz1_eq_0_then_la1 + lda game_over cmp #0 - beq b4 - //SEG127 main::@13 - //SEG128 [60] (byte~) render_screen_render#65 ← (byte) render_screen_render#17 -- vbuxx=vbuz1 + beq b7 + //SEG98 main::@9 + b9: + //SEG99 [46] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + inc BORDERCOL + jmp b9 + //SEG100 main::@7 + b7: + //SEG101 [47] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuxx + stx play_movement.key_event + //SEG102 [48] call play_movement + jsr play_movement + //SEG103 [49] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuaa=vbuz1 + lda play_movement.return + //SEG104 main::@36 + //SEG105 [50] (byte) main::render#1 ← (byte) play_movement::return#3 + // (byte) main::render#1 = (byte) play_movement::return#3 // register copy reg byte a + //SEG106 main::@11 + //SEG107 [51] if((byte) main::render#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12 -- vbuaa_eq_0_then_la1 + cmp #0 + beq b12 + //SEG108 main::@23 + //SEG109 [52] (byte~) render_screen_render#69 ← (byte) render_screen_render#17 -- vbuxx=vbuz1 ldx render_screen_render - //SEG129 [61] call render_playfield - //SEG130 [133] phi from main::@13 to render_playfield [phi:main::@13->render_playfield] - //SEG131 [133] phi (byte) render_screen_render#21 = (byte~) render_screen_render#65 [phi:main::@13->render_playfield#0] -- register_copy + //SEG110 [53] call render_playfield + //SEG111 [127] phi from main::@23 to render_playfield [phi:main::@23->render_playfield] + //SEG112 [127] phi (byte) render_screen_render#21 = (byte~) render_screen_render#69 [phi:main::@23->render_playfield#0] -- register_copy jsr render_playfield - //SEG132 main::@29 - //SEG133 [62] (byte~) current_ypos#87 ← (byte) current_ypos#13 -- vbuyy=vbuz1 - ldy current_ypos - //SEG134 [63] (byte~) render_screen_render#64 ← (byte) render_screen_render#17 -- vbuz1=vbuz2 + //SEG113 main::@37 + //SEG114 [54] (byte~) current_ypos#100 ← (byte) current_ypos#17 -- vbuxx=vbuz1 + ldx current_ypos + //SEG115 [55] (byte~) render_screen_render#68 ← (byte) render_screen_render#17 -- vbuz1=vbuz2 lda render_screen_render - sta render_screen_render_64 - //SEG135 [64] (byte~) current_xpos#113 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + sta render_screen_render_68 + //SEG116 [56] (byte~) current_xpos#126 ← (byte) current_xpos#17 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_113 - //SEG136 [65] (byte*~) current_piece_gfx#103 ← (byte*) current_piece_gfx#14 -- pbuz1=pbuz2 + sta current_xpos_126 + //SEG117 [57] (byte*~) current_piece_gfx#116 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_103 + sta current_piece_gfx_116 lda current_piece_gfx+1 - sta current_piece_gfx_103+1 - //SEG137 [66] (byte~) current_piece_char#91 ← (byte) current_piece_char#1 -- vbuxx=vbuz1 - ldx current_piece_char - //SEG138 [67] call render_moving - //SEG139 [110] phi from main::@29 to render_moving [phi:main::@29->render_moving] - //SEG140 [110] phi (byte) current_piece_char#64 = (byte~) current_piece_char#91 [phi:main::@29->render_moving#0] -- register_copy - //SEG141 [110] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#103 [phi:main::@29->render_moving#1] -- register_copy - //SEG142 [110] phi (byte) current_xpos#47 = (byte~) current_xpos#113 [phi:main::@29->render_moving#2] -- register_copy - //SEG143 [110] phi (byte) render_screen_render#30 = (byte~) render_screen_render#64 [phi:main::@29->render_moving#3] -- register_copy - //SEG144 [110] phi (byte) current_ypos#9 = (byte~) current_ypos#87 [phi:main::@29->render_moving#4] -- register_copy + sta current_piece_gfx_116+1 + //SEG118 [58] (byte~) current_piece_char#104 ← (byte) current_piece_char#14 -- vbuz1=vbuz2 + lda current_piece_char + sta current_piece_char_104 + //SEG119 [59] call render_moving + //SEG120 [104] phi from main::@37 to render_moving [phi:main::@37->render_moving] + //SEG121 [104] phi (byte) current_piece_char#75 = (byte~) current_piece_char#104 [phi:main::@37->render_moving#0] -- register_copy + //SEG122 [104] phi (byte*) current_piece_gfx#62 = (byte*~) current_piece_gfx#116 [phi:main::@37->render_moving#1] -- register_copy + //SEG123 [104] phi (byte) current_xpos#57 = (byte~) current_xpos#126 [phi:main::@37->render_moving#2] -- register_copy + //SEG124 [104] phi (byte) render_screen_render#30 = (byte~) render_screen_render#68 [phi:main::@37->render_moving#3] -- register_copy + //SEG125 [104] phi (byte) current_ypos#11 = (byte~) current_ypos#100 [phi:main::@37->render_moving#4] -- register_copy jsr render_moving - //SEG145 [68] phi from main::@29 to main::@30 [phi:main::@29->main::@30] - //SEG146 main::@30 - //SEG147 [69] call render_score + //SEG126 [60] phi from main::@37 to main::@38 [phi:main::@37->main::@38] + //SEG127 main::@38 + //SEG128 [61] call render_score jsr render_score - //SEG148 [70] phi from main::@30 to main::@31 [phi:main::@30->main::@31] - //SEG149 main::@31 - //SEG150 [71] call render_screen_swap + //SEG129 [62] phi from main::@38 to main::@39 [phi:main::@38->main::@39] + //SEG130 main::@39 + //SEG131 [63] call render_screen_swap jsr render_screen_swap - //SEG151 [34] phi from main::@31 to main::@1 [phi:main::@31->main::@1] - //SEG152 [34] phi (byte) level_bcd#20 = (byte) level_bcd#13 [phi:main::@31->main::@1#0] -- register_copy - //SEG153 [34] phi (byte) level#19 = (byte) level#12 [phi:main::@31->main::@1#1] -- register_copy - //SEG154 [34] phi (dword) score_bcd#14 = (dword) score_bcd#10 [phi:main::@31->main::@1#2] -- register_copy - //SEG155 [34] phi (word) lines_bcd#15 = (word) lines_bcd#11 [phi:main::@31->main::@1#3] -- register_copy - //SEG156 [34] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@31->main::@1#4] -- register_copy - //SEG157 [34] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@31->main::@1#5] -- register_copy - //SEG158 [34] phi (byte) current_piece_char#15 = (byte) current_piece_char#1 [phi:main::@31->main::@1#6] -- register_copy - //SEG159 [34] phi (byte) current_ypos#21 = (byte) current_ypos#13 [phi:main::@31->main::@1#7] -- register_copy - //SEG160 [34] phi (byte) current_xpos#10 = (byte) current_xpos#19 [phi:main::@31->main::@1#8] -- register_copy - //SEG161 [34] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#14 [phi:main::@31->main::@1#9] -- register_copy - //SEG162 [34] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@31->main::@1#10] -- register_copy - //SEG163 [34] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@31->main::@1#11] -- register_copy - //SEG164 [34] phi (byte) current_movedown_slow#12 = (byte) current_movedown_slow#17 [phi:main::@31->main::@1#12] -- register_copy - //SEG165 [34] phi (byte) render_screen_render#17 = (byte) render_screen_render#11 [phi:main::@31->main::@1#13] -- register_copy - //SEG166 [34] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@31->main::@1#14] -- register_copy + //SEG132 [64] phi from main::@11 main::@39 to main::@12 [phi:main::@11/main::@39->main::@12] + //SEG133 [64] phi (byte) render_screen_render#33 = (byte) render_screen_render#17 [phi:main::@11/main::@39->main::@12#0] -- register_copy + //SEG134 [64] phi (byte) render_screen_show#29 = (byte) render_screen_show#17 [phi:main::@11/main::@39->main::@12#1] -- register_copy + //SEG135 main::@12 + b12: + //SEG136 [65] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + lda #0 + sta BORDERCOL + //SEG137 [34] phi from main::@12 to main::@1 [phi:main::@12->main::@1] + //SEG138 [34] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@12->main::@1#0] -- register_copy + //SEG139 [34] phi (byte) level#10 = (byte) level#16 [phi:main::@12->main::@1#1] -- register_copy + //SEG140 [34] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@12->main::@1#2] -- register_copy + //SEG141 [34] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@12->main::@1#3] -- register_copy + //SEG142 [34] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@12->main::@1#4] -- register_copy + //SEG143 [34] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@12->main::@1#5] -- register_copy + //SEG144 [34] phi (byte) game_over#19 = (byte) game_over#14 [phi:main::@12->main::@1#6] -- register_copy + //SEG145 [34] phi (byte) current_ypos#25 = (byte) current_ypos#17 [phi:main::@12->main::@1#7] -- register_copy + //SEG146 [34] phi (byte) current_xpos#115 = (byte) current_xpos#17 [phi:main::@12->main::@1#8] -- register_copy + //SEG147 [34] phi (byte*) current_piece_gfx#105 = (byte*) current_piece_gfx#16 [phi:main::@12->main::@1#9] -- register_copy + //SEG148 [34] phi (byte) current_orientation#12 = (byte) current_orientation#16 [phi:main::@12->main::@1#10] -- register_copy + //SEG149 [34] phi (byte) current_piece_char#19 = (byte) current_piece_char#14 [phi:main::@12->main::@1#11] -- register_copy + //SEG150 [34] phi (byte*) current_piece#20 = (byte*) current_piece#14 [phi:main::@12->main::@1#12] -- register_copy + //SEG151 [34] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@12->main::@1#13] -- register_copy + //SEG152 [34] phi (byte) render_screen_render#17 = (byte) render_screen_render#33 [phi:main::@12->main::@1#14] -- register_copy + //SEG153 [34] phi (byte) render_screen_show#17 = (byte) render_screen_show#29 [phi:main::@12->main::@1#15] -- register_copy jmp b4 } -//SEG167 render_screen_swap +//SEG154 render_screen_swap render_screen_swap: { - //SEG168 [72] (byte) render_screen_render#11 ← (byte) render_screen_render#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG155 [66] (byte) render_screen_render#11 ← (byte) render_screen_render#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_render eor #$40 sta render_screen_render - //SEG169 [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG156 [67] (byte) render_screen_show#13 ← (byte) render_screen_show#17 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_show eor #$40 sta render_screen_show - //SEG170 render_screen_swap::@return - //SEG171 [74] return + //SEG157 render_screen_swap::@return + //SEG158 [68] return rts } -//SEG172 render_score +//SEG159 render_score render_score: { .label score_bytes = score_bcd .const score_offset = $28*5+$1c .const lines_offset = $28*1+$16 .const level_offset = $28*$13+$1f .label screen = 5 - //SEG173 [75] if((byte) render_screen_render#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 -- vbuz1_eq_0_then_la1 + //SEG160 [69] if((byte) render_screen_render#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 -- vbuz1_eq_0_then_la1 lda render_screen_render cmp #0 beq b1 - //SEG174 [76] phi from render_score to render_score::@3 [phi:render_score->render_score::@3] - //SEG175 render_score::@3 - //SEG176 [77] phi from render_score::@3 to render_score::@2 [phi:render_score::@3->render_score::@2] - //SEG177 [77] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score::@3->render_score::@2#0] -- pbuz1=pbuc1 + //SEG161 [70] phi from render_score to render_score::@3 [phi:render_score->render_score::@3] + //SEG162 render_score::@3 + //SEG163 [71] phi from render_score::@3 to render_score::@2 [phi:render_score::@3->render_score::@2] + //SEG164 [71] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score::@3->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta screen+1 jmp b2 - //SEG178 [77] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] + //SEG165 [71] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] b1: - //SEG179 [77] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 + //SEG166 [71] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta screen+1 - //SEG180 render_score::@2 + //SEG167 render_score::@2 b2: - //SEG181 [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 + //SEG168 [72] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 // (byte*) render_bcd::screen#0 = (byte*) render_score::screen#2 // register copy zp ZP_WORD:5 - //SEG182 [79] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuxx=_deref_pbuc1 + //SEG169 [73] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuxx=_deref_pbuc1 ldx score_bytes+2 - //SEG183 [80] call render_bcd - //SEG184 [97] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] - //SEG185 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy - //SEG186 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@2->render_bcd#1] -- vbuyy=vbuc1 + //SEG170 [74] call render_bcd + //SEG171 [91] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] + //SEG172 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy + //SEG173 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@2->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG187 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 + //SEG174 [91] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset sta render_bcd.offset+1 - //SEG188 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy + //SEG175 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy jsr render_bcd - //SEG189 render_score::@5 - //SEG190 [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 + //SEG176 render_score::@5 + //SEG177 [75] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 // (byte*) render_bcd::screen#1 = (byte*) render_score::screen#2 // register copy zp ZP_WORD:5 - //SEG191 [82] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuxx=_deref_pbuc1 + //SEG178 [76] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuxx=_deref_pbuc1 ldx score_bytes+1 - //SEG192 [83] call render_bcd - //SEG193 [97] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] - //SEG194 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@5->render_bcd#0] -- register_copy - //SEG195 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@5->render_bcd#1] -- vbuyy=vbuc1 + //SEG179 [77] call render_bcd + //SEG180 [91] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] + //SEG181 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@5->render_bcd#0] -- register_copy + //SEG182 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@5->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG196 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_score::@5->render_bcd#2] -- vwuz1=vbuc1 + //SEG183 [91] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_score::@5->render_bcd#2] -- vwuz1=vbuc1 lda #score_offset+2 sta render_bcd.offset+1 - //SEG197 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@5->render_bcd#3] -- register_copy + //SEG184 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@5->render_bcd#3] -- register_copy jsr render_bcd - //SEG198 render_score::@6 - //SEG199 [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 + //SEG185 render_score::@6 + //SEG186 [78] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 // (byte*) render_bcd::screen#2 = (byte*) render_score::screen#2 // register copy zp ZP_WORD:5 - //SEG200 [85] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuxx=_deref_pbuc1 + //SEG187 [79] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuxx=_deref_pbuc1 ldx score_bytes - //SEG201 [86] call render_bcd - //SEG202 [97] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] - //SEG203 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@6->render_bcd#0] -- register_copy - //SEG204 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@6->render_bcd#1] -- vbuyy=vbuc1 + //SEG188 [80] call render_bcd + //SEG189 [91] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] + //SEG190 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@6->render_bcd#0] -- register_copy + //SEG191 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@6->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG205 [97] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:render_score::@6->render_bcd#2] -- vwuz1=vbuc1 + //SEG192 [91] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:render_score::@6->render_bcd#2] -- vwuz1=vbuc1 lda #score_offset+4 sta render_bcd.offset+1 - //SEG206 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@6->render_bcd#3] -- register_copy + //SEG193 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@6->render_bcd#3] -- register_copy jsr render_bcd - //SEG207 render_score::@7 - //SEG208 [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#11 -- vbuxx=_hi_vwuz1 + //SEG194 render_score::@7 + //SEG195 [81] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuxx=_hi_vwuz1 lda lines_bcd+1 tax - //SEG209 [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 + //SEG196 [82] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 // (byte*) render_bcd::screen#3 = (byte*) render_score::screen#2 // register copy zp ZP_WORD:5 - //SEG210 [89] call render_bcd - //SEG211 [97] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] - //SEG212 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@7->render_bcd#0] -- register_copy - //SEG213 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@7->render_bcd#1] -- vbuyy=vbuc1 + //SEG197 [83] call render_bcd + //SEG198 [91] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] + //SEG199 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@7->render_bcd#0] -- register_copy + //SEG200 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@7->render_bcd#1] -- vbuyy=vbuc1 ldy #1 - //SEG214 [97] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 + //SEG201 [91] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 lda #lines_offset sta render_bcd.offset+1 - //SEG215 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@7->render_bcd#3] -- register_copy + //SEG202 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@7->render_bcd#3] -- register_copy jsr render_bcd - //SEG216 render_score::@8 - //SEG217 [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#11 -- vbuxx=_lo_vwuz1 + //SEG203 render_score::@8 + //SEG204 [84] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuxx=_lo_vwuz1 lda lines_bcd tax - //SEG218 [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 + //SEG205 [85] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 // (byte*) render_bcd::screen#4 = (byte*) render_score::screen#2 // register copy zp ZP_WORD:5 - //SEG219 [92] call render_bcd - //SEG220 [97] phi from render_score::@8 to render_bcd [phi:render_score::@8->render_bcd] - //SEG221 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@8->render_bcd#0] -- register_copy - //SEG222 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@8->render_bcd#1] -- vbuyy=vbuc1 + //SEG206 [86] call render_bcd + //SEG207 [91] phi from render_score::@8 to render_bcd [phi:render_score::@8->render_bcd] + //SEG208 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@8->render_bcd#0] -- register_copy + //SEG209 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@8->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG223 [97] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@8->render_bcd#2] -- vwuz1=vbuc1 + //SEG210 [91] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@8->render_bcd#2] -- vwuz1=vbuc1 lda #lines_offset+1 sta render_bcd.offset+1 - //SEG224 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@8->render_bcd#3] -- register_copy + //SEG211 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@8->render_bcd#3] -- register_copy jsr render_bcd - //SEG225 render_score::@9 - //SEG226 [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 + //SEG212 render_score::@9 + //SEG213 [87] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 // (byte*) render_bcd::screen#5 = (byte*) render_score::screen#2 // register copy zp ZP_WORD:5 - //SEG227 [94] (byte) render_bcd::bcd#5 ← (byte) level_bcd#13 -- vbuxx=vbuz1 + //SEG214 [88] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuxx=vbuz1 ldx level_bcd - //SEG228 [95] call render_bcd - //SEG229 [97] phi from render_score::@9 to render_bcd [phi:render_score::@9->render_bcd] - //SEG230 [97] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@9->render_bcd#0] -- register_copy - //SEG231 [97] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@9->render_bcd#1] -- vbuyy=vbuc1 + //SEG215 [89] call render_bcd + //SEG216 [91] phi from render_score::@9 to render_bcd [phi:render_score::@9->render_bcd] + //SEG217 [91] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@9->render_bcd#0] -- register_copy + //SEG218 [91] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@9->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG232 [97] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@9->render_bcd#2] -- vwuz1=vwuc1 + //SEG219 [91] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@9->render_bcd#2] -- vwuz1=vwuc1 lda #level_offset sta render_bcd.offset+1 - //SEG233 [97] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@9->render_bcd#3] -- register_copy + //SEG220 [91] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@9->render_bcd#3] -- register_copy jsr render_bcd - //SEG234 render_score::@return - //SEG235 [96] return + //SEG221 render_score::@return + //SEG222 [90] return rts } -//SEG236 render_bcd +//SEG223 render_bcd render_bcd: { - .const ZERO_CHAR = $33 + .const ZERO_CHAR = $35 .label screen = 5 .label screen_pos = 7 .label offset = 7 - //SEG237 [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz1 + //SEG224 [92] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz1 lda screen_pos clc adc screen @@ -21111,343 +22449,403 @@ render_bcd: { lda screen_pos+1 adc screen+1 sta screen_pos+1 - //SEG238 [99] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 -- vbuyy_neq_0_then_la1 + //SEG225 [93] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 -- vbuyy_neq_0_then_la1 cpy #0 bne b1 - //SEG239 render_bcd::@2 - //SEG240 [100] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG226 render_bcd::@2 + //SEG227 [94] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG241 [101] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuaa=vbuc1_plus_vbuaa + //SEG228 [95] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuaa=vbuc1_plus_vbuaa clc adc #ZERO_CHAR - //SEG242 [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuaa + //SEG229 [96] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuaa ldy #0 sta (screen_pos),y - //SEG243 [103] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 + //SEG230 [97] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 inc screen_pos bne !+ inc screen_pos+1 !: - //SEG244 [104] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] - //SEG245 [104] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy - //SEG246 render_bcd::@1 + //SEG231 [98] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] + //SEG232 [98] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy + //SEG233 render_bcd::@1 b1: - //SEG247 [105] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG234 [99] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG248 [106] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuaa=vbuc1_plus_vbuaa + //SEG235 [100] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuaa=vbuc1_plus_vbuaa clc adc #ZERO_CHAR - //SEG249 [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuaa + //SEG236 [101] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (screen_pos),y - //SEG250 [108] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 -- pbuz1=_inc_pbuz1 + //SEG237 [102] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 -- pbuz1=_inc_pbuz1 inc screen_pos bne !+ inc screen_pos+1 !: - //SEG251 render_bcd::@return - //SEG252 [109] return + //SEG238 render_bcd::@return + //SEG239 [103] return rts } -//SEG253 render_moving +//SEG240 render_moving render_moving: { - .label ypos2 = $b + .label ypos2 = $c .label screen_line = 7 - .label xpos = $e - .label i = $d - .label l = $c - .label c = $f - //SEG254 [111] (byte) render_moving::ypos2#0 ← (byte) current_ypos#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 - tya + .label xpos = $f + .label i = $e + .label l = $d + //SEG241 [105] (byte) render_moving::ypos2#0 ← (byte) current_ypos#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + txa asl sta ypos2 - //SEG255 [112] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] - //SEG256 [112] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 + //SEG242 [106] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] + //SEG243 [106] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG257 [112] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 + //SEG244 [106] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 sta i - //SEG258 [112] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy - //SEG259 [112] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] - //SEG260 [112] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy - //SEG261 [112] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy - //SEG262 [112] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy - //SEG263 render_moving::@1 + //SEG245 [106] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy + //SEG246 [106] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] + //SEG247 [106] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy + //SEG248 [106] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy + //SEG249 [106] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy + //SEG250 render_moving::@1 b1: - //SEG264 [113] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@13 -- vbuz1_gt_vbuc1_then_la1 + //SEG251 [107] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@13 -- vbuz1_gt_vbuc1_then_la1 lda ypos2 cmp #2 beq !+ bcs b13 !: - //SEG265 render_moving::@7 + //SEG252 render_moving::@7 b7: - //SEG266 [114] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG253 [108] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lda #4 clc adc i sta i - //SEG267 [115] phi from render_moving::@5 render_moving::@7 to render_moving::@3 [phi:render_moving::@5/render_moving::@7->render_moving::@3] - //SEG268 [115] phi (byte) render_moving::i#8 = (byte) render_moving::i#10 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy - //SEG269 render_moving::@3 + //SEG254 [109] phi from render_moving::@5 render_moving::@7 to render_moving::@3 [phi:render_moving::@5/render_moving::@7->render_moving::@3] + //SEG255 [109] phi (byte) render_moving::i#8 = (byte) render_moving::i#10 [phi:render_moving::@5/render_moving::@7->render_moving::@3#0] -- register_copy + //SEG256 render_moving::@3 b3: - //SEG270 [116] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG257 [110] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG271 [117] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 + //SEG258 [111] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG272 [118] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG259 [112] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1 - //SEG273 render_moving::@return - //SEG274 [119] return + //SEG260 render_moving::@return + //SEG261 [113] return rts - //SEG275 render_moving::@13 + //SEG262 render_moving::@13 b13: - //SEG276 [120] if((byte) render_moving::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_moving::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG263 [114] if((byte) render_moving::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_moving::@2 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b2 jmp b7 - //SEG277 render_moving::@2 + //SEG264 render_moving::@2 b2: - //SEG278 [121] (byte~) render_moving::$5 ← (byte) render_screen_render#30 + (byte) render_moving::ypos2#2 -- vbuaa=vbuz1_plus_vbuz2 + //SEG265 [115] (byte~) render_moving::$5 ← (byte) render_screen_render#30 + (byte) render_moving::ypos2#2 -- vbuaa=vbuz1_plus_vbuz2 lda render_screen_render_30 clc adc ypos2 - //SEG279 [122] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) -- pbuz1=pptc1_derefidx_vbuaa + //SEG266 [116] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$5) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG280 [123] (byte) render_moving::xpos#0 ← (byte) current_xpos#47 -- vbuz1=vbuz2 - lda current_xpos_47 + //SEG267 [117] (byte) render_moving::xpos#0 ← (byte) current_xpos#57 -- vbuz1=vbuz2 + lda current_xpos_57 sta xpos - //SEG281 [124] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] - //SEG282 [124] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuz1=vbuc1 - lda #0 - sta c - //SEG283 [124] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy - //SEG284 [124] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy - //SEG285 [124] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] - //SEG286 [124] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy - //SEG287 [124] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy - //SEG288 [124] phi (byte) render_moving::i#4 = (byte) render_moving::i#10 [phi:render_moving::@5->render_moving::@4#2] -- register_copy - //SEG289 render_moving::@4 + //SEG268 [118] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] + //SEG269 [118] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuxx=vbuc1 + ldx #0 + //SEG270 [118] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy + //SEG271 [118] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy + //SEG272 [118] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] + //SEG273 [118] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy + //SEG274 [118] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy + //SEG275 [118] phi (byte) render_moving::i#4 = (byte) render_moving::i#10 [phi:render_moving::@5->render_moving::@4#2] -- register_copy + //SEG276 render_moving::@4 b4: - //SEG290 [125] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG277 [119] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#62 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i - lda (current_piece_gfx_53),y - //SEG291 [126] (byte) render_moving::i#10 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 + lda (current_piece_gfx_62),y + //SEG278 [120] (byte) render_moving::i#10 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG292 [127] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 + //SEG279 [121] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG293 render_moving::@9 - //SEG294 [128] if((byte) render_moving::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_moving::@5 -- vbuz1_ge_vbuc1_then_la1 + //SEG280 render_moving::@9 + //SEG281 [122] if((byte) render_moving::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_moving::@5 -- vbuz1_ge_vbuc1_then_la1 lda xpos cmp #PLAYFIELD_COLS bcs b5 - //SEG295 render_moving::@10 - //SEG296 [129] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#64 -- pbuz1_derefidx_vbuz2=vbuxx - tay - txa + //SEG282 render_moving::@10 + //SEG283 [123] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#75 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_char_75 + ldy xpos sta (screen_line),y - //SEG297 render_moving::@5 + //SEG284 render_moving::@5 b5: - //SEG298 [130] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG285 [124] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG299 [131] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuz1=_inc_vbuz1 - inc c - //SEG300 [132] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuz1_neq_vbuc1_then_la1 - lda c - cmp #4 + //SEG286 [125] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuxx=_inc_vbuxx + inx + //SEG287 [126] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuxx_neq_vbuc1_then_la1 + cpx #4 bne b4 jmp b3 } -//SEG301 render_playfield +//SEG288 render_playfield render_playfield: { .label screen_line = 5 .label i = $a .label c = $b .label l = 9 - //SEG302 [134] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] - //SEG303 [134] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG289 [128] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG290 [128] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #PLAYFIELD_COLS*2 sta i - //SEG304 [134] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG291 [128] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #2 sta l - //SEG305 [134] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] - //SEG306 [134] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG307 [134] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy - //SEG308 render_playfield::@1 + //SEG292 [128] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG293 [128] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG294 [128] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG295 render_playfield::@1 b1: - //SEG309 [135] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG296 [129] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda l asl - //SEG310 [136] (byte~) render_playfield::$3 ← (byte) render_screen_render#21 + (byte~) render_playfield::$2 -- vbuaa=vbuxx_plus_vbuaa + //SEG297 [130] (byte~) render_playfield::$3 ← (byte) render_screen_render#21 + (byte~) render_playfield::$2 -- vbuaa=vbuxx_plus_vbuaa stx $ff clc adc $ff - //SEG311 [137] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuaa + //SEG298 [131] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG312 [138] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] - //SEG313 [138] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 + //SEG299 [132] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG300 [132] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG314 [138] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG315 [138] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy - //SEG316 [138] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] - //SEG317 [138] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG318 [138] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG319 [138] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy - //SEG320 render_playfield::@2 + //SEG301 [132] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG302 [132] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG303 [132] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG304 [132] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG305 [132] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG306 [132] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG307 render_playfield::@2 b2: - //SEG321 [139] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG308 [133] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (screen_line),y - //SEG322 [140] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG309 [134] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG323 [141] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG310 [135] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG324 [142] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG311 [136] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG325 [143] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG312 [137] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #PLAYFIELD_COLS-1+1 bne b2 - //SEG326 render_playfield::@3 - //SEG327 [144] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG313 render_playfield::@3 + //SEG314 [138] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG328 [145] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG315 [139] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1 - //SEG329 render_playfield::@return - //SEG330 [146] return + //SEG316 render_playfield::@return + //SEG317 [140] return rts } -//SEG331 play_move_rotate +//SEG318 play_movement +play_movement: { + .label render = 9 + .label return = 9 + .label key_event = $28 + //SEG319 [141] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + lda key_event + //SEG320 [142] call play_move_down + jsr play_move_down + //SEG321 [143] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx + txa + //SEG322 play_movement::@5 + //SEG323 [144] (byte~) play_movement::$0 ← (byte) play_move_down::return#0 + // (byte~) play_movement::$0 = (byte) play_move_down::return#0 // register copy reg byte a + //SEG324 [145] (byte) play_movement::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_movement::$0 -- vbuz1=vbuc1_plus_vbuaa + clc + adc #0 + sta render + //SEG325 [146] if((byte) game_over#14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 + lda game_over + cmp #0 + beq b1 + //SEG326 [147] phi from play_movement::@5 play_movement::@7 to play_movement::@return [phi:play_movement::@5/play_movement::@7->play_movement::@return] + //SEG327 [147] phi (byte) current_xpos#17 = (byte) current_xpos#20 [phi:play_movement::@5/play_movement::@7->play_movement::@return#0] -- register_copy + //SEG328 [147] phi (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#18 [phi:play_movement::@5/play_movement::@7->play_movement::@return#1] -- register_copy + //SEG329 [147] phi (byte) current_orientation#16 = (byte) current_orientation#19 [phi:play_movement::@5/play_movement::@7->play_movement::@return#2] -- register_copy + //SEG330 [147] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@5/play_movement::@7->play_movement::@return#3] -- register_copy + //SEG331 play_movement::@return + breturn: + //SEG332 [148] return + rts + //SEG333 play_movement::@1 + b1: + //SEG334 [149] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + lda key_event + //SEG335 [150] call play_move_leftright + jsr play_move_leftright + //SEG336 [151] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + // (byte) play_move_leftright::return#0 = (byte) play_move_leftright::return#2 // register copy reg byte a + //SEG337 play_movement::@6 + //SEG338 [152] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 + // (byte~) play_movement::$3 = (byte) play_move_leftright::return#0 // register copy reg byte a + //SEG339 [153] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa + clc + adc render + sta render + //SEG340 [154] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + lda key_event + //SEG341 [155] call play_move_rotate + jsr play_move_rotate + //SEG342 [156] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + // (byte) play_move_rotate::return#0 = (byte) play_move_rotate::return#2 // register copy reg byte a + //SEG343 play_movement::@7 + //SEG344 [157] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 + // (byte~) play_movement::$4 = (byte) play_move_rotate::return#0 // register copy reg byte a + //SEG345 [158] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa + clc + adc return + sta return + jmp breturn +} +//SEG346 play_move_rotate play_move_rotate: { - .label orientation = 9 - //SEG332 [147] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + .label orientation = $a + //SEG347 [159] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_Z beq b1 - //SEG333 play_move_rotate::@6 - //SEG334 [148] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG348 play_move_rotate::@6 + //SEG349 [160] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_X beq b2 - //SEG335 [149] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + //SEG350 [161] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] b3: - //SEG336 [149] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#1 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG337 [149] phi (byte) current_orientation#19 = (byte) current_orientation#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG338 [149] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG351 [161] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG352 [161] phi (byte) current_orientation#24 = (byte) current_orientation#19 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG353 [161] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #0 - //SEG339 play_move_rotate::@return + //SEG354 play_move_rotate::@return breturn: - //SEG340 [150] return + //SEG355 [162] return rts - //SEG341 play_move_rotate::@2 + //SEG356 play_move_rotate::@2 b2: - //SEG342 [151] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 + //SEG357 [163] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#19 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 lda #$10 clc adc current_orientation - //SEG343 [152] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG358 [164] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation - //SEG344 [153] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] - //SEG345 [153] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy - //SEG346 play_move_rotate::@4 + //SEG359 [165] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + //SEG360 [165] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + //SEG361 play_move_rotate::@4 b4: - //SEG347 [154] (byte) play_collision::xpos#3 ← (byte) current_xpos#19 -- vbuz1=vbuz2 + //SEG362 [166] (byte) play_collision::xpos#3 ← (byte) current_xpos#24 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG348 [155] (byte) play_collision::ypos#3 ← (byte) current_ypos#13 -- vbuyy=vbuz1 - ldy current_ypos - //SEG349 [156] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG363 [167] (byte) play_collision::ypos#3 ← (byte) current_ypos#17 -- vbuz1=vbuz2 + lda current_ypos + sta play_collision.ypos + //SEG364 [168] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG350 [157] (byte*~) current_piece#79 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG365 [169] (byte*~) current_piece#92 ← (byte*) current_piece#14 -- pbuz1=pbuz2 lda current_piece - sta current_piece_79 + sta current_piece_92 lda current_piece+1 - sta current_piece_79+1 - //SEG351 [158] call play_collision - //SEG352 [166] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] - //SEG353 [166] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy - //SEG354 [166] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy - //SEG355 [166] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy - //SEG356 [166] phi (byte*) current_piece#12 = (byte*~) current_piece#79 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + sta current_piece_92+1 + //SEG366 [170] call play_collision + //SEG367 [178] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + //SEG368 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG369 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG370 [178] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG371 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#92 [phi:play_move_rotate::@4->play_collision#3] -- register_copy jsr play_collision - //SEG357 [159] (byte) play_collision::return#13 ← (byte) play_collision::return#14 - // (byte) play_collision::return#13 = (byte) play_collision::return#14 // register copy reg byte a - //SEG358 play_move_rotate::@14 - //SEG359 [160] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 - // (byte~) play_move_rotate::$6 = (byte) play_collision::return#13 // register copy reg byte a - //SEG360 [161] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG372 [171] (byte) play_collision::return#14 ← (byte) play_collision::return#15 + // (byte) play_collision::return#14 = (byte) play_collision::return#15 // register copy reg byte a + //SEG373 play_move_rotate::@14 + //SEG374 [172] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#14 + // (byte~) play_move_rotate::$6 = (byte) play_collision::return#14 // register copy reg byte a + //SEG375 [173] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne b3 - //SEG361 play_move_rotate::@11 - //SEG362 [162] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG376 play_move_rotate::@11 + //SEG377 [174] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG363 [163] (byte*) current_piece_gfx#3 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + //SEG378 [175] (byte*) current_piece_gfx#6 ← (byte*) current_piece#14 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 clc adc current_piece sta current_piece_gfx lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG364 [149] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] - //SEG365 [149] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#3 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG366 [149] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG367 [149] phi (byte) play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG379 [161] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG380 [161] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#6 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG381 [161] phi (byte) current_orientation#24 = (byte) current_orientation#7 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG382 [161] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG368 play_move_rotate::@1 + //SEG383 play_move_rotate::@1 b1: - //SEG369 [164] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 + //SEG384 [176] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#19 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 lda current_orientation sec sbc #$10 - //SEG370 [165] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG385 [177] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation jmp b4 } -//SEG371 play_collision +//SEG386 play_collision play_collision: { - .label xpos = $a + .label xpos = $c + .label ypos = $b .label piece_gfx = 5 .label ypos2 = $b .label playfield_line = 7 - .label i = $28 - .label col = $e - .label l = $c - .label i_2 = $d - .label i_3 = $d - .label i_11 = $d - .label i_13 = $d - //SEG372 [167] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx + .label i = $29 + .label col = $f + .label l = $d + .label i_2 = $e + .label i_3 = $e + .label i_11 = $e + .label i_13 = $e + //SEG387 [179] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#16 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -21455,492 +22853,534 @@ play_collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - //SEG373 [168] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 - tya - asl - sta ypos2 - //SEG374 [169] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] - //SEG375 [169] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 + //SEG388 [180] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + asl ypos2 + //SEG389 [181] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG390 [181] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG376 [169] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 + //SEG391 [181] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 sta i_3 - //SEG377 [169] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy - //SEG378 play_collision::@1 + //SEG392 [181] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG393 play_collision::@1 b1: - //SEG379 [170] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG394 [182] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG380 [171] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 + //SEG395 [183] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 lda xpos sta col - //SEG381 [172] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] - //SEG382 [172] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 + //SEG396 [184] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG397 [184] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG383 [172] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG384 [172] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy - //SEG385 play_collision::@2 + //SEG398 [184] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG399 [184] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG400 play_collision::@2 b2: - //SEG386 [173] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG401 [185] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG387 [174] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG402 [186] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 - //SEG388 play_collision::@8 - //SEG389 [175] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG403 play_collision::@8 + //SEG404 [187] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG390 [176] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] - //SEG391 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG405 [188] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG406 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM - //SEG392 play_collision::@return + //SEG407 play_collision::@return breturn: - //SEG393 [177] return + //SEG408 [189] return rts - //SEG394 play_collision::@4 + //SEG409 play_collision::@4 b4: - //SEG395 [178] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG410 [190] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and col - //SEG396 [179] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 + //SEG411 [191] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG397 [176] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] - //SEG398 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG412 [188] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG413 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG399 play_collision::@5 + //SEG414 play_collision::@5 b5: - //SEG400 [180] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG415 [192] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG401 [176] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] - //SEG402 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG416 [188] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG417 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG403 play_collision::@6 + //SEG418 play_collision::@6 b6: - //SEG404 [181] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG419 [193] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG405 [176] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] - //SEG406 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG420 [188] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG421 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG407 play_collision::@3 + //SEG422 play_collision::@3 b3: - //SEG408 [182] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG423 [194] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG409 [183] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx + //SEG424 [195] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG410 [184] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuxx_neq_vbuc1_then_la1 + //SEG425 [196] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b21 - //SEG411 play_collision::@17 - //SEG412 [185] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG426 play_collision::@17 + //SEG427 [197] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG413 [186] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG428 [198] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG414 [187] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG429 [199] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG415 [176] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] - //SEG416 [176] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG430 [188] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] + //SEG431 [188] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG417 play_collision::@20 + //SEG432 play_collision::@20 b20: - //SEG418 [188] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG433 [200] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG419 [169] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] - //SEG420 [169] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy - //SEG421 [169] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy - //SEG422 [169] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy + //SEG434 [181] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] + //SEG435 [181] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG436 [181] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG437 [181] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG423 play_collision::@21 + //SEG438 play_collision::@21 b21: - //SEG424 [189] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG439 [201] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG425 [172] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] - //SEG426 [172] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy - //SEG427 [172] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy - //SEG428 [172] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy + //SEG440 [184] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] + //SEG441 [184] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG442 [184] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG443 [184] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } -//SEG429 play_move_leftright +//SEG444 play_move_leftright play_move_leftright: { - //SEG430 [190] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG445 [202] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_COMMA beq b1 - //SEG431 play_move_leftright::@6 - //SEG432 [191] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG446 play_move_leftright::@6 + //SEG447 [203] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_DOT bne b3 - //SEG433 play_move_leftright::@7 - //SEG434 [192] (byte) play_collision::xpos#2 ← (byte) current_xpos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG448 play_move_leftright::@7 + //SEG449 [204] (byte) play_collision::xpos#2 ← (byte) current_xpos#20 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG435 [193] (byte) play_collision::ypos#2 ← (byte) current_ypos#13 -- vbuyy=vbuz1 - ldy current_ypos - //SEG436 [194] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuxx=vbuz1 + //SEG450 [205] (byte) play_collision::ypos#2 ← (byte) current_ypos#17 -- vbuz1=vbuz2 + lda current_ypos + sta play_collision.ypos + //SEG451 [206] (byte) play_collision::orientation#2 ← (byte) current_orientation#19 -- vbuxx=vbuz1 ldx current_orientation - //SEG437 [195] (byte*~) current_piece#78 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG452 [207] (byte*~) current_piece#91 ← (byte*) current_piece#14 -- pbuz1=pbuz2 lda current_piece - sta current_piece_78 + sta current_piece_91 lda current_piece+1 - sta current_piece_78+1 - //SEG438 [196] call play_collision - //SEG439 [166] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] - //SEG440 [166] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy - //SEG441 [166] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy - //SEG442 [166] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy - //SEG443 [166] phi (byte*) current_piece#12 = (byte*~) current_piece#78 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + sta current_piece_91+1 + //SEG453 [208] call play_collision + //SEG454 [178] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + //SEG455 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG456 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG457 [178] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG458 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#91 [phi:play_move_leftright::@7->play_collision#3] -- register_copy jsr play_collision - //SEG444 [197] (byte) play_collision::return#12 ← (byte) play_collision::return#14 - // (byte) play_collision::return#12 = (byte) play_collision::return#14 // register copy reg byte a - //SEG445 play_move_leftright::@15 - //SEG446 [198] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 - // (byte~) play_move_leftright::$4 = (byte) play_collision::return#12 // register copy reg byte a - //SEG447 [199] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG459 [209] (byte) play_collision::return#13 ← (byte) play_collision::return#15 + // (byte) play_collision::return#13 = (byte) play_collision::return#15 // register copy reg byte a + //SEG460 play_move_leftright::@15 + //SEG461 [210] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 + // (byte~) play_move_leftright::$4 = (byte) play_collision::return#13 // register copy reg byte a + //SEG462 [211] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne b3 - //SEG448 play_move_leftright::@8 - //SEG449 [200] (byte) current_xpos#2 ← ++ (byte) current_xpos#1 -- vbuz1=_inc_vbuz1 + //SEG463 play_move_leftright::@8 + //SEG464 [212] (byte) current_xpos#5 ← ++ (byte) current_xpos#20 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG450 [201] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + //SEG465 [213] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] b2: - //SEG451 [201] phi (byte) current_xpos#19 = (byte) current_xpos#4 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG452 [201] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG466 [213] phi (byte) current_xpos#24 = (byte) current_xpos#7 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG467 [213] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG453 [201] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + //SEG468 [213] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] b3: - //SEG454 [201] phi (byte) current_xpos#19 = (byte) current_xpos#1 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG455 [201] phi (byte) play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG469 [213] phi (byte) current_xpos#24 = (byte) current_xpos#20 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG470 [213] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #0 - //SEG456 play_move_leftright::@return + //SEG471 play_move_leftright::@return breturn: - //SEG457 [202] return + //SEG472 [214] return rts - //SEG458 play_move_leftright::@1 + //SEG473 play_move_leftright::@1 b1: - //SEG459 [203] (byte) play_collision::xpos#1 ← (byte) current_xpos#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG474 [215] (byte) play_collision::xpos#1 ← (byte) current_xpos#20 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG460 [204] (byte) play_collision::ypos#1 ← (byte) current_ypos#13 -- vbuyy=vbuz1 - ldy current_ypos - //SEG461 [205] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuxx=vbuz1 + //SEG475 [216] (byte) play_collision::ypos#1 ← (byte) current_ypos#17 -- vbuz1=vbuz2 + lda current_ypos + sta play_collision.ypos + //SEG476 [217] (byte) play_collision::orientation#1 ← (byte) current_orientation#19 -- vbuxx=vbuz1 ldx current_orientation - //SEG462 [206] (byte*~) current_piece#77 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG477 [218] (byte*~) current_piece#90 ← (byte*) current_piece#14 -- pbuz1=pbuz2 lda current_piece - sta current_piece_77 + sta current_piece_90 lda current_piece+1 - sta current_piece_77+1 - //SEG463 [207] call play_collision - //SEG464 [166] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] - //SEG465 [166] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG466 [166] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG467 [166] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG468 [166] phi (byte*) current_piece#12 = (byte*~) current_piece#77 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + sta current_piece_90+1 + //SEG478 [219] call play_collision + //SEG479 [178] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + //SEG480 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG481 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG482 [178] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG483 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#90 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG469 [208] (byte) play_collision::return#1 ← (byte) play_collision::return#14 - // (byte) play_collision::return#1 = (byte) play_collision::return#14 // register copy reg byte a - //SEG470 play_move_leftright::@14 - //SEG471 [209] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + //SEG484 [220] (byte) play_collision::return#1 ← (byte) play_collision::return#15 + // (byte) play_collision::return#1 = (byte) play_collision::return#15 // register copy reg byte a + //SEG485 play_move_leftright::@14 + //SEG486 [221] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 // (byte~) play_move_leftright::$8 = (byte) play_collision::return#1 // register copy reg byte a - //SEG472 [210] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG487 [222] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne b3 - //SEG473 play_move_leftright::@11 - //SEG474 [211] (byte) current_xpos#4 ← -- (byte) current_xpos#1 -- vbuz1=_dec_vbuz1 + //SEG488 play_move_leftright::@11 + //SEG489 [223] (byte) current_xpos#7 ← -- (byte) current_xpos#20 -- vbuz1=_dec_vbuz1 dec current_xpos jmp b2 } -//SEG475 play_move_down +//SEG490 play_move_down play_move_down: { - //SEG476 [212] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 + //SEG491 [224] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG477 [213] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG492 [225] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_SPACE bne b3 - //SEG478 [214] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] - //SEG479 play_move_down::@8 - //SEG480 [215] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] - //SEG481 [215] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG493 [226] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG494 play_move_down::@8 + //SEG495 [227] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG496 [227] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #1 jmp b1 - //SEG482 [215] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG497 [227] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b3: - //SEG483 [215] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG498 [227] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG484 play_move_down::@1 + //SEG499 play_move_down::@1 b1: - //SEG485 [216] call keyboard_event_pressed - //SEG486 [339] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] - //SEG487 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG500 [228] call keyboard_event_pressed + //SEG501 [360] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG502 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG488 [217] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + //SEG503 [229] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG489 play_move_down::@17 - //SEG490 [218] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + //SEG504 play_move_down::@17 + //SEG505 [230] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 // (byte~) play_move_down::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a - //SEG491 [219] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 + //SEG506 [231] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG492 play_move_down::@9 - //SEG493 [220] if((byte) current_movedown_counter#1<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG507 play_move_down::@9 + //SEG508 [232] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_fast bcc b2 - //SEG494 play_move_down::@10 - //SEG495 [221] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + //SEG509 play_move_down::@10 + //SEG510 [233] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx inx - //SEG496 [222] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] - //SEG497 [222] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy - //SEG498 play_move_down::@2 + //SEG511 [234] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] + //SEG512 [234] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy + //SEG513 play_move_down::@2 b2: - //SEG499 [223] if((byte) current_movedown_counter#1<(byte) current_movedown_slow#12) goto play_move_down::@4 -- vbuz1_lt_vbuz2_then_la1 + //SEG514 [235] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@4 -- vbuz1_lt_vbuz2_then_la1 lda current_movedown_counter cmp current_movedown_slow bcc b4 - //SEG500 play_move_down::@11 - //SEG501 [224] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + //SEG515 play_move_down::@11 + //SEG516 [236] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx inx - //SEG502 [225] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] - //SEG503 [225] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy - //SEG504 play_move_down::@4 + //SEG517 [237] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] + //SEG518 [237] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy + //SEG519 play_move_down::@4 b4: - //SEG505 [226] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 + //SEG520 [238] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 cpx #0 beq b5 - //SEG506 play_move_down::@12 - //SEG507 [227] (byte) play_collision::ypos#0 ← (byte) current_ypos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 + //SEG521 play_move_down::@12 + //SEG522 [239] (byte) play_collision::ypos#0 ← (byte) current_ypos#25 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny - //SEG508 [228] (byte) play_collision::xpos#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 + sty play_collision.ypos + //SEG523 [240] (byte) play_collision::xpos#0 ← (byte) current_xpos#115 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG509 [229] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuxx=vbuz1 + //SEG524 [241] (byte) play_collision::orientation#0 ← (byte) current_orientation#12 -- vbuxx=vbuz1 ldx current_orientation - //SEG510 [230] (byte*~) current_piece#76 ← (byte*) current_piece#16 -- pbuz1=pbuz2 + //SEG525 [242] (byte*~) current_piece#89 ← (byte*) current_piece#20 -- pbuz1=pbuz2 lda current_piece - sta current_piece_76 + sta current_piece_89 lda current_piece+1 - sta current_piece_76+1 - //SEG511 [231] call play_collision - //SEG512 [166] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] - //SEG513 [166] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy - //SEG514 [166] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy - //SEG515 [166] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy - //SEG516 [166] phi (byte*) current_piece#12 = (byte*~) current_piece#76 [phi:play_move_down::@12->play_collision#3] -- register_copy + sta current_piece_89+1 + //SEG526 [243] call play_collision + //SEG527 [178] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + //SEG528 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG529 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG530 [178] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG531 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#89 [phi:play_move_down::@12->play_collision#3] -- register_copy jsr play_collision - //SEG517 [232] (byte) play_collision::return#0 ← (byte) play_collision::return#14 - // (byte) play_collision::return#0 = (byte) play_collision::return#14 // register copy reg byte a - //SEG518 play_move_down::@18 - //SEG519 [233] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + //SEG532 [244] (byte) play_collision::return#0 ← (byte) play_collision::return#15 + // (byte) play_collision::return#0 = (byte) play_collision::return#15 // register copy reg byte a + //SEG533 play_move_down::@18 + //SEG534 [245] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 // (byte~) play_move_down::$12 = (byte) play_collision::return#0 // register copy reg byte a - //SEG520 [234] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 + //SEG535 [246] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 cmp #COLLISION_NONE beq b6 - //SEG521 [235] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] - //SEG522 play_move_down::@13 - //SEG523 [236] call play_lock_current + //SEG536 [247] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG537 play_move_down::@13 + //SEG538 [248] call play_lock_current jsr play_lock_current - //SEG524 [237] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] - //SEG525 play_move_down::@19 - //SEG526 [238] call play_remove_lines - //SEG527 [299] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + //SEG539 [249] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG540 play_move_down::@19 + //SEG541 [250] call play_remove_lines + //SEG542 [320] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] jsr play_remove_lines - //SEG528 [239] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 -- vbuaa=vbuz1 + //SEG543 [251] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 -- vbuaa=vbuz1 lda play_remove_lines.removed - //SEG529 play_move_down::@20 - //SEG530 [240] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 + //SEG544 play_move_down::@20 + //SEG545 [252] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 // (byte) play_move_down::removed#0 = (byte) play_remove_lines::return#0 // register copy reg byte a - //SEG531 [241] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa + //SEG546 [253] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa tax - //SEG532 [242] call play_update_score + //SEG547 [254] call play_update_score jsr play_update_score - //SEG533 [243] phi from play_move_down::@20 to play_move_down::@21 [phi:play_move_down::@20->play_move_down::@21] - //SEG534 play_move_down::@21 - //SEG535 [244] call play_spawn_current - //SEG536 [250] phi from play_move_down::@21 to play_spawn_current [phi:play_move_down::@21->play_spawn_current] + //SEG548 [255] phi from play_move_down::@20 to play_move_down::@21 [phi:play_move_down::@20->play_move_down::@21] + //SEG549 play_move_down::@21 + //SEG550 [256] call play_spawn_current + //SEG551 [262] phi from play_move_down::@21 to play_spawn_current [phi:play_move_down::@21->play_spawn_current] + //SEG552 [262] phi (byte) game_over#69 = (byte) game_over#19 [phi:play_move_down::@21->play_spawn_current#0] -- register_copy jsr play_spawn_current - //SEG537 [245] (byte*~) current_piece#80 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG553 [257] (byte*~) current_piece#94 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG538 [246] phi from play_move_down::@21 to play_move_down::@7 [phi:play_move_down::@21->play_move_down::@7] - //SEG539 [246] phi (byte) current_piece_char#20 = (byte) current_piece_char#12 [phi:play_move_down::@21->play_move_down::@7#0] -- register_copy - //SEG540 [246] phi (byte) current_xpos#33 = (byte) current_xpos#23 [phi:play_move_down::@21->play_move_down::@7#1] -- register_copy - //SEG541 [246] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#16 [phi:play_move_down::@21->play_move_down::@7#2] -- register_copy - //SEG542 [246] phi (byte) current_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@21->play_move_down::@7#3] -- vbuz1=vbuc1 + //SEG554 [258] phi from play_move_down::@21 to play_move_down::@7 [phi:play_move_down::@21->play_move_down::@7] + //SEG555 [258] phi (byte) game_over#26 = (byte) game_over#15 [phi:play_move_down::@21->play_move_down::@7#0] -- register_copy + //SEG556 [258] phi (byte) current_xpos#41 = (byte) current_xpos#28 [phi:play_move_down::@21->play_move_down::@7#1] -- register_copy + //SEG557 [258] phi (byte*) current_piece_gfx#33 = (byte*) current_piece_gfx#21 [phi:play_move_down::@21->play_move_down::@7#2] -- register_copy + //SEG558 [258] phi (byte) current_orientation#36 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@21->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG543 [246] phi (byte*) current_piece#20 = (byte*~) current_piece#80 [phi:play_move_down::@21->play_move_down::@7#4] -- register_copy - //SEG544 [246] phi (byte) level_bcd#25 = (byte) level_bcd#15 [phi:play_move_down::@21->play_move_down::@7#5] -- register_copy - //SEG545 [246] phi (byte) current_movedown_slow#31 = (byte) current_movedown_slow#19 [phi:play_move_down::@21->play_move_down::@7#6] -- register_copy - //SEG546 [246] phi (byte) level#24 = (byte) level#14 [phi:play_move_down::@21->play_move_down::@7#7] -- register_copy - //SEG547 [246] phi (dword) score_bcd#20 = (dword) score_bcd#12 [phi:play_move_down::@21->play_move_down::@7#8] -- register_copy - //SEG548 [246] phi (word) lines_bcd#20 = (word) lines_bcd#13 [phi:play_move_down::@21->play_move_down::@7#9] -- register_copy - //SEG549 [246] phi (byte) current_ypos#29 = (byte) current_ypos#18 [phi:play_move_down::@21->play_move_down::@7#10] -- register_copy - //SEG550 play_move_down::@7 + //SEG559 [258] phi (byte) current_piece_char#27 = (byte) current_piece_char#16 [phi:play_move_down::@21->play_move_down::@7#4] -- register_copy + //SEG560 [258] phi (byte*) current_piece#27 = (byte*~) current_piece#94 [phi:play_move_down::@21->play_move_down::@7#5] -- register_copy + //SEG561 [258] phi (byte) level_bcd#32 = (byte) level_bcd#19 [phi:play_move_down::@21->play_move_down::@7#6] -- register_copy + //SEG562 [258] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#23 [phi:play_move_down::@21->play_move_down::@7#7] -- register_copy + //SEG563 [258] phi (byte) level#31 = (byte) level#18 [phi:play_move_down::@21->play_move_down::@7#8] -- register_copy + //SEG564 [258] phi (dword) score_bcd#27 = (dword) score_bcd#16 [phi:play_move_down::@21->play_move_down::@7#9] -- register_copy + //SEG565 [258] phi (word) lines_bcd#27 = (word) lines_bcd#17 [phi:play_move_down::@21->play_move_down::@7#10] -- register_copy + //SEG566 [258] phi (byte) current_ypos#36 = (byte) current_ypos#22 [phi:play_move_down::@21->play_move_down::@7#11] -- register_copy + //SEG567 play_move_down::@7 b7: - //SEG551 [247] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] - //SEG552 [247] phi (byte) current_piece_char#1 = (byte) current_piece_char#20 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG553 [247] phi (byte) current_xpos#1 = (byte) current_xpos#33 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG554 [247] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#26 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG555 [247] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG556 [247] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG557 [247] phi (byte) level_bcd#13 = (byte) level_bcd#25 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG558 [247] phi (byte) current_movedown_slow#17 = (byte) current_movedown_slow#31 [phi:play_move_down::@7->play_move_down::@return#6] -- register_copy - //SEG559 [247] phi (byte) level#12 = (byte) level#24 [phi:play_move_down::@7->play_move_down::@return#7] -- register_copy - //SEG560 [247] phi (dword) score_bcd#10 = (dword) score_bcd#20 [phi:play_move_down::@7->play_move_down::@return#8] -- register_copy - //SEG561 [247] phi (word) lines_bcd#11 = (word) lines_bcd#20 [phi:play_move_down::@7->play_move_down::@return#9] -- register_copy - //SEG562 [247] phi (byte) current_ypos#13 = (byte) current_ypos#29 [phi:play_move_down::@7->play_move_down::@return#10] -- register_copy - //SEG563 [247] phi (byte) current_movedown_counter#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#11] -- vbuz1=vbuc1 + //SEG568 [259] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG569 [259] phi (byte) game_over#14 = (byte) game_over#26 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG570 [259] phi (byte) current_xpos#20 = (byte) current_xpos#41 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG571 [259] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#33 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG572 [259] phi (byte) current_orientation#19 = (byte) current_orientation#36 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG573 [259] phi (byte) current_piece_char#14 = (byte) current_piece_char#27 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG574 [259] phi (byte*) current_piece#14 = (byte*) current_piece#27 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG575 [259] phi (byte) level_bcd#17 = (byte) level_bcd#32 [phi:play_move_down::@7->play_move_down::@return#6] -- register_copy + //SEG576 [259] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#38 [phi:play_move_down::@7->play_move_down::@return#7] -- register_copy + //SEG577 [259] phi (byte) level#16 = (byte) level#31 [phi:play_move_down::@7->play_move_down::@return#8] -- register_copy + //SEG578 [259] phi (dword) score_bcd#14 = (dword) score_bcd#27 [phi:play_move_down::@7->play_move_down::@return#9] -- register_copy + //SEG579 [259] phi (word) lines_bcd#15 = (word) lines_bcd#27 [phi:play_move_down::@7->play_move_down::@return#10] -- register_copy + //SEG580 [259] phi (byte) current_ypos#17 = (byte) current_ypos#36 [phi:play_move_down::@7->play_move_down::@return#11] -- register_copy + //SEG581 [259] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#12] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG564 [247] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#12] -- vbuxx=vbuc1 + //SEG582 [259] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#13] -- vbuxx=vbuc1 ldx #1 jmp breturn - //SEG565 [247] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG583 [259] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] b5: - //SEG566 [247] phi (byte) current_piece_char#1 = (byte) current_piece_char#15 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG567 [247] phi (byte) current_xpos#1 = (byte) current_xpos#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG568 [247] phi (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#20 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG569 [247] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG570 [247] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG571 [247] phi (byte) level_bcd#13 = (byte) level_bcd#20 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG572 [247] phi (byte) current_movedown_slow#17 = (byte) current_movedown_slow#12 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG573 [247] phi (byte) level#12 = (byte) level#19 [phi:play_move_down::@4->play_move_down::@return#7] -- register_copy - //SEG574 [247] phi (dword) score_bcd#10 = (dword) score_bcd#14 [phi:play_move_down::@4->play_move_down::@return#8] -- register_copy - //SEG575 [247] phi (word) lines_bcd#11 = (word) lines_bcd#15 [phi:play_move_down::@4->play_move_down::@return#9] -- register_copy - //SEG576 [247] phi (byte) current_ypos#13 = (byte) current_ypos#21 [phi:play_move_down::@4->play_move_down::@return#10] -- register_copy - //SEG577 [247] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#11] -- register_copy - //SEG578 [247] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#12] -- vbuxx=vbuc1 + //SEG584 [259] phi (byte) game_over#14 = (byte) game_over#19 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG585 [259] phi (byte) current_xpos#20 = (byte) current_xpos#115 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG586 [259] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#105 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG587 [259] phi (byte) current_orientation#19 = (byte) current_orientation#12 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG588 [259] phi (byte) current_piece_char#14 = (byte) current_piece_char#19 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG589 [259] phi (byte*) current_piece#14 = (byte*) current_piece#20 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG590 [259] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG591 [259] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@4->play_move_down::@return#7] -- register_copy + //SEG592 [259] phi (byte) level#16 = (byte) level#10 [phi:play_move_down::@4->play_move_down::@return#8] -- register_copy + //SEG593 [259] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@4->play_move_down::@return#9] -- register_copy + //SEG594 [259] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@4->play_move_down::@return#10] -- register_copy + //SEG595 [259] phi (byte) current_ypos#17 = (byte) current_ypos#25 [phi:play_move_down::@4->play_move_down::@return#11] -- register_copy + //SEG596 [259] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@4->play_move_down::@return#12] -- register_copy + //SEG597 [259] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#13] -- vbuxx=vbuc1 ldx #0 - //SEG579 play_move_down::@return + //SEG598 play_move_down::@return breturn: - //SEG580 [248] return + //SEG599 [260] return rts - //SEG581 play_move_down::@6 + //SEG600 play_move_down::@6 b6: - //SEG582 [249] (byte) current_ypos#0 ← ++ (byte) current_ypos#21 -- vbuz1=_inc_vbuz1 + //SEG601 [261] (byte) current_ypos#2 ← ++ (byte) current_ypos#25 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG583 [246] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] - //SEG584 [246] phi (byte) current_piece_char#20 = (byte) current_piece_char#15 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG585 [246] phi (byte) current_xpos#33 = (byte) current_xpos#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG586 [246] phi (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#20 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG587 [246] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG588 [246] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG589 [246] phi (byte) level_bcd#25 = (byte) level_bcd#20 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy - //SEG590 [246] phi (byte) current_movedown_slow#31 = (byte) current_movedown_slow#12 [phi:play_move_down::@6->play_move_down::@7#6] -- register_copy - //SEG591 [246] phi (byte) level#24 = (byte) level#19 [phi:play_move_down::@6->play_move_down::@7#7] -- register_copy - //SEG592 [246] phi (dword) score_bcd#20 = (dword) score_bcd#14 [phi:play_move_down::@6->play_move_down::@7#8] -- register_copy - //SEG593 [246] phi (word) lines_bcd#20 = (word) lines_bcd#15 [phi:play_move_down::@6->play_move_down::@7#9] -- register_copy - //SEG594 [246] phi (byte) current_ypos#29 = (byte) current_ypos#0 [phi:play_move_down::@6->play_move_down::@7#10] -- register_copy + //SEG602 [258] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG603 [258] phi (byte) game_over#26 = (byte) game_over#19 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG604 [258] phi (byte) current_xpos#41 = (byte) current_xpos#115 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG605 [258] phi (byte*) current_piece_gfx#33 = (byte*) current_piece_gfx#105 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG606 [258] phi (byte) current_orientation#36 = (byte) current_orientation#12 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG607 [258] phi (byte) current_piece_char#27 = (byte) current_piece_char#19 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG608 [258] phi (byte*) current_piece#27 = (byte*) current_piece#20 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG609 [258] phi (byte) level_bcd#32 = (byte) level_bcd#11 [phi:play_move_down::@6->play_move_down::@7#6] -- register_copy + //SEG610 [258] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#14 [phi:play_move_down::@6->play_move_down::@7#7] -- register_copy + //SEG611 [258] phi (byte) level#31 = (byte) level#10 [phi:play_move_down::@6->play_move_down::@7#8] -- register_copy + //SEG612 [258] phi (dword) score_bcd#27 = (dword) score_bcd#18 [phi:play_move_down::@6->play_move_down::@7#9] -- register_copy + //SEG613 [258] phi (word) lines_bcd#27 = (word) lines_bcd#19 [phi:play_move_down::@6->play_move_down::@7#10] -- register_copy + //SEG614 [258] phi (byte) current_ypos#36 = (byte) current_ypos#2 [phi:play_move_down::@6->play_move_down::@7#11] -- register_copy jmp b7 } -//SEG595 play_spawn_current +//SEG615 play_spawn_current play_spawn_current: { .label _3 = 4 - //SEG596 [251] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] - //SEG597 [251] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuxx=vbuc1 + //SEG616 [263] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] + //SEG617 [263] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuxx=vbuc1 ldx #7 - //SEG598 play_spawn_current::@1 + //SEG618 play_spawn_current::@1 b1: - //SEG599 [252] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 + //SEG619 [264] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 cpx #7 beq b2 - //SEG600 play_spawn_current::@3 - //SEG601 [253] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG620 play_spawn_current::@3 + //SEG621 [265] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta _3 - //SEG602 [254] (byte*) current_piece_gfx#16 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 - tay + //SEG622 [266] (byte) current_piece_char#16 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + lda PIECES_CHARS,x + sta current_piece_char + //SEG623 [267] (byte*) current_piece_gfx#21 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + ldy _3 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG603 [255] (byte) current_xpos#23 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG624 [268] (byte) current_xpos#28 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_X,x sta current_xpos - //SEG604 [256] (byte) current_ypos#18 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG625 [269] (byte) current_ypos#22 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_Y,x sta current_ypos - //SEG605 [257] (byte) current_piece_char#12 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx - lda PIECES_CHARS,x - sta current_piece_char - //SEG606 play_spawn_current::@return - //SEG607 [258] return + //SEG626 [270] (byte) play_collision::xpos#4 ← (byte) current_xpos#28 -- vbuz1=vbuz2 + lda current_xpos + sta play_collision.xpos + //SEG627 [271] (byte) play_collision::ypos#4 ← (byte) current_ypos#22 -- vbuz1=vbuz2 + lda current_ypos + sta play_collision.ypos + //SEG628 [272] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + lda PIECES,y + sta current_piece_93 + lda PIECES+1,y + sta current_piece_93+1 + //SEG629 [273] call play_collision + //SEG630 [178] phi from play_spawn_current::@3 to play_collision [phi:play_spawn_current::@3->play_collision] + //SEG631 [178] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current::@3->play_collision#0] -- register_copy + //SEG632 [178] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#4 [phi:play_spawn_current::@3->play_collision#1] -- register_copy + //SEG633 [178] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current::@3->play_collision#2] -- vbuxx=vbuc1 + ldx #0 + //SEG634 [178] phi (byte*) current_piece#16 = (byte*~) current_piece#93 [phi:play_spawn_current::@3->play_collision#3] -- register_copy + jsr play_collision + //SEG635 [274] (byte) play_collision::return#10 ← (byte) play_collision::return#15 + // (byte) play_collision::return#10 = (byte) play_collision::return#15 // register copy reg byte a + //SEG636 play_spawn_current::@10 + //SEG637 [275] (byte~) play_spawn_current::$5 ← (byte) play_collision::return#10 + // (byte~) play_spawn_current::$5 = (byte) play_collision::return#10 // register copy reg byte a + //SEG638 [276] if((byte~) play_spawn_current::$5!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@11 -- vbuaa_neq_vbuc1_then_la1 + cmp #COLLISION_PLAYFIELD + bne breturn + //SEG639 [277] phi from play_spawn_current::@10 to play_spawn_current::@return [phi:play_spawn_current::@10->play_spawn_current::@return] + //SEG640 [277] phi (byte) game_over#15 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@10->play_spawn_current::@return#0] -- vbuz1=vbuc1 + lda #1 + sta game_over + //SEG641 play_spawn_current::@return + breturn: + //SEG642 [278] return rts - //SEG608 [259] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] - //SEG609 play_spawn_current::@2 + //SEG643 [279] phi from play_spawn_current::@10 to play_spawn_current::@11 [phi:play_spawn_current::@10->play_spawn_current::@11] + //SEG644 play_spawn_current::@11 + //SEG645 [277] phi from play_spawn_current::@11 to play_spawn_current::@return [phi:play_spawn_current::@11->play_spawn_current::@return] + //SEG646 [277] phi (byte) game_over#15 = (byte) game_over#69 [phi:play_spawn_current::@11->play_spawn_current::@return#0] -- register_copy + //SEG647 [280] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG648 play_spawn_current::@2 b2: - //SEG610 [260] call sid_rnd + //SEG649 [281] call sid_rnd jsr sid_rnd - //SEG611 [261] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + //SEG650 [282] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 // (byte) sid_rnd::return#2 = (byte) sid_rnd::return#0 // register copy reg byte a - //SEG612 play_spawn_current::@7 - //SEG613 [262] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + //SEG651 play_spawn_current::@9 + //SEG652 [283] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 // (byte~) play_spawn_current::$1 = (byte) sid_rnd::return#2 // register copy reg byte a - //SEG614 [263] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 + //SEG653 [284] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 and #7 tax - //SEG615 [251] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] - //SEG616 [251] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@7->play_spawn_current::@1#0] -- register_copy + //SEG654 [263] phi from play_spawn_current::@9 to play_spawn_current::@1 [phi:play_spawn_current::@9->play_spawn_current::@1] + //SEG655 [263] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@9->play_spawn_current::@1#0] -- register_copy jmp b1 } -//SEG617 sid_rnd +//SEG656 sid_rnd sid_rnd: { - //SEG618 [264] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG657 [285] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC - //SEG619 sid_rnd::@return - //SEG620 [265] return + //SEG658 sid_rnd::@return + //SEG659 [286] return rts } -//SEG621 play_update_score +//SEG660 play_update_score play_update_score: { .label lines_before = 4 - .label add_bcd = $29 - //SEG622 [266] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 + .label add_bcd = $2a + //SEG661 [287] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn - //SEG623 play_update_score::@3 - //SEG624 [267] (byte~) play_update_score::$2 ← < (word) lines_bcd#15 -- vbuaa=_lo_vwuz1 + //SEG662 play_update_score::@3 + //SEG663 [288] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG625 [268] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuaa_band_vbuc1 + //SEG664 [289] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuaa_band_vbuc1 and #$f0 sta lines_before - //SEG626 [269] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG665 [290] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG627 [270] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuaa + //SEG666 [291] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuaa tay lda score_add_bcd,y sta add_bcd @@ -21950,9 +23390,9 @@ play_update_score: { sta add_bcd+2 lda score_add_bcd+3,y sta add_bcd+3 - //SEG628 asm { sed } + //SEG667 asm { sed } sed - //SEG629 [272] (word) lines_bcd#23 ← (word) lines_bcd#15 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG668 [293] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc lines_bcd @@ -21960,7 +23400,7 @@ play_update_score: { lda #0 adc lines_bcd+1 sta lines_bcd+1 - //SEG630 [273] (dword) score_bcd#23 ← (dword) score_bcd#14 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 + //SEG669 [294] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 lda score_bcd clc adc add_bcd @@ -21974,87 +23414,87 @@ play_update_score: { lda score_bcd+3 adc add_bcd+3 sta score_bcd+3 - //SEG631 asm { cld } + //SEG670 asm { cld } cld - //SEG632 [275] (byte~) play_update_score::$5 ← < (word) lines_bcd#23 -- vbuaa=_lo_vwuz1 + //SEG671 [296] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG633 [276] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 -- vbuaa=vbuaa_band_vbuc1 + //SEG672 [297] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 -- vbuaa=vbuaa_band_vbuc1 and #$f0 - //SEG634 [277] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 + //SEG673 [298] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 cmp lines_before beq breturn - //SEG635 [278] phi from play_update_score::@3 to play_update_score::@4 [phi:play_update_score::@3->play_update_score::@4] - //SEG636 play_update_score::@4 - //SEG637 [279] call play_increase_level + //SEG674 [299] phi from play_update_score::@3 to play_update_score::@4 [phi:play_update_score::@3->play_update_score::@4] + //SEG675 play_update_score::@4 + //SEG676 [300] call play_increase_level jsr play_increase_level - //SEG638 [280] phi from play_update_score play_update_score::@3 play_update_score::@4 to play_update_score::@return [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return] - //SEG639 [280] phi (byte) level_bcd#15 = (byte) level_bcd#20 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#0] -- register_copy - //SEG640 [280] phi (byte) current_movedown_slow#19 = (byte) current_movedown_slow#12 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#1] -- register_copy - //SEG641 [280] phi (byte) level#14 = (byte) level#19 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#2] -- register_copy - //SEG642 [280] phi (dword) score_bcd#12 = (dword) score_bcd#14 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#3] -- register_copy - //SEG643 [280] phi (word) lines_bcd#13 = (word) lines_bcd#15 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#4] -- register_copy - //SEG644 play_update_score::@return + //SEG677 [301] phi from play_update_score play_update_score::@3 play_update_score::@4 to play_update_score::@return [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return] + //SEG678 [301] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#0] -- register_copy + //SEG679 [301] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#1] -- register_copy + //SEG680 [301] phi (byte) level#18 = (byte) level#10 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#2] -- register_copy + //SEG681 [301] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#3] -- register_copy + //SEG682 [301] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#4] -- register_copy + //SEG683 play_update_score::@return breturn: - //SEG645 [281] return + //SEG684 [302] return rts } -//SEG646 play_increase_level +//SEG685 play_increase_level play_increase_level: { - //SEG647 [282] (byte) level#16 ← ++ (byte) level#19 -- vbuz1=_inc_vbuz1 + //SEG686 [303] (byte) level#20 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 inc level - //SEG648 [283] if((byte) level#16>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 -- vbuz1_gt_vbuc1_then_la1 + //SEG687 [304] if((byte) level#20>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 -- vbuz1_gt_vbuc1_then_la1 lda level cmp #$1d beq !+ bcs b1 !: - //SEG649 play_increase_level::@5 - //SEG650 [284] (byte) current_movedown_slow#8 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#16) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG688 play_increase_level::@5 + //SEG689 [305] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#20) -- vbuz1=pbuc1_derefidx_vbuz2 ldy level lda MOVEDOWN_SLOW_SPEEDS,y sta current_movedown_slow - //SEG651 [285] phi from play_increase_level::@5 to play_increase_level::@2 [phi:play_increase_level::@5->play_increase_level::@2] - //SEG652 [285] phi (byte) current_movedown_slow#60 = (byte) current_movedown_slow#8 [phi:play_increase_level::@5->play_increase_level::@2#0] -- register_copy + //SEG690 [306] phi from play_increase_level::@5 to play_increase_level::@2 [phi:play_increase_level::@5->play_increase_level::@2] + //SEG691 [306] phi (byte) current_movedown_slow#68 = (byte) current_movedown_slow#10 [phi:play_increase_level::@5->play_increase_level::@2#0] -- register_copy jmp b2 - //SEG653 [285] phi from play_increase_level to play_increase_level::@2 [phi:play_increase_level->play_increase_level::@2] + //SEG692 [306] phi from play_increase_level to play_increase_level::@2 [phi:play_increase_level->play_increase_level::@2] b1: - //SEG654 [285] phi (byte) current_movedown_slow#60 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@2#0] -- vbuz1=vbuc1 + //SEG693 [306] phi (byte) current_movedown_slow#68 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@2#0] -- vbuz1=vbuc1 lda #1 sta current_movedown_slow - //SEG655 play_increase_level::@2 + //SEG694 play_increase_level::@2 b2: - //SEG656 [286] (byte) level_bcd#17 ← ++ (byte) level_bcd#20 -- vbuz1=_inc_vbuz1 + //SEG695 [307] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 inc level_bcd - //SEG657 [287] (byte~) play_increase_level::$1 ← (byte) level_bcd#17 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG696 [308] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and level_bcd - //SEG658 [288] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 -- vbuaa_neq_vbuc1_then_la1 + //SEG697 [309] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 -- vbuaa_neq_vbuc1_then_la1 cmp #$a bne b3 - //SEG659 play_increase_level::@7 - //SEG660 [289] (byte) level_bcd#6 ← (byte) level_bcd#17 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 + //SEG698 play_increase_level::@7 + //SEG699 [310] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 lda #6 clc adc level_bcd sta level_bcd - //SEG661 [290] phi from play_increase_level::@2 play_increase_level::@7 to play_increase_level::@3 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3] - //SEG662 [290] phi (byte) level_bcd#55 = (byte) level_bcd#17 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3#0] -- register_copy - //SEG663 play_increase_level::@3 + //SEG700 [311] phi from play_increase_level::@2 play_increase_level::@7 to play_increase_level::@3 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3] + //SEG701 [311] phi (byte) level_bcd#63 = (byte) level_bcd#21 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3#0] -- register_copy + //SEG702 play_increase_level::@3 b3: - //SEG664 asm { sed } + //SEG703 asm { sed } sed - //SEG665 [292] phi from play_increase_level::@3 to play_increase_level::@4 [phi:play_increase_level::@3->play_increase_level::@4] - //SEG666 [292] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@3->play_increase_level::@4#0] -- vbuxx=vbuc1 + //SEG704 [313] phi from play_increase_level::@3 to play_increase_level::@4 [phi:play_increase_level::@3->play_increase_level::@4] + //SEG705 [313] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@3->play_increase_level::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG667 [292] phi from play_increase_level::@4 to play_increase_level::@4 [phi:play_increase_level::@4->play_increase_level::@4] - //SEG668 [292] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@4->play_increase_level::@4#0] -- register_copy - //SEG669 play_increase_level::@4 + //SEG706 [313] phi from play_increase_level::@4 to play_increase_level::@4 [phi:play_increase_level::@4->play_increase_level::@4] + //SEG707 [313] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@4->play_increase_level::@4#0] -- register_copy + //SEG708 play_increase_level::@4 b4: - //SEG670 [293] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG709 [314] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG671 [294] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa + //SEG710 [315] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa tay clc lda score_add_bcd,y @@ -22069,131 +23509,131 @@ play_increase_level: { lda score_add_bcd+3,y adc SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG672 [295] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx + //SEG711 [316] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx inx - //SEG673 [296] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG712 [317] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b4 - //SEG674 play_increase_level::@8 - //SEG675 asm { cld } + //SEG713 play_increase_level::@8 + //SEG714 asm { cld } cld - //SEG676 play_increase_level::@return - //SEG677 [298] return + //SEG715 play_increase_level::@return + //SEG716 [319] return rts } -//SEG678 play_remove_lines +//SEG717 play_remove_lines play_remove_lines: { .label c = $c .label x = $a .label y = 4 .label removed = 9 .label full = $b - //SEG679 [300] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] - //SEG680 [300] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG718 [321] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG719 [321] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta removed - //SEG681 [300] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG720 [321] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 sta y - //SEG682 [300] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 + //SEG721 [321] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG683 [300] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 + //SEG722 [321] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG684 [300] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] - //SEG685 [300] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#7 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy - //SEG686 [300] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy - //SEG687 [300] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy - //SEG688 [300] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#3] -- register_copy - //SEG689 play_remove_lines::@1 + //SEG723 [321] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] + //SEG724 [321] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#7 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy + //SEG725 [321] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy + //SEG726 [321] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy + //SEG727 [321] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#3] -- register_copy + //SEG728 play_remove_lines::@1 b1: - //SEG690 [301] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] - //SEG691 [301] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG729 [322] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG730 [322] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG692 [301] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG731 [322] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG693 [301] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy - //SEG694 [301] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy - //SEG695 [301] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] - //SEG696 [301] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy - //SEG697 [301] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy - //SEG698 [301] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy - //SEG699 [301] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy - //SEG700 play_remove_lines::@2 + //SEG732 [322] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG733 [322] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy + //SEG734 [322] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG735 [322] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG736 [322] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG737 [322] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG738 [322] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy + //SEG739 play_remove_lines::@2 b2: - //SEG701 [302] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG740 [323] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy lda playfield,y sta c - //SEG702 [303] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG741 [324] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG703 [304] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 -- vbuz1_neq_0_then_la1 + //SEG742 [325] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 -- vbuz1_neq_0_then_la1 cmp #0 bne b3 - //SEG704 [305] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] - //SEG705 [305] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG743 [326] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG744 [326] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full - //SEG706 play_remove_lines::@3 + //SEG745 play_remove_lines::@3 b3: - //SEG707 [306] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG746 [327] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda c sta playfield,x - //SEG708 [307] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG747 [328] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG709 [308] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG748 [329] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG710 [309] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG749 [330] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2 - //SEG711 play_remove_lines::@9 - //SEG712 [310] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG750 play_remove_lines::@9 + //SEG751 [331] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4 - //SEG713 play_remove_lines::@10 - //SEG714 [311] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG752 play_remove_lines::@10 + //SEG753 [332] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #PLAYFIELD_COLS tax - //SEG715 [312] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 + //SEG754 [333] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 inc removed - //SEG716 [313] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] - //SEG717 [313] phi (byte) play_remove_lines::removed#7 = (byte) play_remove_lines::removed#1 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy - //SEG718 [313] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#1] -- register_copy - //SEG719 play_remove_lines::@4 + //SEG755 [334] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] + //SEG756 [334] phi (byte) play_remove_lines::removed#7 = (byte) play_remove_lines::removed#1 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy + //SEG757 [334] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#1] -- register_copy + //SEG758 play_remove_lines::@4 b4: - //SEG720 [314] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG759 [335] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG721 [315] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG760 [336] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1 - //SEG722 [316] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] - //SEG723 [316] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy - //SEG724 play_remove_lines::@5 + //SEG761 [337] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] + //SEG762 [337] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy + //SEG763 play_remove_lines::@5 b5: - //SEG725 [317] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG764 [338] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b6 - //SEG726 play_remove_lines::@return - //SEG727 [318] return + //SEG765 play_remove_lines::@return + //SEG766 [339] return rts - //SEG728 play_remove_lines::@6 + //SEG767 play_remove_lines::@6 b6: - //SEG729 [319] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG768 [340] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta playfield,x - //SEG730 [320] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG769 [341] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b5 - //SEG731 [321] phi from play_remove_lines::@2 to play_remove_lines::@18 [phi:play_remove_lines::@2->play_remove_lines::@18] - //SEG732 play_remove_lines::@18 - //SEG733 [305] phi from play_remove_lines::@18 to play_remove_lines::@3 [phi:play_remove_lines::@18->play_remove_lines::@3] - //SEG734 [305] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@18->play_remove_lines::@3#0] -- register_copy + //SEG770 [342] phi from play_remove_lines::@2 to play_remove_lines::@18 [phi:play_remove_lines::@2->play_remove_lines::@18] + //SEG771 play_remove_lines::@18 + //SEG772 [326] phi from play_remove_lines::@18 to play_remove_lines::@3 [phi:play_remove_lines::@18->play_remove_lines::@3] + //SEG773 [326] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@18->play_remove_lines::@3#0] -- register_copy } -//SEG735 play_lock_current +//SEG774 play_lock_current play_lock_current: { .label ypos2 = $10 .label playfield_line = 5 @@ -22204,432 +23644,433 @@ play_lock_current: { .label i_3 = 9 .label i_7 = 9 .label i_9 = 9 - //SEG736 [322] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#21 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG775 [343] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#25 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG737 [323] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] - //SEG738 [323] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 + //SEG776 [344] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG777 [344] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG739 [323] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 + //SEG778 [344] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 sta i_3 - //SEG740 [323] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy - //SEG741 play_lock_current::@1 + //SEG779 [344] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG780 play_lock_current::@1 b1: - //SEG742 [324] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG781 [345] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG743 [325] (byte) play_lock_current::col#0 ← (byte) current_xpos#10 -- vbuz1=vbuz2 + //SEG782 [346] (byte) play_lock_current::col#0 ← (byte) current_xpos#115 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG744 [326] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] - //SEG745 [326] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 + //SEG783 [347] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG784 [347] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG746 [326] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy - //SEG747 [326] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy - //SEG748 play_lock_current::@2 + //SEG785 [347] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG786 [347] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy + //SEG787 play_lock_current::@2 b2: - //SEG749 [327] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG788 [348] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG750 [328] if(*((byte*) current_piece_gfx#20 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG789 [349] if(*((byte*) current_piece_gfx#105 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 - //SEG751 play_lock_current::@4 - //SEG752 [329] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#15 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG790 play_lock_current::@4 + //SEG791 [350] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#19 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy col sta (playfield_line),y - //SEG753 play_lock_current::@3 + //SEG792 play_lock_current::@3 b3: - //SEG754 [330] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG793 [351] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG755 [331] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG794 [352] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG756 [332] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG795 [353] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b8 - //SEG757 play_lock_current::@5 - //SEG758 [333] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG796 play_lock_current::@5 + //SEG797 [354] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG759 [334] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG798 [355] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG760 [335] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG799 [356] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 - //SEG761 play_lock_current::@return - //SEG762 [336] return + //SEG800 play_lock_current::@return + //SEG801 [357] return rts - //SEG763 play_lock_current::@7 + //SEG802 play_lock_current::@7 b7: - //SEG764 [337] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG803 [358] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG765 [323] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] - //SEG766 [323] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy - //SEG767 [323] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy - //SEG768 [323] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy + //SEG804 [344] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] + //SEG805 [344] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy + //SEG806 [344] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy + //SEG807 [344] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG769 play_lock_current::@8 + //SEG808 play_lock_current::@8 b8: - //SEG770 [338] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG809 [359] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG771 [326] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] - //SEG772 [326] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy - //SEG773 [326] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy - //SEG774 [326] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy + //SEG810 [347] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] + //SEG811 [347] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy + //SEG812 [347] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy + //SEG813 [347] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG775 keyboard_event_pressed +//SEG814 keyboard_event_pressed keyboard_event_pressed: { .label row_bits = $a .label keycode = 9 - //SEG776 [340] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 + //SEG815 [361] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr lsr lsr - //SEG777 [341] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG816 [362] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda keyboard_scan_values,y sta row_bits - //SEG778 [342] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 + //SEG817 [363] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 lda #7 and keycode - //SEG779 [343] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa + //SEG818 [364] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa tay lda keyboard_matrix_col_bitmask,y and row_bits - //SEG780 keyboard_event_pressed::@return - //SEG781 [344] return + //SEG819 keyboard_event_pressed::@return + //SEG820 [365] return rts } -//SEG782 keyboard_event_get +//SEG821 keyboard_event_get keyboard_event_get: { - //SEG783 [345] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + //SEG822 [366] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq b1 - //SEG784 keyboard_event_get::@3 - //SEG785 [346] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG823 keyboard_event_get::@3 + //SEG824 [367] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG786 [347] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 - ldy keyboard_events_size - lda keyboard_events,y - //SEG787 [348] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] - //SEG788 [348] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG789 [348] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG825 [368] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 + ldx keyboard_events_size + lda keyboard_events,x + tax + //SEG826 [369] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG827 [369] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG828 [369] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG790 [348] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG829 [369] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] b1: - //SEG791 [348] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG792 [348] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 - lda #$ff - //SEG793 keyboard_event_get::@return + //SEG830 [369] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG831 [369] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 + ldx #$ff + //SEG832 keyboard_event_get::@return breturn: - //SEG794 [349] return + //SEG833 [370] return rts } -//SEG795 keyboard_event_scan +//SEG834 keyboard_event_scan keyboard_event_scan: { .label row_scan = $b .label keycode = $a .label row = 9 - //SEG796 [351] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] - //SEG797 [351] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG798 [351] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG835 [372] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG836 [372] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG837 [372] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG799 [351] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG838 [372] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 sta row - //SEG800 [351] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] - //SEG801 [351] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG802 [351] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG803 [351] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy - //SEG804 keyboard_event_scan::@1 + //SEG839 [372] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG840 [372] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG841 [372] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG842 [372] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG843 keyboard_event_scan::@1 b1: - //SEG805 [352] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG844 [373] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG806 [353] call keyboard_matrix_read + //SEG845 [374] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG807 [354] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG846 [375] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 // (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#0 // register copy reg byte a - //SEG808 keyboard_event_scan::@25 - //SEG809 [355] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG847 keyboard_event_scan::@25 + //SEG848 [376] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG810 [356] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG849 [377] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 ldy row cmp keyboard_scan_values,y bne b6 - //SEG811 keyboard_event_scan::@13 - //SEG812 [357] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG850 keyboard_event_scan::@13 + //SEG851 [378] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG813 [358] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] - //SEG814 [358] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG815 [358] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy - //SEG816 keyboard_event_scan::@3 + //SEG852 [379] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG853 [379] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG854 [379] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG855 keyboard_event_scan::@3 b3: - //SEG817 [359] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG856 [380] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG818 [360] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG857 [381] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1 - //SEG819 [361] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] - //SEG820 keyboard_event_scan::@20 - //SEG821 [362] call keyboard_event_pressed - //SEG822 [339] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] - //SEG823 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG858 [382] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG859 keyboard_event_scan::@20 + //SEG860 [383] call keyboard_event_pressed + //SEG861 [360] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG862 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG824 [363] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG863 [384] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG825 keyboard_event_scan::@26 - //SEG826 [364] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG864 keyboard_event_scan::@26 + //SEG865 [385] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 // (byte~) keyboard_event_scan::$14 = (byte) keyboard_event_pressed::return#0 // register copy reg byte a - //SEG827 [365] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 + //SEG866 [386] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG828 [366] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] - //SEG829 keyboard_event_scan::@21 - //SEG830 [367] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] - //SEG831 [367] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + //SEG867 [387] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG868 keyboard_event_scan::@21 + //SEG869 [388] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG870 [388] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 ldx #0|KEY_MODIFIER_LSHIFT jmp b9 - //SEG832 [367] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG871 [388] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b2: - //SEG833 [367] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + //SEG872 [388] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 ldx #0 - //SEG834 keyboard_event_scan::@9 + //SEG873 keyboard_event_scan::@9 b9: - //SEG835 [368] call keyboard_event_pressed - //SEG836 [339] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] - //SEG837 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG874 [389] call keyboard_event_pressed + //SEG875 [360] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG876 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG838 [369] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG877 [390] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG839 keyboard_event_scan::@27 - //SEG840 [370] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG878 keyboard_event_scan::@27 + //SEG879 [391] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 // (byte~) keyboard_event_scan::$18 = (byte) keyboard_event_pressed::return#1 // register copy reg byte a - //SEG841 [371] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 + //SEG880 [392] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 - //SEG842 keyboard_event_scan::@22 - //SEG843 [372] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG881 keyboard_event_scan::@22 + //SEG882 [393] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_RSHIFT tax - //SEG844 [373] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] - //SEG845 [373] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy - //SEG846 keyboard_event_scan::@10 + //SEG883 [394] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG884 [394] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy + //SEG885 keyboard_event_scan::@10 b10: - //SEG847 [374] call keyboard_event_pressed - //SEG848 [339] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] - //SEG849 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG886 [395] call keyboard_event_pressed + //SEG887 [360] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG888 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG850 [375] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG889 [396] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG851 keyboard_event_scan::@28 - //SEG852 [376] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG890 keyboard_event_scan::@28 + //SEG891 [397] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 // (byte~) keyboard_event_scan::$22 = (byte) keyboard_event_pressed::return#2 // register copy reg byte a - //SEG853 [377] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 + //SEG892 [398] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11 - //SEG854 keyboard_event_scan::@23 - //SEG855 [378] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG893 keyboard_event_scan::@23 + //SEG894 [399] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_CTRL tax - //SEG856 [379] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] - //SEG857 [379] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy - //SEG858 keyboard_event_scan::@11 + //SEG895 [400] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG896 [400] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy + //SEG897 keyboard_event_scan::@11 b11: - //SEG859 [380] call keyboard_event_pressed - //SEG860 [339] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] - //SEG861 [339] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG898 [401] call keyboard_event_pressed + //SEG899 [360] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG900 [360] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG862 [381] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG901 [402] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG863 keyboard_event_scan::@29 - //SEG864 [382] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG902 keyboard_event_scan::@29 + //SEG903 [403] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 // (byte~) keyboard_event_scan::$26 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a - //SEG865 [383] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 + //SEG904 [404] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 beq breturn - //SEG866 keyboard_event_scan::@24 - //SEG867 [384] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 + //SEG905 keyboard_event_scan::@24 + //SEG906 [405] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_COMMODORE - //SEG868 keyboard_event_scan::@return + //SEG907 keyboard_event_scan::@return breturn: - //SEG869 [385] return + //SEG908 [406] return rts - //SEG870 [386] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG909 [407] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b6: - //SEG871 [386] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG872 [386] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG873 [386] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 + //SEG910 [407] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG911 [407] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG912 [407] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 ldx #0 - //SEG874 [386] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] - //SEG875 [386] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG876 [386] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG877 [386] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy - //SEG878 keyboard_event_scan::@4 + //SEG913 [407] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG914 [407] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG915 [407] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG916 [407] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG917 keyboard_event_scan::@4 b4: - //SEG879 [387] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 + //SEG918 [408] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 lda row_scan ldy row eor keyboard_scan_values,y - //SEG880 [388] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + //SEG919 [409] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx and keyboard_matrix_col_bitmask,x - //SEG881 [389] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 + //SEG920 [410] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG882 keyboard_event_scan::@15 - //SEG883 [390] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG921 keyboard_event_scan::@15 + //SEG922 [411] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5 - //SEG884 keyboard_event_scan::@16 - //SEG885 [391] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx + //SEG923 keyboard_event_scan::@16 + //SEG924 [412] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx lda keyboard_matrix_col_bitmask,x and row_scan - //SEG886 [392] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 + //SEG925 [413] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 - //SEG887 keyboard_event_scan::@17 - //SEG888 [393] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG926 keyboard_event_scan::@17 + //SEG927 [414] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG889 [394] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG928 [415] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG890 [395] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] - //SEG891 [395] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy - //SEG892 keyboard_event_scan::@5 + //SEG929 [416] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG930 [416] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG931 keyboard_event_scan::@5 b5: - //SEG893 [396] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG932 [417] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG894 [397] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG933 [418] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG895 [398] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG934 [419] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b4 - //SEG896 keyboard_event_scan::@19 - //SEG897 [399] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG935 keyboard_event_scan::@19 + //SEG936 [420] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3 - //SEG898 keyboard_event_scan::@7 + //SEG937 keyboard_event_scan::@7 b7: - //SEG899 [400] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 + //SEG938 [421] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG900 [401] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG939 [422] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa ldy keyboard_events_size sta keyboard_events,y - //SEG901 [402] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG940 [423] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5 } -//SEG902 keyboard_matrix_read +//SEG941 keyboard_matrix_read keyboard_matrix_read: { - //SEG903 [403] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + //SEG942 [424] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A - //SEG904 [404] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG943 [425] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG905 keyboard_matrix_read::@return - //SEG906 [405] return + //SEG944 keyboard_matrix_read::@return + //SEG945 [426] return rts } -//SEG907 render_show +//SEG946 render_show render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f - //SEG908 [406] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + //SEG947 [427] if((byte) render_screen_show#17==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181 - //SEG909 [407] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] - //SEG910 render_show::toD0182 - //SEG911 [408] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] - //SEG912 [408] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuaa=vbuc1 + //SEG948 [428] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG949 render_show::toD0182 + //SEG950 [429] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] + //SEG951 [429] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuaa=vbuc1 lda #toD0182_return - //SEG913 render_show::@2 + //SEG952 render_show::@2 b2: - //SEG914 [409] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa + //SEG953 [430] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa sta D018 - //SEG915 [410] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + //SEG954 [431] (byte) render_screen_showing#1 ← (byte) render_screen_show#17 -- vbuz1=vbuz2 lda render_screen_show sta render_screen_showing - //SEG916 render_show::@return - //SEG917 [411] return + //SEG955 render_show::@return + //SEG956 [432] return rts - //SEG918 [412] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] - //SEG919 render_show::toD0181 + //SEG957 [433] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG958 render_show::toD0181 toD0181: - //SEG920 [408] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] - //SEG921 [408] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuaa=vbuc1 + //SEG959 [429] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] + //SEG960 [429] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuaa=vbuc1 lda #toD0181_return jmp b2 } -//SEG922 play_init +//SEG961 play_init play_init: { .label pli = 5 .label idx = 2 - //SEG923 [414] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] - //SEG924 [414] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 + //SEG962 [435] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG963 [435] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG925 [414] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 + //SEG964 [435] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG926 [414] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuxx=vbuc1 + //SEG965 [435] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuxx=vbuc1 ldx #0 - //SEG927 [414] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] - //SEG928 [414] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG929 [414] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG930 [414] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy - //SEG931 play_init::@1 + //SEG966 [435] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG967 [435] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG968 [435] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG969 [435] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG970 play_init::@1 b1: - //SEG932 [415] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG971 [436] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG933 [416] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG972 [437] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG934 [417] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG973 [438] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda idx sta playfield_lines_idx,x - //SEG935 [418] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG974 [439] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -22637,35 +24078,35 @@ play_init: { bcc !+ inc pli+1 !: - //SEG936 [419] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG975 [440] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG937 [420] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx + //SEG976 [441] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG938 [421] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG977 [442] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1 - //SEG939 play_init::@3 - //SEG940 [422] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 + //SEG978 play_init::@3 + //SEG979 [443] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES - //SEG941 [423] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 + //SEG980 [444] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 lda MOVEDOWN_SLOW_SPEEDS sta current_movedown_slow - //SEG942 [424] phi from play_init::@3 to play_init::@2 [phi:play_init::@3->play_init::@2] - //SEG943 [424] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@3->play_init::@2#0] -- vbuxx=vbuc1 + //SEG981 [445] phi from play_init::@3 to play_init::@2 [phi:play_init::@3->play_init::@2] + //SEG982 [445] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@3->play_init::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG944 [424] phi from play_init::@2 to play_init::@2 [phi:play_init::@2->play_init::@2] - //SEG945 [424] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@2->play_init::@2#0] -- register_copy - //SEG946 play_init::@2 + //SEG983 [445] phi from play_init::@2 to play_init::@2 [phi:play_init::@2->play_init::@2] + //SEG984 [445] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@2->play_init::@2#0] -- register_copy + //SEG985 play_init::@2 b2: - //SEG947 [425] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG986 [446] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG948 [426] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa + //SEG987 [447] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa tay lda SCORE_BASE_BCD,y sta score_add_bcd,y @@ -22675,191 +24116,191 @@ play_init: { sta score_add_bcd+2,y lda SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG949 [427] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx + //SEG988 [448] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx inx - //SEG950 [428] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG989 [449] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b2 - //SEG951 play_init::@return - //SEG952 [429] return + //SEG990 play_init::@return + //SEG991 [450] return rts } -//SEG953 sprites_irq_init +//SEG992 sprites_irq_init sprites_irq_init: { - //SEG954 asm { sei } + //SEG993 asm { sei } sei - //SEG955 [431] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG994 [452] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG956 asm { ldaCIA1_INTERRUPT } + //SEG995 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG957 [433] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG996 [454] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG958 [434] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG997 [455] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG959 [435] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG998 [456] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG960 [436] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG999 [457] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda VIC_CONTROL and #$7f sta VIC_CONTROL - //SEG961 [437] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG1000 [458] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG962 [438] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1001 [459] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG963 [439] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG1002 [460] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG964 asm { cli } + //SEG1003 asm { cli } cli - //SEG965 sprites_irq_init::@return - //SEG966 [441] return + //SEG1004 sprites_irq_init::@return + //SEG1005 [462] return rts } -//SEG967 sprites_init +//SEG1006 sprites_init sprites_init: { .label xpos = 2 - //SEG968 [442] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG1007 [463] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG969 [443] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1008 [464] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG970 [444] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1009 [465] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_Y - //SEG971 [445] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1010 [466] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_X - //SEG972 [446] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] - //SEG973 [446] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG1011 [467] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG1012 [467] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG974 [446] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 + //SEG1013 [467] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG975 [446] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] - //SEG976 [446] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG977 [446] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy - //SEG978 sprites_init::@1 + //SEG1014 [467] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG1015 [467] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG1016 [467] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG1017 sprites_init::@1 b1: - //SEG979 [447] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1018 [468] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG980 [448] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG1019 [469] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda xpos sta SPRITES_XPOS,y - //SEG981 [449] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG1020 [470] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #BLACK sta SPRITES_COLS,x - //SEG982 [450] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1021 [471] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG983 [451] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx + //SEG1022 [472] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx inx - //SEG984 [452] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1023 [473] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1 - //SEG985 sprites_init::@return - //SEG986 [453] return + //SEG1024 sprites_init::@return + //SEG1025 [474] return rts } -//SEG987 render_init +//SEG1026 render_init render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)>>6 .label li_1 = 5 .label li_2 = 7 - //SEG988 render_init::vicSelectGfxBank1 - //SEG989 [455] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1027 render_init::vicSelectGfxBank1 + //SEG1028 [476] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG990 [456] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] - //SEG991 render_init::vicSelectGfxBank1_toDd001 - //SEG992 render_init::vicSelectGfxBank1_@1 - //SEG993 [457] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG1029 [477] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG1030 render_init::vicSelectGfxBank1_toDd001 + //SEG1031 render_init::vicSelectGfxBank1_@1 + //SEG1032 [478] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG994 render_init::@3 - //SEG995 [458] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1033 render_init::@3 + //SEG1034 [479] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG996 [459] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1035 [480] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG997 [460] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1036 [481] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 sta BGCOL1 - //SEG998 [461] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG1037 [482] *((const byte*) BGCOL2#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL2 - //SEG999 [462] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 + //SEG1038 [483] *((const byte*) BGCOL3#0) ← (const byte) CYAN#0 -- _deref_pbuc1=vbuc2 lda #CYAN sta BGCOL3 - //SEG1000 [463] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG1039 [484] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG1001 [464] call render_screen_original - //SEG1002 [477] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] - //SEG1003 [477] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1040 [485] call render_screen_original + //SEG1041 [498] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] + //SEG1042 [498] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1004 [465] phi from render_init::@3 to render_init::@4 [phi:render_init::@3->render_init::@4] - //SEG1005 render_init::@4 - //SEG1006 [466] call render_screen_original - //SEG1007 [477] phi from render_init::@4 to render_screen_original [phi:render_init::@4->render_screen_original] - //SEG1008 [477] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@4->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1043 [486] phi from render_init::@3 to render_init::@4 [phi:render_init::@3->render_init::@4] + //SEG1044 render_init::@4 + //SEG1045 [487] call render_screen_original + //SEG1046 [498] phi from render_init::@4 to render_screen_original [phi:render_init::@4->render_screen_original] + //SEG1047 [498] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@4->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1009 [467] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] - //SEG1010 [467] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#0] -- pbuz1=pbuc1 + //SEG1048 [488] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] + //SEG1049 [488] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG1011 [467] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#1] -- pbuz1=pbuc1 + //SEG1050 [488] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG1012 [467] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@1#2] -- vbuxx=vbuc1 + //SEG1051 [488] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@1#2] -- vbuxx=vbuc1 ldx #0 - //SEG1013 [467] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] - //SEG1014 [467] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG1015 [467] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG1016 [467] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy - //SEG1017 render_init::@1 + //SEG1052 [488] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG1053 [488] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG1054 [488] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG1055 [488] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy + //SEG1056 render_init::@1 b1: - //SEG1018 [468] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1057 [489] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1019 [469] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG1058 [490] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_1 sta screen_lines_1,y lda li_1+1 sta screen_lines_1+1,y - //SEG1020 [470] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1059 [491] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1021 [471] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG1060 [492] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_2 sta screen_lines_2,y lda li_2+1 sta screen_lines_2+1,y - //SEG1022 [472] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1061 [493] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_1 clc adc #$28 @@ -22867,7 +24308,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG1023 [473] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1062 [494] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_2 clc adc #$28 @@ -22875,16 +24316,16 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG1024 [474] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx + //SEG1063 [495] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG1025 [475] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1064 [496] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1 - //SEG1026 render_init::@return - //SEG1027 [476] return + //SEG1065 render_init::@return + //SEG1066 [497] return rts } -//SEG1028 render_screen_original +//SEG1067 render_screen_original render_screen_original: { .const SPACE = 0 .label screen = $11 @@ -22892,296 +24333,313 @@ render_screen_original: { .label oscr = 5 .label ocols = 7 .label y = 2 - //SEG1029 [478] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] - //SEG1030 [478] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG1068 [499] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + //SEG1069 [499] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1031 [478] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG1070 [499] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_COLORS_ORIGINAL+$20*2 sta ocols+1 - //SEG1032 [478] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG1071 [499] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta oscr+1 - //SEG1033 [478] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 + //SEG1072 [499] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 lda #COLS sta cols+1 - //SEG1034 [478] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy - //SEG1035 [478] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] - //SEG1036 [478] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy - //SEG1037 [478] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy - //SEG1038 [478] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy - //SEG1039 [478] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@7->render_screen_original::@1#3] -- register_copy - //SEG1040 [478] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@7->render_screen_original::@1#4] -- register_copy - //SEG1041 render_screen_original::@1 + //SEG1073 [499] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy + //SEG1074 [499] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] + //SEG1075 [499] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy + //SEG1076 [499] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy + //SEG1077 [499] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy + //SEG1078 [499] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@7->render_screen_original::@1#3] -- register_copy + //SEG1079 [499] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@7->render_screen_original::@1#4] -- register_copy + //SEG1080 render_screen_original::@1 b1: - //SEG1042 [479] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] - //SEG1043 [479] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 + //SEG1081 [500] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG1082 [500] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1044 [479] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy - //SEG1045 [479] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy - //SEG1046 [479] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] - //SEG1047 [479] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy - //SEG1048 [479] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy - //SEG1049 [479] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy - //SEG1050 render_screen_original::@2 + //SEG1083 [500] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG1084 [500] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy + //SEG1085 [500] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG1086 [500] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy + //SEG1087 [500] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG1088 [500] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy + //SEG1089 render_screen_original::@2 b2: - //SEG1051 [480] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1090 [501] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1052 [481] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG1091 [502] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1053 [482] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1092 [503] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1054 [483] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 + //SEG1093 [504] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1055 [484] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx + //SEG1094 [505] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx inx - //SEG1056 [485] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1095 [506] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b2 - //SEG1057 [486] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] - //SEG1058 [486] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy - //SEG1059 [486] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG1060 [486] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy - //SEG1061 [486] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy - //SEG1062 [486] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy - //SEG1063 render_screen_original::@3 + //SEG1096 [507] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] + //SEG1097 [507] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy + //SEG1098 [507] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG1099 [507] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG1100 [507] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy + //SEG1101 [507] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy + //SEG1102 render_screen_original::@3 b3: - //SEG1064 [487] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1103 [508] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (oscr),y sta (screen),y - //SEG1065 [488] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG1104 [509] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1066 [489] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 + //SEG1105 [510] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 inc oscr bne !+ inc oscr+1 !: - //SEG1067 [490] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1106 [511] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (ocols),y sta (cols),y - //SEG1068 [491] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 + //SEG1107 [512] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1069 [492] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 + //SEG1108 [513] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 inc ocols bne !+ inc ocols+1 !: - //SEG1070 [493] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx + //SEG1109 [514] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx inx - //SEG1071 [494] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1110 [515] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$24 bne b3 - //SEG1072 [495] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] - //SEG1073 [495] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy - //SEG1074 [495] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy - //SEG1075 [495] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy - //SEG1076 render_screen_original::@4 + //SEG1111 [516] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] + //SEG1112 [516] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy + //SEG1113 [516] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG1114 [516] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy + //SEG1115 render_screen_original::@4 b4: - //SEG1077 [496] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1116 [517] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1078 [497] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG1117 [518] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1079 [498] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1118 [519] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1080 [499] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 + //SEG1119 [520] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1081 [500] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx + //SEG1120 [521] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx inx - //SEG1082 [501] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG1121 [522] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b4 - //SEG1083 render_screen_original::@7 - //SEG1084 [502] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG1122 render_screen_original::@7 + //SEG1123 [523] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1085 [503] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1124 [524] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1 - //SEG1086 render_screen_original::@return - //SEG1087 [504] return + //SEG1125 render_screen_original::@return + //SEG1126 [525] return rts } -//SEG1088 sid_rnd_init +//SEG1127 sid_rnd_init sid_rnd_init: { - //SEG1089 [505] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG1128 [526] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG1090 [506] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG1129 [527] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL - //SEG1091 sid_rnd_init::@return - //SEG1092 [507] return + //SEG1130 sid_rnd_init::@return + //SEG1131 [528] return rts } -//SEG1093 sprites_irq +//SEG1132 sprites_irq sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 - //SEG1094 entry interrupt(HARDWARE_CLOBBER) + .label raster_sprite_gfx_modify = $2e + //SEG1133 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG1095 asm { cld } + //SEG1134 asm { cld } cld - //SEG1096 [509] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG1135 [530] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 lda irq_sprite_ypos - //SEG1097 [510] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1136 [531] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG1098 [511] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1137 [532] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG1099 [512] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1138 [533] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG1100 [513] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1139 [534] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG1101 sprites_irq::@1 + //SEG1140 [535] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + ldx irq_raster_next + inx + //SEG1141 [536] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx + stx raster_sprite_gfx_modify + //SEG1142 sprites_irq::@1 b1: - //SEG1102 [514] if(*((const byte*) RASTER#0)<(byte) irq_sprite_ypos#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG1143 [537] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER - cmp irq_sprite_ypos + cmp raster_sprite_gfx_modify bcc b1 - //SEG1103 sprites_irq::@7 - //SEG1104 [515] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + //SEG1144 sprites_irq::@8 + //SEG1145 [538] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 ldx irq_sprite_ptr - //SEG1105 [516] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + //SEG1146 [539] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b2 - //SEG1106 sprites_irq::@8 - //SEG1107 [517] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1147 sprites_irq::@9 + //SEG1148 [540] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2 - //SEG1108 [518] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx - inx - //SEG1109 [519] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_2+1 - //SEG1110 [520] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_2+2 - //SEG1111 [521] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuxx=_inc_vbuxx - inx - //SEG1112 [522] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuxx - stx PLAYFIELD_SPRITE_PTRS_2+3 - //SEG1113 sprites_irq::@3 + //SEG1149 [541] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + txa + clc + adc #1 + //SEG1150 [542] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_2+1 + //SEG1151 [543] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_2+2 + //SEG1152 [544] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa + clc + adc #1 + //SEG1153 [545] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa + sta PLAYFIELD_SPRITE_PTRS_2+3 + //SEG1154 sprites_irq::@3 b3: - //SEG1114 [523] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG1155 [546] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG1115 [524] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG1156 [547] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt - cmp #$a + cmp #9 beq b4 - //SEG1116 sprites_irq::@10 - //SEG1117 [525] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 - lda #$15 + //SEG1157 sprites_irq::@11 + //SEG1158 [548] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 + cmp #$a + beq b5 + //SEG1159 sprites_irq::@12 + //SEG1160 [549] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz1_plus_vbuc1 + lda #$14 clc adc irq_raster_next sta irq_raster_next - //SEG1118 [526] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1161 [550] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 lda #$15 clc adc irq_sprite_ypos sta irq_sprite_ypos - //SEG1119 [527] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1162 [551] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr - //SEG1120 [528] phi from sprites_irq::@10 sprites_irq::@13 to sprites_irq::@5 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5] - //SEG1121 [528] phi (byte) irq_raster_next#13 = (byte) irq_raster_next#2 [phi:sprites_irq::@10/sprites_irq::@13->sprites_irq::@5#0] -- register_copy - //SEG1122 sprites_irq::@5 - b5: - //SEG1123 [529] (byte) sprites_irq::raster_next#0 ← (byte) irq_raster_next#13 -- vbuxx=vbuz1 - ldx irq_raster_next - //SEG1124 [530] (byte~) sprites_irq::$4 ← (byte) sprites_irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 - txa - and #7 - //SEG1125 [531] if((byte~) sprites_irq::$4!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto sprites_irq::@6 -- vbuaa_neq_vbuc1_then_la1 - cmp #3 - bne b6 - //SEG1126 sprites_irq::@12 - //SEG1127 [532] (byte) sprites_irq::raster_next#1 ← (byte) sprites_irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 - dex - //SEG1128 [533] phi from sprites_irq::@12 sprites_irq::@5 to sprites_irq::@6 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6] - //SEG1129 [533] phi (byte) sprites_irq::raster_next#2 = (byte) sprites_irq::raster_next#1 [phi:sprites_irq::@12/sprites_irq::@5->sprites_irq::@6#0] -- register_copy - //SEG1130 sprites_irq::@6 - b6: - //SEG1131 [534] *((const byte*) RASTER#0) ← (byte) sprites_irq::raster_next#2 -- _deref_pbuc1=vbuxx - stx RASTER - //SEG1132 [535] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1163 [552] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] + //SEG1164 [552] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy + //SEG1165 sprites_irq::@7 + b7: + //SEG1166 [553] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + lda irq_raster_next + sta RASTER + //SEG1167 [554] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG1133 sprites_irq::@return - //SEG1134 [536] return - exit interrupt(HARDWARE_CLOBBER) + //SEG1168 sprites_irq::@return + //SEG1169 [555] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG1135 sprites_irq::@4 - b4: - //SEG1136 [537] (byte) irq_cnt#14 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG1170 sprites_irq::@5 + b5: + //SEG1171 [556] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG1137 [538] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG1172 [557] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG1138 [539] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 - lda #$32 + //SEG1173 [558] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_sprite_ypos sta irq_sprite_ypos - //SEG1139 [540] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] - //SEG1140 sprites_irq::toSpritePtr2 - //SEG1141 sprites_irq::@13 - //SEG1142 [541] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG1174 [559] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + lda #3 + clc + adc irq_sprite_ptr + sta irq_sprite_ptr + jmp b7 + //SEG1175 sprites_irq::@4 + b4: + //SEG1176 [560] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_raster_next + sta irq_raster_next + //SEG1177 [561] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + lda #SPRITES_FIRST_YPOS + sta irq_sprite_ypos + //SEG1178 [562] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + //SEG1179 sprites_irq::toSpritePtr2 + //SEG1180 sprites_irq::@15 + //SEG1181 [563] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr - jmp b5 - //SEG1143 sprites_irq::@2 + jmp b7 + //SEG1182 sprites_irq::@2 b2: - //SEG1144 [542] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1183 [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1 - //SEG1145 [543] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG1184 [565] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx txa clc adc #1 - //SEG1146 [544] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG1185 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG1147 [545] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG1186 [567] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG1148 [546] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa + //SEG1187 [568] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG1149 [547] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + //SEG1188 [569] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 } @@ -23206,9 +24664,9 @@ sprites_irq: { PIECES_CHARS: .byte $64, $65, $a5, $65, $64, $64, $a5 PIECES_START_X: .byte 4, 4, 4, 4, 4, 4, 4 PIECES_START_Y: .byte 1, 1, 1, 1, 1, 0, 1 + MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 SCORE_BASE_BCD: .dword 0, $40, $100, $300, $1200 score_add_bcd: .fill 4*5, 0 - MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 .align $80 screen_lines_1: .fill 2*PLAYFIELD_LINES, 0 .align $40 @@ -23236,11 +24694,14 @@ sprites_irq: { .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) + // Put the sprites into memory .for(var sy=0;sy<10;sy++) { + .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { + .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 diff --git a/src/test/ref/examples/tetris/tetris.sym b/src/test/ref/examples/tetris/tetris.sym index ed2a525ad..d84cf75fc 100644 --- a/src/test/ref/examples/tetris/tetris.sym +++ b/src/test/ref/examples/tetris/tetris.sym @@ -1,8 +1,8 @@ (label) @14 (label) @22 (label) @23 -(label) @36 (label) @37 +(label) @38 (label) @begin (label) @end (byte*) BGCOL @@ -72,7 +72,7 @@ (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) IRQ_RASTER_FIRST -(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (byte/signed byte/word/signed word/dword/signed dword) 49 +(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 19 (byte*) IRQ_STATUS (const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 (void()**) KERNEL_IRQ @@ -253,6 +253,8 @@ (const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277 (byte*) SPRITES_EXPAND_Y (const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271 +(byte) SPRITES_FIRST_YPOS +(const byte) SPRITES_FIRST_YPOS#0 SPRITES_FIRST_YPOS = (byte/signed byte/word/signed word/dword/signed dword) 49 (byte*) SPRITES_MC (const byte*) SPRITES_MC#0 SPRITES_MC = ((byte*))(word/dword/signed dword) 53276 (byte*) SPRITES_MC1 @@ -282,99 +284,112 @@ (byte) WHITE (byte) YELLOW (byte) current_movedown_counter -(byte) current_movedown_counter#1 current_movedown_counter zp ZP_BYTE:4 0.5333333333333333 -(byte) current_movedown_counter#10 current_movedown_counter zp ZP_BYTE:4 3.931034482758621 -(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:4 10.363636363636363 +(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:4 0.5333333333333333 +(byte) current_movedown_counter#14 current_movedown_counter zp ZP_BYTE:4 0.35135135135135137 +(byte) current_movedown_counter#16 current_movedown_counter zp ZP_BYTE:4 0.9285714285714286 (byte) current_movedown_fast (const byte) current_movedown_fast#0 current_movedown_fast = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) current_movedown_slow (byte) current_movedown_slow#1 current_movedown_slow zp ZP_BYTE:24 0.2222222222222222 -(byte) current_movedown_slow#12 current_movedown_slow zp ZP_BYTE:24 2.296296296296297 -(byte) current_movedown_slow#17 current_movedown_slow zp ZP_BYTE:24 4.0 -(byte) current_movedown_slow#19 current_movedown_slow zp ZP_BYTE:24 1.3333333333333333 -(byte) current_movedown_slow#31 current_movedown_slow zp ZP_BYTE:24 6.0 -(byte) current_movedown_slow#60 current_movedown_slow zp ZP_BYTE:24 0.26666666666666666 -(byte) current_movedown_slow#8 current_movedown_slow zp ZP_BYTE:24 4.0 +(byte) current_movedown_slow#10 current_movedown_slow zp ZP_BYTE:24 4.0 +(byte) current_movedown_slow#14 current_movedown_slow zp ZP_BYTE:24 0.40350877192982454 +(byte) current_movedown_slow#21 current_movedown_slow zp ZP_BYTE:24 0.40540540540540543 +(byte) current_movedown_slow#23 current_movedown_slow zp ZP_BYTE:24 1.3333333333333333 +(byte) current_movedown_slow#38 current_movedown_slow zp ZP_BYTE:24 6.0 +(byte) current_movedown_slow#68 current_movedown_slow zp ZP_BYTE:24 0.26666666666666666 (byte) current_orientation -(byte) current_orientation#10 current_orientation zp ZP_BYTE:28 3.371428571428571 -(byte) current_orientation#14 current_orientation zp ZP_BYTE:28 0.32653061224489793 -(byte) current_orientation#19 current_orientation zp ZP_BYTE:28 6.210526315789475 -(byte) current_orientation#29 current_orientation zp ZP_BYTE:28 4.0 -(byte) current_orientation#4 current_orientation zp ZP_BYTE:28 3.0 +(byte) current_orientation#12 current_orientation zp ZP_BYTE:29 0.4473684210526316 +(byte) current_orientation#16 current_orientation zp ZP_BYTE:29 0.75 +(byte) current_orientation#19 current_orientation zp ZP_BYTE:29 0.36 +(byte) current_orientation#24 current_orientation zp ZP_BYTE:29 1.3333333333333333 +(byte) current_orientation#36 current_orientation zp ZP_BYTE:29 4.0 +(byte) current_orientation#7 current_orientation zp ZP_BYTE:29 3.0 (byte*) current_piece -(byte*) current_piece#10 current_piece zp ZP_WORD:26 1.771428571428571 -(byte*) current_piece#12 current_piece#12 zp ZP_WORD:5 10.0 -(byte*) current_piece#16 current_piece zp ZP_WORD:26 3.428571428571428 -(byte*) current_piece#20 current_piece zp ZP_WORD:26 6.0 -(byte*~) current_piece#73 current_piece zp ZP_WORD:26 4.0 -(byte*~) current_piece#76 current_piece#76 zp ZP_WORD:5 4.0 -(byte*~) current_piece#77 current_piece#77 zp ZP_WORD:5 4.0 -(byte*~) current_piece#78 current_piece#78 zp ZP_WORD:5 4.0 -(byte*~) current_piece#79 current_piece#79 zp ZP_WORD:5 4.0 -(byte*~) current_piece#80 current_piece zp ZP_WORD:26 4.0 +(byte*) current_piece#14 current_piece zp ZP_WORD:26 0.2948717948717949 +(byte*) current_piece#16 current_piece#16 zp ZP_WORD:5 12.0 +(byte*) current_piece#20 current_piece zp ZP_WORD:26 0.5 +(byte*) current_piece#27 current_piece zp ZP_WORD:26 6.0 +(byte*~) current_piece#88 current_piece zp ZP_WORD:26 4.0 +(byte*~) current_piece#89 current_piece#89 zp ZP_WORD:5 4.0 +(byte*~) current_piece#90 current_piece#90 zp ZP_WORD:5 4.0 +(byte*~) current_piece#91 current_piece#91 zp ZP_WORD:5 4.0 +(byte*~) current_piece#92 current_piece#92 zp ZP_WORD:5 4.0 +(byte*~) current_piece#93 current_piece#93 zp ZP_WORD:5 4.0 +(byte*~) current_piece#94 current_piece zp ZP_WORD:26 4.0 (byte) current_piece_char -(byte) current_piece_char#1 current_piece_char zp ZP_BYTE:32 4.379310344827585 -(byte) current_piece_char#12 current_piece_char zp ZP_BYTE:32 0.6153846153846154 -(byte) current_piece_char#15 current_piece_char zp ZP_BYTE:32 194.59615384615384 -(byte) current_piece_char#20 current_piece_char zp ZP_BYTE:32 6.0 -(byte) current_piece_char#64 reg byte x 46.09090909090909 -(byte~) current_piece_char#90 reg byte x 4.0 -(byte~) current_piece_char#91 reg byte x 22.0 +(byte~) current_piece_char#103 current_piece_char#103 zp ZP_BYTE:11 4.0 +(byte~) current_piece_char#104 current_piece_char#104 zp ZP_BYTE:11 22.0 +(byte) current_piece_char#14 current_piece_char zp ZP_BYTE:28 0.7027027027027027 +(byte) current_piece_char#16 current_piece_char zp ZP_BYTE:28 0.32 +(byte) current_piece_char#19 current_piece_char zp ZP_BYTE:28 18.509090909090908 +(byte) current_piece_char#27 current_piece_char zp ZP_BYTE:28 6.0 +(byte) current_piece_char#75 current_piece_char#75 zp ZP_BYTE:11 46.09090909090909 (byte*) current_piece_gfx -(byte*) current_piece_gfx#1 current_piece_gfx zp ZP_WORD:29 0.2962962962962963 -(byte*~) current_piece_gfx#102 current_piece_gfx#102 zp ZP_WORD:5 2.0 -(byte*~) current_piece_gfx#103 current_piece_gfx#103 zp ZP_WORD:5 11.0 -(byte*) current_piece_gfx#14 current_piece_gfx zp ZP_WORD:29 6.789473684210528 -(byte*) current_piece_gfx#16 current_piece_gfx zp ZP_WORD:29 0.5 -(byte*) current_piece_gfx#20 current_piece_gfx zp ZP_WORD:29 194.59615384615384 -(byte*) current_piece_gfx#26 current_piece_gfx zp ZP_WORD:29 6.0 -(byte*) current_piece_gfx#3 current_piece_gfx zp ZP_WORD:29 4.0 -(byte*) current_piece_gfx#53 current_piece_gfx#53 zp ZP_WORD:5 46.09090909090909 +(byte*) current_piece_gfx#105 current_piece_gfx zp ZP_WORD:30 18.509090909090908 +(byte*~) current_piece_gfx#115 current_piece_gfx#115 zp ZP_WORD:5 2.0 +(byte*~) current_piece_gfx#116 current_piece_gfx#116 zp ZP_WORD:5 11.0 +(byte*) current_piece_gfx#16 current_piece_gfx zp ZP_WORD:30 1.3000000000000003 +(byte*) current_piece_gfx#18 current_piece_gfx zp ZP_WORD:30 0.3571428571428571 +(byte*) current_piece_gfx#19 current_piece_gfx zp ZP_WORD:30 1.3333333333333333 +(byte*) current_piece_gfx#21 current_piece_gfx zp ZP_WORD:30 0.3333333333333333 +(byte*) current_piece_gfx#33 current_piece_gfx zp ZP_WORD:30 6.0 +(byte*) current_piece_gfx#6 current_piece_gfx zp ZP_WORD:30 4.0 +(byte*) current_piece_gfx#62 current_piece_gfx#62 zp ZP_WORD:5 46.09090909090909 (byte) current_xpos -(byte) current_xpos#1 current_xpos zp ZP_BYTE:31 0.72 -(byte) current_xpos#10 current_xpos zp ZP_BYTE:31 21.557692307692307 -(byte~) current_xpos#112 current_xpos#112 zp ZP_BYTE:10 1.3333333333333333 -(byte~) current_xpos#113 current_xpos#113 zp ZP_BYTE:10 7.333333333333333 -(byte) current_xpos#19 current_xpos zp ZP_BYTE:31 3.139534883720931 -(byte) current_xpos#2 current_xpos zp ZP_BYTE:31 4.0 -(byte) current_xpos#23 current_xpos zp ZP_BYTE:31 0.5333333333333333 -(byte) current_xpos#33 current_xpos zp ZP_BYTE:31 6.0 -(byte) current_xpos#4 current_xpos zp ZP_BYTE:31 4.0 -(byte) current_xpos#47 current_xpos#47 zp ZP_BYTE:10 5.181818181818182 +(byte) current_xpos#115 current_xpos zp ZP_BYTE:32 2.181818181818182 +(byte~) current_xpos#125 current_xpos#125 zp ZP_BYTE:10 1.3333333333333333 +(byte~) current_xpos#126 current_xpos#126 zp ZP_BYTE:10 7.333333333333333 +(byte) current_xpos#17 current_xpos zp ZP_BYTE:32 1.3000000000000003 +(byte) current_xpos#20 current_xpos zp ZP_BYTE:32 0.7692307692307692 +(byte) current_xpos#24 current_xpos zp ZP_BYTE:32 0.4666666666666666 +(byte) current_xpos#28 current_xpos zp ZP_BYTE:32 0.43478260869565216 +(byte) current_xpos#41 current_xpos zp ZP_BYTE:32 6.0 +(byte) current_xpos#5 current_xpos zp ZP_BYTE:32 4.0 +(byte) current_xpos#57 current_xpos#57 zp ZP_BYTE:10 5.181818181818182 +(byte) current_xpos#7 current_xpos zp ZP_BYTE:32 4.0 (byte) current_ypos -(byte) current_ypos#0 current_ypos zp ZP_BYTE:16 4.0 -(byte) current_ypos#13 current_ypos zp ZP_BYTE:16 1.8999999999999995 -(byte) current_ypos#18 current_ypos zp ZP_BYTE:16 0.5714285714285714 -(byte) current_ypos#21 current_ypos zp ZP_BYTE:16 3.485714285714285 -(byte) current_ypos#29 current_ypos zp ZP_BYTE:16 6.0 -(byte~) current_ypos#86 reg byte y 1.0 -(byte~) current_ypos#87 reg byte y 4.4 -(byte) current_ypos#9 reg byte y 15.0 +(byte~) current_ypos#100 reg byte x 4.4 +(byte) current_ypos#11 reg byte x 15.0 +(byte) current_ypos#17 current_ypos zp ZP_BYTE:16 0.41025641025641035 +(byte) current_ypos#2 current_ypos zp ZP_BYTE:16 4.0 +(byte) current_ypos#22 current_ypos zp ZP_BYTE:16 0.4545454545454546 +(byte) current_ypos#25 current_ypos zp ZP_BYTE:16 0.5526315789473684 +(byte) current_ypos#36 current_ypos zp ZP_BYTE:16 6.0 +(byte~) current_ypos#99 reg byte x 1.0 +(byte) game_over +(byte) game_over#14 game_over zp ZP_BYTE:33 0.4594594594594595 +(byte) game_over#15 game_over zp ZP_BYTE:33 0.46153846153846156 +(byte) game_over#19 game_over zp ZP_BYTE:33 0.6382978723404255 +(byte) game_over#26 game_over zp ZP_BYTE:33 6.0 +(byte) game_over#69 game_over zp ZP_BYTE:33 0.19047619047619047 (byte) irq_cnt -(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:38 0.19047619047619047 -(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:38 4.0 -(byte) irq_cnt#14 irq_cnt zp ZP_BYTE:38 20.0 +(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:39 0.17391304347826086 +(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:39 3.0 +(byte) irq_cnt#2 irq_cnt zp ZP_BYTE:39 20.0 (byte) irq_raster_next -(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:34 0.17391304347826086 -(byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:34 1.0 -(byte) irq_raster_next#13 irq_raster_next zp ZP_BYTE:34 6.0 -(byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:34 1.3333333333333333 +(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:35 0.3076923076923077 +(byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:35 1.0 +(byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:35 1.3333333333333333 +(byte) irq_raster_next#3 irq_raster_next zp ZP_BYTE:35 1.3333333333333333 +(byte) irq_raster_next#4 irq_raster_next zp ZP_BYTE:35 8.0 (byte) irq_sprite_ptr -(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:37 0.24 -(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:37 20.0 -(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:37 20.0 +(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:38 0.25806451612903225 +(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:38 20.0 +(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:38 20.0 +(byte) irq_sprite_ptr#3 irq_sprite_ptr zp ZP_BYTE:38 20.0 (byte) irq_sprite_ypos -(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:36 0.7083333333333334 -(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:36 20.0 -(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:36 20.0 +(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:37 0.27586206896551724 +(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:37 20.0 +(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:37 20.0 +(byte) irq_sprite_ypos#3 irq_sprite_ypos zp ZP_BYTE:37 20.0 (byte[]) keyboard_char_keycodes (byte()) keyboard_event_get() (label) keyboard_event_get::@3 (label) keyboard_event_get::@return (byte) keyboard_event_get::return -(byte) keyboard_event_get::return#1 reg byte a 4.0 -(byte) keyboard_event_get::return#2 reg byte a 34.33333333333333 -(byte) keyboard_event_get::return#3 reg byte a 202.0 +(byte) keyboard_event_get::return#1 reg byte x 4.0 +(byte) keyboard_event_get::return#2 reg byte x 4.333333333333333 +(byte) keyboard_event_get::return#3 reg byte x 22.0 (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode) (byte~) keyboard_event_pressed::$0 reg byte a 4.0 (byte~) keyboard_event_pressed::$1 reg byte a 4.0 @@ -391,13 +406,13 @@ (byte) keyboard_event_pressed::row_bits (byte) keyboard_event_pressed::row_bits#0 row_bits zp ZP_BYTE:10 2.0 (void()) keyboard_event_scan() -(byte/word/dword~) keyboard_event_scan::$11 reg byte a 20002.0 +(byte/word/dword~) keyboard_event_scan::$11 reg byte a 2002.0 (byte~) keyboard_event_scan::$14 reg byte a 4.0 (byte~) keyboard_event_scan::$18 reg byte a 4.0 (byte~) keyboard_event_scan::$22 reg byte a 4.0 (byte~) keyboard_event_scan::$26 reg byte a 4.0 -(byte~) keyboard_event_scan::$3 reg byte a 20002.0 -(byte~) keyboard_event_scan::$4 reg byte a 20002.0 +(byte~) keyboard_event_scan::$3 reg byte a 2002.0 +(byte~) keyboard_event_scan::$4 reg byte a 2002.0 (label) keyboard_event_scan::@1 (label) keyboard_event_scan::@10 (label) keyboard_event_scan::@11 @@ -423,43 +438,43 @@ (label) keyboard_event_scan::@9 (label) keyboard_event_scan::@return (byte) keyboard_event_scan::col -(byte) keyboard_event_scan::col#1 reg byte x 15001.5 -(byte) keyboard_event_scan::col#2 reg byte x 2857.4285714285716 +(byte) keyboard_event_scan::col#1 reg byte x 1501.5 +(byte) keyboard_event_scan::col#2 reg byte x 286.0 (byte) keyboard_event_scan::event_type -(byte) keyboard_event_scan::event_type#0 reg byte a 20002.0 +(byte) keyboard_event_scan::event_type#0 reg byte a 2002.0 (byte) keyboard_event_scan::keycode -(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:10 2002.0 -(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:10 3154.230769230769 -(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:10 500.5 -(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:10 1001.0 -(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:10 5250.75 +(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:10 202.0 +(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:10 315.7692307692308 +(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:10 50.5 +(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:10 101.0 +(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:10 525.75 (byte) keyboard_event_scan::row -(byte) keyboard_event_scan::row#1 row zp ZP_BYTE:9 1501.5 -(byte) keyboard_event_scan::row#2 row zp ZP_BYTE:9 600.24 +(byte) keyboard_event_scan::row#1 row zp ZP_BYTE:9 151.5 +(byte) keyboard_event_scan::row#2 row zp ZP_BYTE:9 60.24 (byte) keyboard_event_scan::row_scan -(byte) keyboard_event_scan::row_scan#0 row_scan zp ZP_BYTE:11 1278.0555555555554 +(byte) keyboard_event_scan::row_scan#0 row_scan zp ZP_BYTE:11 128.05555555555557 (byte[8]) keyboard_events (const byte[8]) keyboard_events#0 keyboard_events = { fill( 8, 0) } (byte) keyboard_events_size -(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:33 20002.0 -(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:33 8100.9000000000015 -(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:33 97.06451612903226 -(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:33 3.515151515151515 -(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:33 18.999999999999996 -(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:33 20002.0 -(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:33 429.2857142857143 -(byte) keyboard_events_size#30 keyboard_events_size zp ZP_BYTE:33 10201.2 -(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:33 3.0 +(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:34 2002.0 +(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:34 810.9000000000001 +(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:34 9.967741935483872 +(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:34 0.6 +(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:34 1.8571428571428572 +(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:34 2002.0 +(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:34 43.57142857142858 +(byte) keyboard_events_size#30 keyboard_events_size zp ZP_BYTE:34 1021.2 +(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:34 3.0 (byte[8]) keyboard_matrix_col_bitmask (const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 334.33333333333337 -(byte) keyboard_matrix_read::return#2 reg byte a 2002.0 +(byte) keyboard_matrix_read::return#0 reg byte a 34.33333333333333 +(byte) keyboard_matrix_read::return#2 reg byte a 202.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte x 1003.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 103.0 (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte) keyboard_modifiers @@ -472,40 +487,31 @@ (byte[8]) keyboard_scan_values (const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) } (byte) level -(byte) level#12 level zp ZP_BYTE:23 4.0 -(byte) level#14 level zp ZP_BYTE:23 1.3333333333333333 -(byte) level#16 level zp ZP_BYTE:23 0.4444444444444444 -(byte) level#19 level zp ZP_BYTE:23 2.2181818181818174 -(byte) level#24 level zp ZP_BYTE:23 6.0 +(byte) level#10 level zp ZP_BYTE:23 0.36206896551724144 +(byte) level#16 level zp ZP_BYTE:23 0.40540540540540543 +(byte) level#18 level zp ZP_BYTE:23 1.3333333333333333 +(byte) level#20 level zp ZP_BYTE:23 0.4444444444444444 +(byte) level#31 level zp ZP_BYTE:23 6.0 (byte) level_bcd -(byte) level_bcd#13 level_bcd zp ZP_BYTE:25 2.313725490196078 -(byte) level_bcd#15 level_bcd zp ZP_BYTE:25 1.3333333333333333 -(byte) level_bcd#17 level_bcd zp ZP_BYTE:25 2.6666666666666665 -(byte) level_bcd#20 level_bcd zp ZP_BYTE:25 2.0677966101694913 -(byte) level_bcd#25 level_bcd zp ZP_BYTE:25 6.0 -(byte) level_bcd#55 level_bcd zp ZP_BYTE:25 0.6000000000000001 -(byte) level_bcd#6 level_bcd zp ZP_BYTE:25 4.0 +(byte) level_bcd#11 level_bcd zp ZP_BYTE:25 0.33870967741935476 +(byte) level_bcd#17 level_bcd zp ZP_BYTE:25 0.288135593220339 +(byte) level_bcd#19 level_bcd zp ZP_BYTE:25 1.3333333333333333 +(byte) level_bcd#21 level_bcd zp ZP_BYTE:25 2.6666666666666665 +(byte) level_bcd#32 level_bcd zp ZP_BYTE:25 6.0 +(byte) level_bcd#63 level_bcd zp ZP_BYTE:25 0.6000000000000001 +(byte) level_bcd#8 level_bcd zp ZP_BYTE:25 4.0 (word) lines_bcd -(word) lines_bcd#11 lines_bcd zp ZP_WORD:17 2.352941176470588 -(word) lines_bcd#13 lines_bcd zp ZP_WORD:17 1.3333333333333333 -(word) lines_bcd#15 lines_bcd zp ZP_WORD:17 2.5416666666666656 -(word) lines_bcd#20 lines_bcd zp ZP_WORD:17 6.0 -(word) lines_bcd#23 lines_bcd zp ZP_WORD:17 1.0 +(word) lines_bcd#15 lines_bcd zp ZP_WORD:17 0.3220338983050848 +(word) lines_bcd#17 lines_bcd zp ZP_WORD:17 1.3333333333333333 +(word) lines_bcd#19 lines_bcd zp ZP_WORD:17 0.4117647058823528 +(word) lines_bcd#27 lines_bcd zp ZP_WORD:17 6.0 +(word) lines_bcd#30 lines_bcd zp ZP_WORD:17 1.0 (void()) main() -(byte~) main::$12 reg byte a 202.0 -(byte~) main::$13 reg byte a 202.0 -(byte~) main::$14 reg byte a 202.0 +(byte~) main::$9 reg byte a 22.0 (label) main::@1 -(label) main::@13 -(label) main::@15 -(label) main::@16 -(label) main::@17 -(label) main::@18 -(label) main::@19 -(label) main::@20 -(label) main::@21 +(label) main::@11 +(label) main::@12 (label) main::@23 -(label) main::@24 (label) main::@25 (label) main::@26 (label) main::@27 @@ -513,16 +519,23 @@ (label) main::@29 (label) main::@30 (label) main::@31 +(label) main::@33 +(label) main::@34 +(label) main::@35 +(label) main::@36 +(label) main::@37 +(label) main::@38 +(label) main::@39 (label) main::@4 (label) main::@6 +(label) main::@7 +(label) main::@9 (byte) main::key_event -(byte) main::key_event#0 key_event zp ZP_BYTE:15 36.72727272727273 +(byte) main::key_event#0 reg byte x 11.0 (byte) main::render -(byte) main::render#1 render zp ZP_BYTE:39 40.4 -(byte) main::render#2 render zp ZP_BYTE:39 40.4 -(byte) main::render#3 reg byte a 202.0 +(byte) main::render#1 reg byte a 22.0 (byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) -(byte~) play_collision::$7 reg byte a 20002.0 +(byte~) play_collision::$7 reg byte a 2002.0 (label) play_collision::@1 (label) play_collision::@17 (label) play_collision::@2 @@ -535,53 +548,56 @@ (label) play_collision::@8 (label) play_collision::@return (byte) play_collision::c -(byte) play_collision::c#1 reg byte x 10001.0 -(byte) play_collision::c#2 reg byte x 2222.4444444444443 +(byte) play_collision::c#1 reg byte x 1001.0 +(byte) play_collision::c#2 reg byte x 222.44444444444446 (byte) play_collision::col -(byte) play_collision::col#1 col zp ZP_BYTE:14 5000.5 -(byte) play_collision::col#2 col zp ZP_BYTE:14 6375.75 -(byte~) play_collision::col#9 col zp ZP_BYTE:14 2002.0 +(byte) play_collision::col#1 col zp ZP_BYTE:15 500.5 +(byte) play_collision::col#2 col zp ZP_BYTE:15 638.25 +(byte~) play_collision::col#9 col zp ZP_BYTE:15 202.0 (byte) play_collision::i -(byte) play_collision::i#1 i zp ZP_BYTE:40 1615.6153846153845 -(byte~) play_collision::i#11 i#11 zp ZP_BYTE:13 2002.0 -(byte~) play_collision::i#13 i#13 zp ZP_BYTE:13 20002.0 -(byte) play_collision::i#2 i#2 zp ZP_BYTE:13 15502.0 -(byte) play_collision::i#3 i#3 zp ZP_BYTE:13 667.3333333333334 +(byte) play_collision::i#1 i zp ZP_BYTE:41 161.76923076923077 +(byte~) play_collision::i#11 i#11 zp ZP_BYTE:14 202.0 +(byte~) play_collision::i#13 i#13 zp ZP_BYTE:14 2002.0 +(byte) play_collision::i#2 i#2 zp ZP_BYTE:14 1552.0 +(byte) play_collision::i#3 i#3 zp ZP_BYTE:14 67.33333333333333 (byte) play_collision::l -(byte) play_collision::l#1 l zp ZP_BYTE:12 1001.0 -(byte) play_collision::l#6 l zp ZP_BYTE:12 125.125 +(byte) play_collision::l#1 l zp ZP_BYTE:13 101.0 +(byte) play_collision::l#6 l zp ZP_BYTE:13 12.625 (byte) play_collision::orientation (byte) play_collision::orientation#0 reg byte x 2.0 (byte) play_collision::orientation#1 reg byte x 2.0 (byte) play_collision::orientation#2 reg byte x 2.0 (byte) play_collision::orientation#3 reg byte x 2.0 -(byte) play_collision::orientation#4 reg byte x 10.0 +(byte) play_collision::orientation#5 reg byte x 10.0 (byte*) play_collision::piece_gfx -(byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:5 476.3333333333333 +(byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:5 47.76190476190476 (byte*) play_collision::playfield_line -(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:7 785.8571428571429 +(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:7 78.71428571428571 (byte) play_collision::return (byte) play_collision::return#0 reg byte a 4.0 (byte) play_collision::return#1 reg byte a 4.0 -(byte) play_collision::return#12 reg byte a 4.0 +(byte) play_collision::return#10 reg byte a 4.0 (byte) play_collision::return#13 reg byte a 4.0 -(byte) play_collision::return#14 reg byte a 1.3333333333333333 +(byte) play_collision::return#14 reg byte a 4.0 +(byte) play_collision::return#15 reg byte a 1.4285714285714284 (byte) play_collision::xpos -(byte) play_collision::xpos#0 xpos zp ZP_BYTE:10 1.3333333333333333 -(byte) play_collision::xpos#1 xpos zp ZP_BYTE:10 1.0 -(byte) play_collision::xpos#2 xpos zp ZP_BYTE:10 1.0 -(byte) play_collision::xpos#3 xpos zp ZP_BYTE:10 1.0 -(byte) play_collision::xpos#5 xpos zp ZP_BYTE:10 45.86363636363637 +(byte) play_collision::xpos#0 xpos zp ZP_BYTE:12 1.3333333333333333 +(byte) play_collision::xpos#1 xpos zp ZP_BYTE:12 1.0 +(byte) play_collision::xpos#2 xpos zp ZP_BYTE:12 1.0 +(byte) play_collision::xpos#3 xpos zp ZP_BYTE:12 1.0 +(byte) play_collision::xpos#4 xpos zp ZP_BYTE:12 1.3333333333333333 +(byte) play_collision::xpos#6 xpos zp ZP_BYTE:12 5.045454545454545 (byte) play_collision::ypos -(byte) play_collision::ypos#0 reg byte y 1.0 -(byte) play_collision::ypos#1 reg byte y 1.3333333333333333 -(byte) play_collision::ypos#2 reg byte y 1.3333333333333333 -(byte) play_collision::ypos#3 reg byte y 1.3333333333333333 -(byte) play_collision::ypos#4 reg byte y 5.0 +(byte) play_collision::ypos#0 ypos zp ZP_BYTE:11 1.0 +(byte) play_collision::ypos#1 ypos zp ZP_BYTE:11 1.3333333333333333 +(byte) play_collision::ypos#2 ypos zp ZP_BYTE:11 1.3333333333333333 +(byte) play_collision::ypos#3 ypos zp ZP_BYTE:11 1.3333333333333333 +(byte) play_collision::ypos#4 ypos zp ZP_BYTE:11 2.0 +(byte) play_collision::ypos#5 ypos zp ZP_BYTE:11 6.0 (byte) play_collision::ypos2 (byte) play_collision::ypos2#0 ypos2 zp ZP_BYTE:11 4.0 -(byte) play_collision::ypos2#1 ypos2 zp ZP_BYTE:11 500.5 -(byte) play_collision::ypos2#2 ypos2 zp ZP_BYTE:11 867.0666666666667 +(byte) play_collision::ypos2#1 ypos2 zp ZP_BYTE:11 50.5 +(byte) play_collision::ypos2#2 ypos2 zp ZP_BYTE:11 87.06666666666668 (void()) play_increase_level() (byte~) play_increase_level::$1 reg byte a 4.0 (label) play_increase_level::@2 @@ -592,10 +608,10 @@ (label) play_increase_level::@8 (label) play_increase_level::@return (byte) play_increase_level::b -(byte) play_increase_level::b#1 reg byte x 1501.5 -(byte) play_increase_level::b#2 reg byte x 1001.0 +(byte) play_increase_level::b#1 reg byte x 151.5 +(byte) play_increase_level::b#2 reg byte x 101.0 (byte) play_increase_level::b4 -(byte) play_increase_level::b4#0 reg byte a 4004.0 +(byte) play_increase_level::b4#0 reg byte a 404.0 (void()) play_init() (byte~) play_init::$1 reg byte a 22.0 (label) play_init::@1 @@ -626,27 +642,27 @@ (label) play_lock_current::@8 (label) play_lock_current::@return (byte) play_lock_current::c -(byte) play_lock_current::c#1 reg byte x 10001.0 -(byte) play_lock_current::c#2 reg byte x 4000.4 +(byte) play_lock_current::c#1 reg byte x 1001.0 +(byte) play_lock_current::c#2 reg byte x 400.4 (byte) play_lock_current::col -(byte) play_lock_current::col#0 col zp ZP_BYTE:10 2002.0 -(byte) play_lock_current::col#1 col zp ZP_BYTE:10 5000.5 -(byte) play_lock_current::col#2 col zp ZP_BYTE:10 7751.0 +(byte) play_lock_current::col#0 col zp ZP_BYTE:10 202.0 +(byte) play_lock_current::col#1 col zp ZP_BYTE:10 500.5 +(byte) play_lock_current::col#2 col zp ZP_BYTE:10 776.0 (byte) play_lock_current::i -(byte) play_lock_current::i#1 i zp ZP_BYTE:11 2333.6666666666665 -(byte) play_lock_current::i#2 i#2 zp ZP_BYTE:9 15502.0 -(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:9 667.3333333333334 -(byte~) play_lock_current::i#7 i#7 zp ZP_BYTE:9 2002.0 -(byte~) play_lock_current::i#9 i#9 zp ZP_BYTE:9 20002.0 +(byte) play_lock_current::i#1 i zp ZP_BYTE:11 233.66666666666669 +(byte) play_lock_current::i#2 i#2 zp ZP_BYTE:9 1552.0 +(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:9 67.33333333333333 +(byte~) play_lock_current::i#7 i#7 zp ZP_BYTE:9 202.0 +(byte~) play_lock_current::i#9 i#9 zp ZP_BYTE:9 2002.0 (byte) play_lock_current::l -(byte) play_lock_current::l#1 l zp ZP_BYTE:4 1001.0 -(byte) play_lock_current::l#6 l zp ZP_BYTE:4 166.83333333333334 +(byte) play_lock_current::l#1 l zp ZP_BYTE:4 101.0 +(byte) play_lock_current::l#6 l zp ZP_BYTE:4 16.833333333333332 (byte*) play_lock_current::playfield_line -(byte*) play_lock_current::playfield_line#0 playfield_line zp ZP_WORD:5 1100.2 +(byte*) play_lock_current::playfield_line#0 playfield_line zp ZP_WORD:5 110.19999999999999 (byte) play_lock_current::ypos2 (byte) play_lock_current::ypos2#0 ypos2 zp ZP_BYTE:16 4.0 -(byte) play_lock_current::ypos2#1 ypos2 zp ZP_BYTE:16 500.5 -(byte) play_lock_current::ypos2#2 ypos2 zp ZP_BYTE:16 273.1818181818182 +(byte) play_lock_current::ypos2#1 ypos2 zp ZP_BYTE:16 50.5 +(byte) play_lock_current::ypos2#2 ypos2 zp ZP_BYTE:16 27.727272727272727 (byte()) play_move_down((byte) play_move_down::key_event) (byte~) play_move_down::$12 reg byte a 4.0 (byte~) play_move_down::$2 reg byte a 4.0 @@ -668,7 +684,7 @@ (label) play_move_down::@9 (label) play_move_down::@return (byte) play_move_down::key_event -(byte) play_move_down::key_event#0 reg byte a 51.5 +(byte) play_move_down::key_event#0 reg byte a 2.0 (byte) play_move_down::movedown (byte) play_move_down::movedown#10 reg byte x 1.0 (byte) play_move_down::movedown#2 reg byte x 4.0 @@ -678,8 +694,8 @@ (byte) play_move_down::removed (byte) play_move_down::removed#0 reg byte a 4.0 (byte) play_move_down::return -(byte) play_move_down::return#2 reg byte x 33.666666666666664 -(byte) play_move_down::return#3 reg byte a 202.0 +(byte) play_move_down::return#0 reg byte a 4.0 +(byte) play_move_down::return#3 reg byte x 0.6666666666666666 (byte()) play_move_leftright((byte) play_move_leftright::key_event) (byte~) play_move_leftright::$4 reg byte a 4.0 (byte~) play_move_leftright::$8 reg byte a 4.0 @@ -692,10 +708,10 @@ (label) play_move_leftright::@8 (label) play_move_leftright::@return (byte) play_move_leftright::key_event -(byte) play_move_leftright::key_event#0 reg byte a 52.5 +(byte) play_move_leftright::key_event#0 reg byte a 3.0 (byte) play_move_leftright::return -(byte) play_move_leftright::return#1 reg byte a 33.666666666666664 -(byte) play_move_leftright::return#4 reg byte a 202.0 +(byte) play_move_leftright::return#0 reg byte a 4.0 +(byte) play_move_leftright::return#2 reg byte a 0.6666666666666666 (byte()) play_move_rotate((byte) play_move_rotate::key_event) (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 reg byte a 4.0 (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 reg byte a 4.0 @@ -708,14 +724,32 @@ (label) play_move_rotate::@6 (label) play_move_rotate::@return (byte) play_move_rotate::key_event -(byte) play_move_rotate::key_event#0 reg byte a 52.5 +(byte) play_move_rotate::key_event#0 reg byte a 3.0 (byte) play_move_rotate::orientation -(byte) play_move_rotate::orientation#1 orientation zp ZP_BYTE:9 4.0 -(byte) play_move_rotate::orientation#2 orientation zp ZP_BYTE:9 4.0 -(byte) play_move_rotate::orientation#3 orientation zp ZP_BYTE:9 0.8888888888888888 +(byte) play_move_rotate::orientation#1 orientation zp ZP_BYTE:10 4.0 +(byte) play_move_rotate::orientation#2 orientation zp ZP_BYTE:10 4.0 +(byte) play_move_rotate::orientation#3 orientation zp ZP_BYTE:10 0.8888888888888888 (byte) play_move_rotate::return -(byte) play_move_rotate::return#1 reg byte a 33.666666666666664 -(byte) play_move_rotate::return#4 reg byte a 202.0 +(byte) play_move_rotate::return#0 reg byte a 4.0 +(byte) play_move_rotate::return#2 reg byte a 0.6666666666666666 +(byte()) play_movement((byte) play_movement::key_event) +(byte~) play_movement::$0 reg byte a 4.0 +(byte~) play_movement::$3 reg byte a 4.0 +(byte~) play_movement::$4 reg byte a 4.0 +(label) play_movement::@1 +(label) play_movement::@5 +(label) play_movement::@6 +(label) play_movement::@7 +(label) play_movement::@return +(byte) play_movement::key_event +(byte) play_movement::key_event#0 key_event zp ZP_BYTE:40 1.4166666666666667 +(byte) play_movement::render +(byte) play_movement::render#1 render zp ZP_BYTE:9 1.0 +(byte) play_movement::render#2 render zp ZP_BYTE:9 0.8 +(byte) play_movement::return +(byte) play_movement::return#0 return zp ZP_BYTE:9 4.0 +(byte) play_movement::return#2 return zp ZP_BYTE:9 5.0 +(byte) play_movement::return#3 reg byte a 22.0 (byte()) play_remove_lines() (label) play_remove_lines::@1 (label) play_remove_lines::@10 @@ -728,45 +762,48 @@ (label) play_remove_lines::@9 (label) play_remove_lines::@return (byte) play_remove_lines::c -(byte) play_remove_lines::c#0 c zp ZP_BYTE:12 6000.6 +(byte) play_remove_lines::c#0 c zp ZP_BYTE:12 600.5999999999999 (byte) play_remove_lines::full -(byte) play_remove_lines::full#2 full zp ZP_BYTE:11 4200.6 -(byte) play_remove_lines::full#4 full zp ZP_BYTE:11 4000.4 +(byte) play_remove_lines::full#2 full zp ZP_BYTE:11 420.59999999999997 +(byte) play_remove_lines::full#4 full zp ZP_BYTE:11 400.4 (byte) play_remove_lines::r -(byte) play_remove_lines::r#1 reg byte y 1500.2142857142858 -(byte) play_remove_lines::r#2 reg byte y 15502.0 -(byte) play_remove_lines::r#3 reg byte y 2002.0 +(byte) play_remove_lines::r#1 reg byte y 150.21428571428572 +(byte) play_remove_lines::r#2 reg byte y 1552.0 +(byte) play_remove_lines::r#3 reg byte y 202.0 (byte) play_remove_lines::removed -(byte) play_remove_lines::removed#1 removed zp ZP_BYTE:9 2002.0 -(byte) play_remove_lines::removed#11 removed zp ZP_BYTE:9 231.0 -(byte) play_remove_lines::removed#7 removed zp ZP_BYTE:9 333.8888888888889 +(byte) play_remove_lines::removed#1 removed zp ZP_BYTE:9 202.0 +(byte) play_remove_lines::removed#11 removed zp ZP_BYTE:9 23.307692307692307 +(byte) play_remove_lines::removed#7 removed zp ZP_BYTE:9 33.888888888888886 (byte) play_remove_lines::return (byte) play_remove_lines::return#0 reg byte a 4.0 (byte) play_remove_lines::w -(byte) play_remove_lines::w#1 reg byte x 5501.0 -(byte) play_remove_lines::w#11 reg byte x 1334.6666666666667 -(byte) play_remove_lines::w#12 reg byte x 2002.0 -(byte) play_remove_lines::w#2 reg byte x 1001.0 -(byte) play_remove_lines::w#3 reg byte x 2002.0 -(byte) play_remove_lines::w#4 reg byte x 4429.142857142857 -(byte) play_remove_lines::w#6 reg byte x 1668.3333333333335 +(byte) play_remove_lines::w#1 reg byte x 551.0 +(byte) play_remove_lines::w#11 reg byte x 134.66666666666666 +(byte) play_remove_lines::w#12 reg byte x 202.0 +(byte) play_remove_lines::w#2 reg byte x 101.0 +(byte) play_remove_lines::w#3 reg byte x 202.0 +(byte) play_remove_lines::w#4 reg byte x 443.42857142857144 +(byte) play_remove_lines::w#6 reg byte x 168.33333333333331 (byte) play_remove_lines::x -(byte) play_remove_lines::x#1 x zp ZP_BYTE:10 15001.5 -(byte) play_remove_lines::x#2 x zp ZP_BYTE:10 2500.25 +(byte) play_remove_lines::x#1 x zp ZP_BYTE:10 1501.5 +(byte) play_remove_lines::x#2 x zp ZP_BYTE:10 250.25 (byte) play_remove_lines::y -(byte) play_remove_lines::y#1 y zp ZP_BYTE:4 1501.5 -(byte) play_remove_lines::y#8 y zp ZP_BYTE:4 133.46666666666667 +(byte) play_remove_lines::y#1 y zp ZP_BYTE:4 151.5 +(byte) play_remove_lines::y#8 y zp ZP_BYTE:4 13.466666666666667 (void()) play_spawn_current() -(byte~) play_spawn_current::$1 reg byte a 2002.0 -(byte~) play_spawn_current::$3 $3 zp ZP_BYTE:4 0.13333333333333333 +(byte~) play_spawn_current::$1 reg byte a 202.0 +(byte~) play_spawn_current::$3 $3 zp ZP_BYTE:4 0.08333333333333333 +(byte~) play_spawn_current::$5 reg byte a 4.0 (label) play_spawn_current::@1 +(label) play_spawn_current::@10 +(label) play_spawn_current::@11 (label) play_spawn_current::@2 (label) play_spawn_current::@3 -(label) play_spawn_current::@7 +(label) play_spawn_current::@9 (label) play_spawn_current::@return (byte) play_spawn_current::piece_idx -(byte) play_spawn_current::piece_idx#1 reg byte x 2002.0 -(byte) play_spawn_current::piece_idx#2 reg byte x 334.99999999999994 +(byte) play_spawn_current::piece_idx#1 reg byte x 202.0 +(byte) play_spawn_current::piece_idx#2 reg byte x 35.00000000000001 (void()) play_update_score((byte) play_update_score::removed) (byte~) play_update_score::$2 reg byte a 4.0 (byte~) play_update_score::$4 reg byte a 4.0 @@ -775,7 +812,7 @@ (label) play_update_score::@4 (label) play_update_score::@return (dword) play_update_score::add_bcd -(dword) play_update_score::add_bcd#0 add_bcd zp ZP_DWORD:41 1.3333333333333333 +(dword) play_update_score::add_bcd#0 add_bcd zp ZP_DWORD:42 1.3333333333333333 (byte) play_update_score::lines_after (byte) play_update_score::lines_after#0 reg byte a 4.0 (byte) play_update_score::lines_before @@ -797,7 +834,7 @@ (label) render_bcd::@2 (label) render_bcd::@return (byte) render_bcd::ZERO_CHAR -(const byte) render_bcd::ZERO_CHAR#0 ZERO_CHAR = (byte/signed byte/word/signed word/dword/signed dword) 51 +(const byte) render_bcd::ZERO_CHAR#0 ZERO_CHAR = (byte/signed byte/word/signed word/dword/signed dword) 53 (byte) render_bcd::bcd (byte) render_bcd::bcd#0 reg byte x 4.0 (byte) render_bcd::bcd#1 reg byte x 4.0 @@ -864,29 +901,29 @@ (label) render_moving::@9 (label) render_moving::@return (byte) render_moving::c -(byte) render_moving::c#1 c zp ZP_BYTE:15 1501.5 -(byte) render_moving::c#2 c zp ZP_BYTE:15 286.0 +(byte) render_moving::c#1 reg byte x 1501.5 +(byte) render_moving::c#2 reg byte x 286.0 (byte) render_moving::current_cell (byte) render_moving::current_cell#0 reg byte a 1001.0 (byte) render_moving::i -(byte) render_moving::i#1 i zp ZP_BYTE:13 202.0 -(byte) render_moving::i#10 i zp ZP_BYTE:13 429.0 -(byte) render_moving::i#3 i zp ZP_BYTE:13 50.5 -(byte) render_moving::i#4 i zp ZP_BYTE:13 1552.0 -(byte) render_moving::i#8 i zp ZP_BYTE:13 300.75 +(byte) render_moving::i#1 i zp ZP_BYTE:14 202.0 +(byte) render_moving::i#10 i zp ZP_BYTE:14 429.0 +(byte) render_moving::i#3 i zp ZP_BYTE:14 50.5 +(byte) render_moving::i#4 i zp ZP_BYTE:14 1552.0 +(byte) render_moving::i#8 i zp ZP_BYTE:14 300.75 (byte) render_moving::l -(byte) render_moving::l#1 l zp ZP_BYTE:12 151.5 -(byte) render_moving::l#4 l zp ZP_BYTE:12 11.222222222222221 +(byte) render_moving::l#1 l zp ZP_BYTE:13 151.5 +(byte) render_moving::l#4 l zp ZP_BYTE:13 11.222222222222221 (byte*) render_moving::screen_line (byte*) render_moving::screen_line#0 screen_line zp ZP_WORD:7 100.18181818181819 (byte) render_moving::xpos -(byte) render_moving::xpos#0 xpos zp ZP_BYTE:14 202.0 -(byte) render_moving::xpos#1 xpos zp ZP_BYTE:14 667.3333333333334 -(byte) render_moving::xpos#2 xpos zp ZP_BYTE:14 684.1666666666667 +(byte) render_moving::xpos#0 xpos zp ZP_BYTE:15 202.0 +(byte) render_moving::xpos#1 xpos zp ZP_BYTE:15 667.3333333333334 +(byte) render_moving::xpos#2 xpos zp ZP_BYTE:15 684.1666666666667 (byte) render_moving::ypos2 -(byte) render_moving::ypos2#0 ypos2 zp ZP_BYTE:11 4.0 -(byte) render_moving::ypos2#1 ypos2 zp ZP_BYTE:11 67.33333333333333 -(byte) render_moving::ypos2#2 ypos2 zp ZP_BYTE:11 29.823529411764707 +(byte) render_moving::ypos2#0 ypos2 zp ZP_BYTE:12 4.0 +(byte) render_moving::ypos2#1 ypos2 zp ZP_BYTE:12 67.33333333333333 +(byte) render_moving::ypos2#2 ypos2 zp ZP_BYTE:12 29.823529411764707 (void()) render_playfield() (byte~) render_playfield::$2 reg byte a 202.0 (byte~) render_playfield::$3 reg byte a 202.0 @@ -922,7 +959,7 @@ (word) render_score::lines_offset (const word) render_score::lines_offset#0 lines_offset = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 22 (byte*) render_score::score_bytes -(const byte*) render_score::score_bytes#0 score_bytes = ((byte*))&(dword) score_bcd#10 +(const byte*) render_score::score_bytes#0 score_bytes = ((byte*))&(dword) score_bcd#14 (word) render_score::score_offset (const word) render_score::score_offset#0 score_offset = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5+(byte/signed byte/word/signed word/dword/signed dword) 28 (byte*) render_score::screen @@ -973,17 +1010,19 @@ (byte) render_screen_original::y#6 y zp ZP_BYTE:2 0.9166666666666666 (byte) render_screen_render (byte) render_screen_render#11 render_screen_render zp ZP_BYTE:3 3.25 -(byte) render_screen_render#17 render_screen_render zp ZP_BYTE:3 0.6271186440677967 +(byte) render_screen_render#17 render_screen_render zp ZP_BYTE:3 0.9600000000000001 (byte) render_screen_render#21 reg byte x 8.615384615384615 (byte) render_screen_render#30 render_screen_render#30 zp ZP_BYTE:9 5.090909090909091 -(byte~) render_screen_render#64 render_screen_render#64 zp ZP_BYTE:9 5.5 -(byte~) render_screen_render#65 reg byte x 22.0 +(byte) render_screen_render#33 render_screen_render zp ZP_BYTE:3 16.5 +(byte~) render_screen_render#68 render_screen_render#68 zp ZP_BYTE:9 5.5 +(byte~) render_screen_render#69 reg byte x 22.0 (byte) render_screen_show (byte) render_screen_show#13 render_screen_show zp ZP_BYTE:2 4.333333333333333 -(byte) render_screen_show#16 render_screen_show zp ZP_BYTE:2 0.37777777777777777 +(byte) render_screen_show#17 render_screen_show zp ZP_BYTE:2 1.0833333333333335 +(byte) render_screen_show#29 render_screen_show zp ZP_BYTE:2 16.5 (byte) render_screen_showing -(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:35 0.5 -(byte) render_screen_showing#1 render_screen_showing zp ZP_BYTE:35 20.0 +(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:36 0.4 +(byte) render_screen_showing#1 render_screen_showing zp ZP_BYTE:36 20.0 (void()) render_screen_swap() (label) render_screen_swap::@return (void()) render_show() @@ -1022,11 +1061,11 @@ (dword[5]) score_add_bcd (const dword[5]) score_add_bcd#0 score_add_bcd = { fill( 5, 0) } (dword) score_bcd -(dword) score_bcd#10 score_bcd zp ZP_DWORD:19 4.0 -(dword) score_bcd#12 score_bcd zp ZP_DWORD:19 1.3333333333333333 -(dword) score_bcd#14 score_bcd zp ZP_DWORD:19 2.4489795918367347 -(dword) score_bcd#20 score_bcd zp ZP_DWORD:19 6.0 -(dword) score_bcd#23 score_bcd zp ZP_DWORD:19 0.8571428571428571 +(dword) score_bcd#14 score_bcd zp ZP_DWORD:19 0.40540540540540543 +(dword) score_bcd#16 score_bcd zp ZP_DWORD:19 1.3333333333333333 +(dword) score_bcd#18 score_bcd zp ZP_DWORD:19 0.3653846153846153 +(dword) score_bcd#27 score_bcd zp ZP_DWORD:19 6.0 +(dword) score_bcd#30 score_bcd zp ZP_DWORD:19 0.8571428571428571 (byte*[PLAYFIELD_LINES#0]) screen_lines_1 (const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 screen_lines_1 = { fill( PLAYFIELD_LINES#0, 0) } (byte*[PLAYFIELD_LINES#0]) screen_lines_2 @@ -1034,8 +1073,8 @@ (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return -(byte) sid_rnd::return#0 reg byte a 334.33333333333337 -(byte) sid_rnd::return#2 reg byte a 2002.0 +(byte) sid_rnd::return#0 reg byte a 34.33333333333333 +(byte) sid_rnd::return#2 reg byte a 202.0 (void()) sid_rnd_init() (label) sid_rnd_init::@return (void()) sprites_init() @@ -1050,29 +1089,27 @@ (byte) sprites_init::xpos#1 xpos zp ZP_BYTE:2 7.333333333333333 (byte) sprites_init::xpos#2 xpos zp ZP_BYTE:2 8.25 interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -(byte~) sprites_irq::$4 reg byte a 4.0 +(byte/signed word/word/dword/signed dword~) sprites_irq::$0 reg byte x 4.0 (label) sprites_irq::@1 -(label) sprites_irq::@10 +(label) sprites_irq::@11 (label) sprites_irq::@12 -(label) sprites_irq::@13 +(label) sprites_irq::@15 (label) sprites_irq::@2 (label) sprites_irq::@3 (label) sprites_irq::@4 (label) sprites_irq::@5 -(label) sprites_irq::@6 (label) sprites_irq::@7 (label) sprites_irq::@8 +(label) sprites_irq::@9 (label) sprites_irq::@return (byte) sprites_irq::ptr (byte) sprites_irq::ptr#0 reg byte x 2.5 (byte) sprites_irq::ptr#1 reg byte a 2.6666666666666665 (byte) sprites_irq::ptr#2 reg byte a 4.0 -(byte) sprites_irq::ptr#3 reg byte x 2.6666666666666665 -(byte) sprites_irq::ptr#4 reg byte x 4.0 -(byte) sprites_irq::raster_next -(byte) sprites_irq::raster_next#0 reg byte x 2.6666666666666665 -(byte) sprites_irq::raster_next#1 reg byte x 4.0 -(byte) sprites_irq::raster_next#2 reg byte x 6.0 +(byte) sprites_irq::ptr#3 reg byte a 2.6666666666666665 +(byte) sprites_irq::ptr#4 reg byte a 4.0 +(byte) sprites_irq::raster_sprite_gfx_modify +(byte) sprites_irq::raster_sprite_gfx_modify#0 raster_sprite_gfx_modify zp ZP_BYTE:46 6.5 (label) sprites_irq::toSpritePtr2 (word~) sprites_irq::toSpritePtr2_$0 (word~) sprites_irq::toSpritePtr2_$1 @@ -1092,75 +1129,68 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() (const byte) toSpritePtr1_return#0 toSpritePtr1_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 (byte*) toSpritePtr1_sprite -zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 render_screen_original::y#6 render_screen_original::y#1 ] -zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#11 ] -zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$3 play_update_score::lines_before#0 ] -zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 play_lock_current::playfield_line#0 ] +zp ZP_BYTE:2 [ render_screen_show#17 render_screen_show#29 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 render_screen_original::y#6 render_screen_original::y#1 ] +zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#33 render_screen_render#11 ] +zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$3 play_update_score::lines_before#0 ] +zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#62 current_piece_gfx#115 current_piece_gfx#116 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#16 current_piece#89 current_piece#90 current_piece#91 current_piece#92 current_piece#93 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 play_lock_current::playfield_line#0 ] zp ZP_WORD:7 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_bcd::screen_pos#1 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 render_moving::screen_line#0 play_collision::playfield_line#0 ] reg byte y [ render_bcd::only_low#6 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] -reg byte y [ current_ypos#9 current_ypos#86 current_ypos#87 ] -zp ZP_BYTE:9 [ render_screen_render#30 render_screen_render#64 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -zp ZP_BYTE:10 [ current_xpos#47 current_xpos#112 current_xpos#113 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 keyboard_event_pressed::row_bits#0 ] -reg byte x [ current_piece_char#64 current_piece_char#90 current_piece_char#91 ] -zp ZP_BYTE:11 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 render_playfield::c#2 render_playfield::c#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] -zp ZP_BYTE:12 [ render_moving::l#4 render_moving::l#1 play_collision::l#6 play_collision::l#1 play_remove_lines::c#0 ] -zp ZP_BYTE:13 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] -zp ZP_BYTE:14 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] -zp ZP_BYTE:15 [ render_moving::c#2 render_moving::c#1 main::key_event#0 ] -reg byte x [ render_screen_render#21 render_screen_render#65 ] -reg byte a [ play_move_rotate::return#1 ] -reg byte x [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -reg byte y [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] +reg byte x [ current_ypos#11 current_ypos#99 current_ypos#100 ] +zp ZP_BYTE:9 [ render_screen_render#30 render_screen_render#68 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +zp ZP_BYTE:10 [ current_xpos#57 current_xpos#125 current_xpos#126 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 keyboard_event_pressed::row_bits#0 ] +zp ZP_BYTE:11 [ current_piece_char#75 current_piece_char#103 current_piece_char#104 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] +zp ZP_BYTE:12 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 play_remove_lines::c#0 ] +zp ZP_BYTE:13 [ render_moving::l#4 render_moving::l#1 play_collision::l#6 play_collision::l#1 ] +zp ZP_BYTE:14 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#10 render_moving::i#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +zp ZP_BYTE:15 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +reg byte x [ render_moving::c#2 render_moving::c#1 ] +reg byte x [ render_screen_render#21 render_screen_render#69 ] +reg byte a [ play_move_rotate::return#2 ] +reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] -reg byte a [ play_collision::return#14 ] -reg byte a [ play_move_leftright::return#1 ] +reg byte a [ play_collision::return#15 ] +reg byte a [ play_move_leftright::return#2 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -zp ZP_BYTE:16 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] -zp ZP_WORD:17 [ lines_bcd#20 lines_bcd#13 lines_bcd#15 lines_bcd#11 lines_bcd#23 render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] -zp ZP_DWORD:19 [ score_bcd#20 score_bcd#12 score_bcd#14 score_bcd#10 score_bcd#23 ] -zp ZP_BYTE:23 [ level#24 level#14 level#19 level#12 level#16 ] -zp ZP_BYTE:24 [ current_movedown_slow#31 current_movedown_slow#19 current_movedown_slow#12 current_movedown_slow#1 current_movedown_slow#17 current_movedown_slow#60 current_movedown_slow#8 ] -zp ZP_BYTE:25 [ level_bcd#25 level_bcd#15 level_bcd#20 level_bcd#13 level_bcd#55 level_bcd#17 level_bcd#6 ] -zp ZP_WORD:26 [ current_piece#20 current_piece#80 current_piece#16 current_piece#73 current_piece#10 render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] -zp ZP_BYTE:28 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] -zp ZP_WORD:29 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 ] -zp ZP_BYTE:31 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ] -zp ZP_BYTE:32 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ] -reg byte x [ play_move_down::return#2 ] +zp ZP_BYTE:16 [ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +zp ZP_WORD:17 [ lines_bcd#27 lines_bcd#17 lines_bcd#19 lines_bcd#15 lines_bcd#30 render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] +zp ZP_DWORD:19 [ score_bcd#27 score_bcd#16 score_bcd#18 score_bcd#14 score_bcd#30 ] +zp ZP_BYTE:23 [ level#31 level#18 level#10 level#16 level#20 ] +zp ZP_BYTE:24 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#68 current_movedown_slow#10 ] +zp ZP_BYTE:25 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#63 level_bcd#21 level_bcd#8 ] +zp ZP_WORD:26 [ current_piece#27 current_piece#94 current_piece#20 current_piece#14 current_piece#88 render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] +zp ZP_BYTE:28 [ current_piece_char#27 current_piece_char#19 current_piece_char#14 current_piece_char#16 ] +zp ZP_BYTE:29 [ current_orientation#36 current_orientation#12 current_orientation#16 current_orientation#19 current_orientation#24 current_orientation#7 ] +zp ZP_WORD:30 [ current_piece_gfx#33 current_piece_gfx#105 current_piece_gfx#16 current_piece_gfx#21 current_piece_gfx#18 current_piece_gfx#19 current_piece_gfx#6 ] +zp ZP_BYTE:32 [ current_xpos#41 current_xpos#115 current_xpos#17 current_xpos#28 current_xpos#20 current_xpos#24 current_xpos#7 current_xpos#5 ] +reg byte x [ play_move_down::return#3 ] +zp ZP_BYTE:33 [ game_over#69 game_over#26 game_over#19 game_over#14 game_over#15 ] reg byte x [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] -reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -zp ZP_BYTE:33 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +zp ZP_BYTE:34 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] reg byte a [ render_show::d018val#3 ] reg byte x [ play_init::j#2 play_init::j#1 ] reg byte x [ play_init::b#2 play_init::b#1 ] reg byte x [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] -zp ZP_BYTE:34 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ] -reg byte x [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ] -zp ZP_BYTE:35 [ render_screen_showing#0 render_screen_showing#1 ] -zp ZP_BYTE:36 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ] -zp ZP_BYTE:37 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ] -zp ZP_BYTE:38 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ] -reg byte a [ keyboard_event_get::return#3 ] -reg byte a [ play_move_down::key_event#0 ] -reg byte a [ play_move_down::return#3 ] -reg byte a [ main::$12 ] -zp ZP_BYTE:39 [ main::render#1 main::render#2 ] -reg byte a [ play_move_leftright::key_event#0 ] -reg byte a [ play_move_leftright::return#4 ] -reg byte a [ main::$13 ] -reg byte a [ play_move_rotate::key_event#0 ] -reg byte a [ play_move_rotate::return#4 ] -reg byte a [ main::$14 ] -reg byte a [ main::render#3 ] +zp ZP_BYTE:35 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 ] +zp ZP_BYTE:36 [ render_screen_showing#0 render_screen_showing#1 ] +zp ZP_BYTE:37 [ irq_sprite_ypos#0 irq_sprite_ypos#3 irq_sprite_ypos#2 irq_sprite_ypos#1 ] +zp ZP_BYTE:38 [ irq_sprite_ptr#0 irq_sprite_ptr#3 irq_sprite_ptr#2 irq_sprite_ptr#1 ] +zp ZP_BYTE:39 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] +reg byte a [ main::$9 ] +reg byte x [ keyboard_event_get::return#3 ] +reg byte x [ main::key_event#0 ] +zp ZP_BYTE:40 [ play_movement::key_event#0 ] +reg byte a [ play_movement::return#3 ] +reg byte a [ main::render#1 ] reg byte a [ render_bcd::$3 ] reg byte a [ render_bcd::$4 ] reg byte a [ render_bcd::$5 ] @@ -1169,13 +1199,22 @@ reg byte a [ render_moving::$5 ] reg byte a [ render_moving::current_cell#0 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$3 ] +reg byte a [ play_move_down::key_event#0 ] +reg byte a [ play_move_down::return#0 ] +reg byte a [ play_movement::$0 ] +reg byte a [ play_move_leftright::key_event#0 ] +reg byte a [ play_move_leftright::return#0 ] +reg byte a [ play_movement::$3 ] +reg byte a [ play_move_rotate::key_event#0 ] +reg byte a [ play_move_rotate::return#0 ] +reg byte a [ play_movement::$4 ] reg byte a [ play_move_rotate::$2 ] -reg byte a [ play_collision::return#13 ] +reg byte a [ play_collision::return#14 ] reg byte a [ play_move_rotate::$6 ] reg byte a [ play_move_rotate::$4 ] -zp ZP_BYTE:40 [ play_collision::i#1 ] +zp ZP_BYTE:41 [ play_collision::i#1 ] reg byte a [ play_collision::$7 ] -reg byte a [ play_collision::return#12 ] +reg byte a [ play_collision::return#13 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_collision::return#1 ] reg byte a [ play_move_leftright::$8 ] @@ -1186,12 +1225,14 @@ reg byte a [ play_move_down::$12 ] reg byte a [ play_remove_lines::return#0 ] reg byte a [ play_move_down::removed#0 ] reg byte x [ play_update_score::removed#0 ] +reg byte a [ play_collision::return#10 ] +reg byte a [ play_spawn_current::$5 ] reg byte a [ sid_rnd::return#2 ] reg byte a [ play_spawn_current::$1 ] reg byte a [ sid_rnd::return#0 ] reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$4 ] -zp ZP_DWORD:41 [ play_update_score::add_bcd#0 ] +zp ZP_DWORD:42 [ play_update_score::add_bcd#0 ] reg byte a [ play_update_score::$5 ] reg byte a [ play_update_score::lines_after#0 ] reg byte a [ play_increase_level::$1 ] @@ -1221,9 +1262,10 @@ reg byte a [ sprites_init::s2#0 ] reg byte a [ render_init::$13 ] reg byte a [ render_init::$14 ] reg byte a [ sprites_irq::ypos#0 ] +reg byte x [ sprites_irq::$0 ] +zp ZP_BYTE:46 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::ptr#0 ] -reg byte x [ sprites_irq::ptr#3 ] -reg byte x [ sprites_irq::ptr#4 ] -reg byte a [ sprites_irq::$4 ] +reg byte a [ sprites_irq::ptr#3 ] +reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#1 ] reg byte a [ sprites_irq::ptr#2 ]