From cc69cc82ff0e2737dc1a8189e2335b43fa666914 Mon Sep 17 00:00:00 2001 From: TheMachine02 Date: Mon, 25 Sep 2017 22:47:25 +0200 Subject: [PATCH] Added example1 Also fixed raster, pipeline and texture code in backface culling, enforced some code definition. --- bin/SUZAN0.8xv | Bin 0 -> 4690 bytes bin/SUZAN1.8xv | Bin 0 -> 9749 bytes bin/TEST.8xp | Bin 43268 -> 43296 bytes bin/TEST.lab | 888 +- bin/TEST.lst | 23926 +++++++++++++++++------------------ bin/TEST1.8xp | Bin 0 -> 25155 bytes bin/TEST1.lab | 4676 +++++++ bin/TEST1.lst | 11458 +++++++++++++++++ build_example.bat | 5 + build_model.bat | 7 +- example1.ez80 | 219 + file/Suzanne.mtl | 22 + file/Suzanne.obj | 2423 ++++ file/Suzanne0.inc | 1025 ++ file/Suzanne1.inc | 1937 +++ vxPipeline.ez80 | 39 +- vxRaster.ez80 | 93 +- vxShaderInterpolation.ez80 | 4 +- vxVertexShader.inc | 2 +- 19 files changed, 34191 insertions(+), 12533 deletions(-) create mode 100644 bin/SUZAN0.8xv create mode 100644 bin/SUZAN1.8xv create mode 100644 bin/TEST1.8xp create mode 100644 bin/TEST1.lab create mode 100644 bin/TEST1.lst create mode 100644 example1.ez80 create mode 100644 file/Suzanne.mtl create mode 100644 file/Suzanne.obj create mode 100644 file/Suzanne0.inc create mode 100644 file/Suzanne1.inc diff --git a/bin/SUZAN0.8xv b/bin/SUZAN0.8xv new file mode 100644 index 0000000000000000000000000000000000000000..4a5bfa8a736a54a6e420c49abd1c29e491535d25 GIT binary patch literal 4690 zcmY+HeN59?*2hm#koOk_2AzTkSfNv)U@dI711urLhZtj69@Y>-Tr=a&OpGDMn0btu z7&Dm|VUb$SHHaW*Xv(?k$>rb^8fPJOP9XB z{^zg%c9s6$-{FHP6n`-5&;Q-}r*m5IB>rIB!Mv!VU9n3lek%XxcZ$S__}$N9{6D|H zk4#YqsmaJ%XP}b>*qwpfltbrP<#yd>0aI?*eM+S(Tsl90odt}|&$m*9FLBDCr;7z_ z4SHHBp3ZRGn4^mYM8+JgR6td{&%D{i0`|osR|R4!kSENF7f^?9&*jV|Bz{jS(H2VuEIj z=(r{(*g(y~mNxR51*o+V9eshx3%Rf*AU7AbI$&Z!Gwoslxti%#`kt__({o)cVC(c; zD_s}+D#gA8L`t!*Hf$%RW~++@$TeFXumvBMYyAF&rvz6X`i;-$J@X}q3RI`PbZeqm1 zwH)&UMhx7;G1sUC%TQ~hKeB)cZM2mxQUynAw!2tBY|VB(=9KctiH%<|r_ zx&Y@$l;|qlOVt}ht@sY@^bj?1J(CQ00ZY`sKxAhfZ(Lr($eXJ&W%&kPdnL2!@gZ0brtt?<@`Tcq7l;s5fV95ROsRa6mHj)?DVy< z0PjxUBZOZIXKwUeM)%jg8vMs?K3|>@Sow0edbz1Xmfh7w}%C+2YU(YLy*i5 zC^4g+6GEm%L`FS_LZ&=Yb0f#DN*)#vU6s-)4~H3Dlh#>4?3zS4)ALMW#F!1~fq#T! zs$>6=!6P&UsLb11W&wkFTlr+c9OL>&H&Ut=0q`-Ke!-(-3!|$nU~XabG6lGqbEZch zu>kM%=wnFJMb2Fvz65Ey$P25(uStiXE%ezMkhPb2#%KEtd%wVk1C~1M{Q|E9EH7~u z4Xh0HpT}7=@M5UH17WS>w6M981#E=P=jj=?n32@`k_CKB>ebO>$oN)**~$V^63j;s zKgCSDJ(H$yC7D*jC^4)Q!7XKN1&c*oXy1qAI*LV~n0*~f{Ju?teb!Fmx<0aG*G zM7}3POwU(j@Xg{Vbu0yZN}9!^lCr=e z3viYN63Gn+82v#OkZkl5Sy>}?k&M{T@_LaifY{J-dXX)MT!6y`b}tK9DX=SHLc@mw z(jrV~*dLHGsfQ~#b#lZ90j}W9$q_>QR4};*>gXlp!k8WUjRi>ANJcZxLPKK{EWkly zrI^#mC5iSi%xPq2qTPrO;;pP52_M8;Svy4eBA!)mlBoc&Trv@00Y^$Ea&Ur;JhI>E z#R)cY`F^LUoednGw0YsC29BS!5w!RM)8v~R96$@Nj!k*t$`;NZo5~?Aj?#K~(TnZ1 zvF`9C&;F5L}oRIWK#oO!K0)Drq?WB`+(^RT?WLi^!=R$L|6JcQ60{4*1p~jNclNl z+t>S$8W9xnQPVdpARIOQohnc|GQ-jp7T^m@H|YrEAtlcI0}I%SGhc*8)p2sf^aL7J z$AO5+KuRoC5$&Tohc?fx0#am&s5oNuab3G#x z%6c^~ct$GlRyCKcyKH!?nn%}N)szoV7QHpIfW@M>7bzR*5T|-A~SM6O#pC|Fr zvibWgV7_er2K_(}I7`2Dj|HshmtG^ry1Be0(tsH2=8=-fQ^esbK3cxijyQb9^W{s= zaBQ1gqVct{0H?-hMGxs_?XhJY3$PzswxYu3QPoj}4iz?!297G8q0m&&XJxT%XdfzQ zye#$^y`XDUQc&2&0-ObfR=NkBsLaaIVOMQ5n3eMw&HqC>5vjO@=Kmp0Mk;Pm94dUl zjQV>PFgv3j!yII0vA0xQM#xd@{R&>4;v#G4CwO&=r>&u@h;Tg>T2mgdfEjDbB6ez| z@X5DI?9@o{C*NAo(&SU@)Efgj&wPqby-8FojEt}|98%Z>{vil?Xs3kFKWG&>IHoZT*<}Hx8Zs(s0X@-ONfuBW-PI`Ckl$M) zE{7~2WyBSyxB&ZwEw3Y>UG}Eu4 zhX?5oi}C2H0R4;cudq`MsnTq?ZUUy#Y_BL0eYas}mN?g|J>8;znh@ferld~Qr)US!&&U%FPCej|55Z0T>eqdq>D{P{J8GS0O zu!%lo^f@57O;mVzRKo&h4v$LMX%p$v=Zx5C6Is*eT<}H{Dg8smSYHz@`iBw~&FFLU ze8WLmfX6qig;#G8l+g~a{u}BP)wrq5gob~U1r&yc^@?mfnmjZ*BnvokXfzpTdWF(e z_5jZG3azW`9;~^Z_WtP2!M_157Ye{{i$VZUmM*0bv(@qPK{vdYIN?9Z&Vi&EnM$&$T5q&{sg0w3O z@Fhs83N6Gcb4S{g1^9L(CG_tL*t0Ck0v5@Vt!MzGXGp8Efb|S14w-U`yhUXZWXdhd zDJrW~d1)B{1Vm+H7LYRtjtQ^~nT8|A!svH=OX|@BI7S-;{bX=t!NfFiv94SV1ry5iWvmJVsfwG4x zt`(HSIxo{7Y7ts#I`mcbC)OWovBgfUC8pV!;LvAlPNniGr*&#LQtU`R^4(b3jU$^G zfhi}h##2itHV~tAM}}XPQ=3k0Mq&DWS9GD&yRmexgB3JqHdC2e(N%ZG>bYjB5UYxw zLT==I>)7qgR${}Mk)YmkCeu~bPzXf^N+a+F0yUOuZ_jF30lnS1Rv@1_aN@bI8Iy=L zZWPPj)uCvdIeuwa`nhG+i;3(DF+9-$Jxjuj=@nL zj#RnO5ez6AC$nC%(nCG+QY{BgAym24SxOC;I$!*fE_LSkrN8w105x;qq@q@Cf=e^S zE_4q`trxnl@Qa=?F0ZQo%G!o1SL#YvKBB#H#VDhf7^c6pRe6^-vpy7NpezbAVE9{D z6=4*nT-djeZ4i3M~g)$)iQaqG(;P z8P$?;>uSB#K#d?i+>s_D303a3J+tO`kXe=YAk#lE z$Ae5ll?TI-qG>p)f3Wu6V@j_hW&*VeWrusOj9FNf=3pugk!w@em5r=`hSI4H#2HR; zV=7Et%fOM;wX95tVjt|$+DGyp&DhdU~I1eL_8%p{R_SA1x76d$fUnX#-uT*;T@6pB2C_{j(=2&sCzQJgWqL znV+qv3uVum4Zj$3zu5f394rY%0s;1g4Jj)NVSUUoc$f0l7n7qAFV?fzi%w9sOClABlMDD8%Qm=+1Ro=7~{K9xH z$5e&Jy!=ZWxMUP2y}3&4%bOhSRUtvWO!{W_&e(VB->pRru2NMqhQD~mG^qYv3&t<& zt41(fs=WGQ3uU_d)^U^ubf1F5R^!}GNNRMA-y=ckC1M{xrrVx4{x1%9GF91&D@yu%Uo zO`ag?Tig-#;f(acajk=&sE-&uQW>tJcLJ{55%tZUs#vUa2*<4+7WENcD)o&!a>Q_* zgP*8x@KjMBsT;kEv))*#FIGClY$QNr-LB!lTcSQWs9e`ld5y*4JHz=!iTaw)YuocG ztbTPiD}g%>WNW2a3MQM6T5bJq=R8UL2 zJRH=-Tm!v0g)Rp*Q5udhXUlIGgG3L!EURJ!?@)YE8t+vcQ5r8^oH8&E?`c$WHp3~s zv)O=ZK}dK_F))xNV|88wNJMEJhV_k3WC=CU z9MnWtjYN9jD z>Va99j4IA%LsbLsU+@CbB7q(e*$NDzGM961MlXt(I4lA_mC_1qR=Id^Hq$B4bTSPm zc&J`-#5p~PMKA1=>RG1BVZ?f{2sT5_G>0+~8BSY?tOJtiS)o2Iijq{<9IRgI!g_HN zw8RB48_nQ4Vlob8A~IA@Jz8=o6Oo|?Vrmu2FtbCMhzwPz*E?V`Qz_12t42^AUej#O zVch*9vI3FuL=65^$WQ*Hm`KJSofefqwE9q)KV|qLG9EyD5gE^=p2q&hK(Uthwv0oW zhzu0#iD628;_-O!Gb7epnTRURW*v(0MmoQz^kU@9{H!{ZNs-i$m+o{AWzL)~0yrWv z-Aat0p;(xRZ04q5&5#0SAz{7~m`M%vG9hb2Q7AEX#jD&o-w3!EE+T`6R;sklO;YsY z6nYB?RO!`tFI0kRAA~?F34^8a$3Y%$1`zQqKiC(`feP>TBdhLD_~w6ahR@`cNA^qjM!t;%vk<%^~3*| zi^Va5#xi^I+DdL30WLz^ROyL534g>_7#yjUlJq8Lu7Vnf!(6BtRk5oDC%^`cfG8?# z4VABm73Zsjnw_tDlsyaTTB%zHM<^!ws%BIHn(CF4w35o|0h$&bV#EsCIBbc1a9T!~ zlhLPQL<@CjAlJddP$Ud&Lt!9$MQ;zAIbw;gQ2632O5lsHQ23eyr$|x4rxsteTqWTd zKw?!QMklR;f?6;Gik2L)3Z{3&(hjwBiG8T)h$S9cAs$#|aLoEt37itYI8{+!eAUBJ zsMQyYFU432X;rC`pm~)+b5yEA6~$6Ezdsp+PZ74*}Q9k)|(X+fn;)mnGL3dP)wi71{BS9 zln`c;{0mx0u!(;o3oV4RW5bSxepes9@Kt%(wS-#T^eCF`8NNoed!`tp`aK_!m|)MV zpbBcwG}{Ucp^BOD`avOVPfnQK;Dpr`zG8(rsv7E8V(GIUle(k4)*Y|nPFP@pU_-Dl zK@Y(ast<-E)$&uz$08JeGC+b|Au<5x#KOYQCGq|W5W;ez(#tj zS{OmzcwneZY&x***ziM3Dby+TMiiuc^uk=$`m`a5fv%HS1VLU zSzf`Y24H}`6a#lCsTiL*Kqpqu1RIOc90$Uubjp=GNRbfIkv;=11~Q&l5-aKvov z6$C&G4}%jH-q5GE(TnN%T0x9nR6}e5N^0-KXQwm65B-_p6x0T&@T<%SCBaRcbm9}! znUSNs@yuEj#;U?Buo)w!Gvy_EX~ggYH9J1&sh4kufDkKX4%G6wK3;JsgN(@Iv=Rgb z@tphlwvZ93;mXhbdV5zBv26+2^mbiP@%9f2arOH zhH6m>?gXMxoC0RKbhTaj$#7cq_FRY5rA_p99P_1|5IN>cIU#e*mvX}7YUHFB4xABH zO^_RNwA?@!hNC-dV-BfH>#kf8N5w0u@agT!M{EpiR48qxKFPQ zU(Z&&w(gqBJbBmtl%d9J%fxsZr)xQ(hnwz%Q-QYey#z(;fF9Jq^XpDXL9ykQ5kY1| zwbZ+{35B7G)WUbE+KZQgEn@t^k&1kBsrL|`q3V4#f=S%Zm?^mG{Oi_CY;%0tv}X3e z2`bo)Dzox{iFaO^t6FX>5}W+%*2LK8-?SFSu519vLX1X&dOJ4Y-lls-z-wR^iq z_dxH1;ZY&W{(FkUMrHF5NwpnWEZuwo;h6dBQQEVT-T z4W1a$JQ`sNX`gWx^3+9fDSDr5d!+Z#x+hyun29`8e6sOTPRLJ|ALRth^kfk=K3VfD zN4?#%;fMTeI1x2I%XFyeS*AhJHi|zp8{br4{EDbFz4-c~$1*EjxLC$A$HcrZN(jq~ zR75pyI@I=JIGgIBUTs0qn1kWkT^wqKktBvw88tDl#xlXHO>ZdH_p0Gi6ID#acvAU{;F2)ku82Db- z{Al^Z;s<$;GF?^8hoAoRXdCO}JZQ`Nf9{u&JYuAy2nSkMtB~H*D(pYKqxPO>`a?IP zP9GH+yFy0h%r!fk_55D6CiF`B#6sd5-*a3~XBnM0YFE4d>g zD-LCv4JTD1gMtiNY9YZ&L6k_9j8w1E5{hYxsLI!}qKf(dc&4$GG-3-J;SeQ)!WsD0 z>z$kML+ji$qWBZ}EQ4D4WpH%TFEzLVr$}uMQ6i`exDex4egtMv{N_&pPF2~_Nd&b4 zLc}KC3oHWF?(3@%j=$fiT$NsX%JXy_5tJO>joHiUEg5~P5!Lzh8Pzz{MaB4#hNBpt zD*Tg^2#VRZN>G}Y%5)`%D3Jn)u(5*v$Z(dbCO+PwB3s7)tHp>Gj;Q+r|I7|iA}CbP zKGRE*6yyT*tc;i-83!Se5ei?lgi|U@krWw$frmDc(Y^pFqe#MxDB4u3n5%^t0m4}$ ze4t{~WP*-0V-|-fu~ZKk!8C=bAY>FTJPeLls&z*v%|INnREF?SJtZ8cv_m+Ml2{67 zMA0Cl1ec)b5+h+2$0-pMT_lK`dPgU56Am;X1zx}!I-?2DAco@5M)8Y7aYjW4<%r4- z&mC%VT9R5IBk-rHmXC&1!EA?>mN49S^wI#DuF}%t=p=56yaz=*m7ppuQEaPffsDjH z4r`xkgpr7iPEb(_M01GJ9E+oqxG7&aEy*}KIXCfOXazhe4ou>v4VohsotAL)9CaW9 z?_X5o=p=5+yikduc=$#XW^!~AH)V$&aZ|&)mR~No3DfcB9D)@`Cvg*wV!i*T)1thf z|6m$XG)6F7+(Z&im^_eC{2>)z@AK^F6rvN4aUXCG5gQpxo38!8vO4NfMQete9G%2X zsEItd38Tt1R3w(+14k!u6T@eoiU{2}I*FT54GdCvcmW)KsXO14k=W#*vY{3ys75^W zAZp2auR0(}F{-(DTEcXWPU5CmX$g}nhf#TQN8Chs;W{`wj!I{QY84nkR=Nkr9d>?W7d%qmK7mWtGjz zsDmSD(UC|zlpTpgJfkC#cnCF-hvDV!Z+1oi6?(@*L5@V?13BbP5P&0*cxZ7X(i?FC zDnuF1S2()z#gWK)2$IoQXD;|dJVcUI<3JNpn=5>&jkSmr+-!`^Y$FM*YVJ0cAqOE{IS#BL1#CoAWCMT{ROdW2 zs`pi_vY;>x08u#yl`92}m3=mcwOD&G6C)NUsE*j^3SSgNpQ1#0B@JVEEn Kjh2a(um25RJx3=1 literal 0 HcmV?d00001 diff --git a/bin/TEST.8xp b/bin/TEST.8xp index 0976a98df05db6108e28aded0be94c248e8acd02..3f7d7a41322b4dc5a02049e8759d110c1f4c9e03 100644 GIT binary patch delta 3484 zcmZu!3vd(18Q#@NvQD-^vPoo_hkPd*KfuA3Qyc`yt^?yVFob~92JDpJkhn}BZUY%i z0gE(*NoJY`W@kzsZR5@~3?LHB2rOuEV;L*4N-ptU1NAhy20=t=HA@UBG{bOK|2;|I zOl!|+_y7LaxBu?#?(I@dJ*sKXcZ2^pP>9YQu(m8-*@BF}a|b>>@YOb@6RV?=)vhWX zLv&Oww5yUMC%8Z;%?XlSb&jW1r7K1y@RxUivIUgqLR9HLNR>Tyb-@2(KV2|hT!xSM zpyz+pt}YlibLmxkQ0=_O!8Yvppts{*y zR>t1HqkNt#2Sy|{Uv<`08oDZfKb7Bs%&$f1B&4heQw6^I6N~4L-=O3bag4GF$sAbS{h{k;fLe$=u z>eHq4K{~jd{M0ln_*jUR`Wiy?SJ(AUw#c_WM7yuYyeu!}W#zIXL@O!-#Szw2lXt_G zV(n~&yf#FA8$y&7BR2pIY{i+`XQrq0cKw+IcPR+bfcIMt%fX=)9E!f>ptWnyB<}4Y zQw7Ie4~M89cs%Tf?0bi^L`b7hYB7?LHNvAdpw4Ml{KK1!2Xxd27acCEV0n(ZRpg?N`n*oxc( z#sKGx!OyS&6r$z)AcPUv@NrW&XoKLCQ-f13FIZ0SH=;Z-JeUH~J0B~Pwx#%{N^SeP1a_PWU zStXAGPw~#irlz!(**^B|9D&p0rkpc-PQR^D_MKT`na;20|wFtZ)-<*xA+3a zyTZ2o_e?=cAJwHj$EfZ>z(t>I)jgs#a*WE49H&-+t=m~qcs;OFlXgd_QqV`QvUQCd zY1E`QZX;zJDbu7ww-E!nMz8Bh)`DVMEz-NuB|P-b2^wWVpWtA6;_7L5 z^ZDa@u#ftd!?UT69`P+dPP-z*nk@EF^CW>SWnSc5evGo-W?h0-a~LAD%5L{R$i!# zMyR~@cm~Teusj26&0=-~vm4lt$kj<+{1~}wvM0FeIM8W1PL-EV(i>RYg05t@hvkxej zi4peDwckO{kpjm<(AjA~$4-)eIz4zGEEauYGF?7J{x)TX>4Q_@n^PzzJp~(sI_%n1 zm+SlCy!sQB7eed#lsb{^B1UF@E(HHdoeq@1jmEf_z;R+670`Aa9p0L6ey};lJ@sc% zH*Cx7X|rCB#~n2dywal9ZDlgzQzUA;t+2)FwN|6sJZU9c+J#Xg8qt@D&30x&N)15gAcq<NrzaHq2U~9Kf4b z1r{1VK={M>;6)jJ;<2Q3>g2>KJLFuZn{N=4PS zi_WcJVCQv}ifk8k2}H&9F02BmzMg>h3|IrMB4xv2Sd&GW@Dt+kQ0c5AjT+HQ_Mw<_UDy45zUZN$I)~=Xl)+To_J7p&VqTdl9}uUU%0PSx!@VY!C|Y6Sxfg zVvx#P$Y<^f><^nu8%_8vvUr-jFgir*;l9Co6W-Hr4pA@b<;~Xt$~HFEcEA38WkoD7 z!ZrpPlo>G^2pGQ$jo$^z4D$PFGJcADI4y|xhnuH=g7IbI@_YwB7hdSuS6~_XJac21 zCg_rfd^2kimdL`{ORbh+>dYS|ug#tfz^U2Gu!rPVKb61s%8ywS-!j2?TeXb8BEPL} zz@G5mtLrc{MRV3$%KrDp@@XNTnCy+^&*8W33(s6S;mv{VnXeAz;~^?-eVIC));ROb zn#+VrlwD&te$nFgs0BojzVb(l(DkvCV>;&SrQs*?F|pNjk8A{I~3 zvq@>hq;_x0bkE)Cjv8G_Kxm#5>{$=%@pk*(CZ5$(oedUM?8dMsv-VD{LzMTDC96wu z6M1^|_e6+x2G^MV=Sc7B+9h)ZwPYOcT;HK=5>!0UKW4N~Y#le+vC*{AmfXs;zfNb` z8`(CUP6y^J5bwXmnojQ^vs>l)J4|ZybUD8rCeLyL-H{40seB};32({Qu|%BjIEV>I zpQm>VP_j<{&rNEiY!Yj2Ag{De4JIwB++jkW3umkKgA z1@k}w0V~fp#HB`zWC$RQ!A%~F?nN>Lm%%xnIs%u?rfd7nYBIV22EkU`JWATy+WcUU zJi?lyl^0wVwZX;nv!==mGYtVe>ml^Ne1-%OL2#YFg5xm2WcXU!I!h2f7~K4;!TC)( z?Vo|JpZQ^hSd{~FpAsC&oXvohjlt+!w_9BjP}t_O4+P|*0>Zli7)FeA>Iip96%utonj(nNSds5>wZ pR&|R6o-COLX}0@x5eOR}H^4=K+pc82Z^Zd{__-(dEH=fz{4ci-b%g)` delta 3542 zcmZu!e{fXA9p8QL?sD%S$z2k;yco&7ca-GP0LcY~p5YQhC<^}Q5Uhj2TA~#lwWvS? zqugP2{DZL_J8udd>r69Kl;H6rcqD<;lU(35H}NU^gf>q5DhD1d-mE53u%o_Qzxys1 zVy8FrZuk57{@CyLySv}r?bf&#HSU$0!=pWgXt2k&epUN=Wc~(wPV{{7tlEyXG3hfw zQ`ep$WAcQcNnhoOZ-JP~6IO@jn#yYG#srZ-Uw+h~Ny{CYy7CZFV+V=4&7lni#$%*u zs?>vz`k@zi+MzW~Ss3-SBdl#%=%i2VdbfA;V&p>I2)8(qy8S&8bn48GA+2#}80|h= z3og(O7+O7d>N;}+V-B5_`sZk_GM~w-JrE=E>oD@xI4MHvsVGs=DT1>Cq8(-E(g5ug zOK(B6*YtM#-JBLg{uek+{rf>e+dmaF|G(HkX+g{2zaXUUvS=;~Lg&-!6sM6??RHLc z*%1uP?Y}&(Kb~ zPW~W5{2xaMEkz;#&2-&p-RMmjqtkdi#Z-1iNYMK|g%~J|fI`Xl6!cF0@zmmOj+ZF#7LCW*kYgd|~*&T(Ie4ssc50~Pnc^tsvNP+3%`1dr1ff;N?y%% zZ7{3TU1Ycs>k^ou{0G7S=Y>JflmJw?t_LQB89kARIi0*!&@s7y+KiR6^-ZfpG>4j2 z%1g4fcHP1J@GvF}ue?++UyS79P;;$qx)s!j5-V6*2toML1`89cC{qRVW+5P%m{Vyi zK}j=l`D}qF`5WHUX}TUI^acc*_%c3Ia+1Vp*v~tuk(xLS zdw_lZzJB75!FQpb9QDWg$c}*#UH(-+u@v$2PU=Oj*l|L8R~r(vI&(Y$bp`TL@y2B| ze0G3T^j}7vQhf=cem(&DP0Yw?V1)Fvy1k!d*xzMzHO-c1MqTmp31T$xy1US5Kzend zy6OaxKj_P01twNtVk6U-!^9jWHmbZ>H9YZXdW4?<4BuNpcOg9h%Tn!-oe5 zcn8if4())H>Qy{;vK>s@fuepJ^YLAdIa%(VC565xbv+U&bx`Rd{e7Wgwz#|^4AD^;u^?f+uw#IIl*J;jK$3~HU z0nwp+E!N-zQBOq+hr`OIN_oZWXUHJJ4$(DxDAMQ|ZNd(W* zCxgu@mmtBQ`M<*aZ&EpBs8YsvD3>b3cu(}9n?A(&eWkJL2l%Ja4ORQ*F6j9Oob`PK z?h+Mym*b3MZ@mrncc&1q*jvxY5kumYvbr{0s%)sc({|-O;`-t}B~n)hz*ybgm{+P7 z{bEl0=a14>Rs=zK-y#`*qzo=<#(eafMU5Dm#Y-Nudh+*|G%TKbV}!(0=L*>zOCrtDZKl!&FX!;hKFL~X8ZGVy3J;@!6i+? z^6zNt=}pS*9kP29r^Qdt;o%OMKF_=g4b%u}wO4t*ZPTDQnzcUvyjL1yh0EBo!Ox7j^jh(1d zyauyg`yrzQb&drn;Q_|zuxMko?=#qz6SCE6jGCJhnhQ7>^j&C9N-Y@4U_cs&0tYgS zkqpLV&`oBJ!kw~pa*stz$D3d^&~@MZUfHp6V*muwM`>%^ckx?`*6e2E(^lU_yOj~3 zxeQEyHqWHMA`tEipW`G1n2Z)Z@US%u&kB*fEnNS}W&`ul)zSNEgxWlqe{e9skSZLS zF1g?d5`YV$$$GgLj(vDc=#qW8TE%(U}h&8itYwC(>|nhnn~bsc8LYGDAE2cbX-gt)o}i=&%scu4#F kU4Gy^=T8X`g!wE2|5UiUO17nEUAIMl`_L<^xG!$`FZ6`B&j0`b diff --git a/bin/TEST.lab b/bin/TEST.lab index 4f080bf..aafeff7 100644 --- a/bin/TEST.lab +++ b/bin/TEST.lab @@ -48,16 +48,16 @@ __getKeyID = $0088 __iand = $0134 __icmpzero = $0138 __idivs = $013C -__idivs_ASM = $D2047D +__idivs_ASM = $D20499 __idivu = $0140 __idvrmu = $0144 __ildix = $0148 __ildiy = $014C __imul_b = $0150 __imuls = $0154 -__imuls_ASM = $D204B1 +__imuls_ASM = $D204CD __imulu = $0158 -__imulu_ASM = $D204B1 +__imulu_ASM = $D204CD __indcall = $015C __ineg = $0160 __inot = $0164 @@ -90,7 +90,7 @@ __lmuls = $01C8 __lmulu = $01CC __lneg = $01D0 __lnot = $01D4 -__LogLoop = $D1C7DA +__LogLoop = $D1C7F6 __longjmp = $0098 __lor = $01D8 __lrems = $01DC @@ -266,7 +266,7 @@ _ClearRect = $21218 _ClearRow = $21184 _CLine = $20B18 _CLines = $20B1C -_ClipRectangularRegion_ASM = $D20418 +_ClipRectangularRegion_ASM = $D20434 _CLn = $21374 _ClockOff = $215B4 _ClockOn = $215B8 @@ -317,7 +317,7 @@ _CommaErr = $20FAC _CommaErrF = $20FA8 _CommonKeys = $20AC4 _commonKeys_2 = $21940 -_ComputeOutcode_ASM = $D204EB +_ComputeOutcode_ASM = $D20507 _ConvDim = $20FE0 _ConvDim00 = $20FE4 _convOP1 = $20F70 @@ -665,8 +665,8 @@ _GetBaseVer = $21120 _GetBCOffSetIX = $21520 _GetBytePaged_Unpaged = $213B4 _GetCatalogItem = $214DC -_GetCharWidth = $D203A3 -_GetCharWidth_ASM = $D203B0 +_GetCharWidth = $D203BF +_GetCharWidth_ASM = $D203CC _GetColorValue = $21BAC _GetCon = $20428 _GetCon1 = $20424 @@ -698,10 +698,10 @@ _GetPrevTok = $20D88 _GetStatPtr = $20F20 _GetStringInput = $21320 _GetStringInput2 = $21324 -_GetStringWidth = $D2038B +_GetStringWidth = $D203A7 _GetSysInfo = $21558 -_GetTextX = $D20218 -_GetTextY = $D2021D +_GetTextX = $D20234 +_GetTextY = $D20239 _GetTokLen = $2086C _GetTokString = $20874 _GrBufClr = $2109C @@ -774,12 +774,12 @@ _JursorDown = $20D54 _JursorLeft = $20D48 _KBDscan = $20148 _KeyToString = $208B8 -_kskip = $D20A93 -_kskip2 = $D20AA8 -_kskip3 = $D20B24 -_kskip4 = $D20B71 -_kskip6 = $D20B82 -_kskip7 = $D20B89 +_kskip = $D20AAF +_kskip2 = $D20AC4 +_kskip3 = $D20B40 +_kskip4 = $D20B8D +_kskip6 = $D20B9E +_kskip7 = $D20BA5 _LABCOOR = $20BBC _LdHLInd_s = $20138 _LeftMore = $20AC8 @@ -803,7 +803,7 @@ _MakeRowCmd = $20890 _MantPa = $203C0 _Mat_EL_Div = $20924 _Max = $2019C -_Max_ASM = $D203FE +_Max_ASM = $D2041A _MaxMinLst = $20958 _MemChk = $204FC _MemClear = $210DC @@ -812,7 +812,7 @@ _MenCatRet = $208D8 _Menucatcommon = $208C0 _MenuEdKey = $208D4 _Min = $20198 -_Min_ASM = $D2040B +_Min_ASM = $D20427 _Minus1 = $201B8 _Mon = $20154 _MonErrHand = $2018C @@ -959,12 +959,12 @@ _PowerOff = $21484 _PPutAway = $20178 _PPutawayPrompt = $20174 _Prgrdlp = $20F80 -_PrintChar = $D20257 -_PrintChar_ASM = $D20261 -_PrintInt = $D20363 -_PrintLargeFont_ASM = $D202D0 -_PrintUInt = $D202FE -_PrintUInt_ASM = $D2030B +_PrintChar = $D20273 +_PrintChar_ASM = $D2027D +_PrintInt = $D2037F +_PrintLargeFont_ASM = $D202EC +_PrintUInt = $D2031A +_PrintUInt_ASM = $D20327 _PToR = $2026C _PullDownChk = $208BC _PUSH2BOPER = $21000 @@ -1085,8 +1085,8 @@ _Setbcutob = $21D64 _SetCatalog1Hook = $214C4 _SetCatalog2Hook = $213E8 _SetCursorHook = $213C4 -_SetCustomFontData = $D203CE -_SetCustomFontSpacing = $D203E1 +_SetCustomFontData = $D203EA +_SetCustomFontSpacing = $D203FD _SetcxReDispHook = $214F8 _Setdeuto0 = $21D88 _Setdeutoa = $21D68 @@ -1095,7 +1095,7 @@ _SetEmptyeditEqu = $20D7C _SetEmptyEditPtr = $20D80 _SetEStoFPS = $20498 _SetFontHook = $21454 -_SetFullScreenClipping_ASM = $D20462 +_SetFullScreenClipping_ASM = $D2047E _SetFuncMode = $21C6C _SetGetKeyHook = $213CC _SetGraphicsHook = $214AC @@ -1112,7 +1112,7 @@ _SetLocalizeHook = $213F0 _SetLocDEtoFP0 = $21124 _SetMat1 = $20988 _SetMenuHook = $21518 -_SetMonospaceFont = $D203F4 +_SetMonospaceFont = $D20410 _SetNum0 = $20380 _SetNumWIndow = $207EC _SetParserHook = $2149C @@ -1125,11 +1125,11 @@ _SetSilentLinkHook = $21544 _SetTblGraphDraw = $210D8 _settblrefs = $20CD0 _SetTextBGcolor = $21AE8 -_SetTextBGColorC = $D20222 +_SetTextBGColorC = $D2023E _SetTextFGBGcolors = $21AE4 -_SetTextFGColorC = $D2022D -_SetTextTransparentColorC = $D20238 -_SetTextXY = $D20243 +_SetTextFGColorC = $D20249 +_SetTextTransparentColorC = $D20254 +_SetTextXY = $D2025F _SetTitle = $20AAC _SetTokenHook = $213F8 _SetTraceHook = $21468 @@ -1159,7 +1159,7 @@ _Shr18a = $203A4 _ShrACC = $20398 _ShrdRnd = $203BC _ShrinkWIndow = $207FC -_SignedCompare_ASM = $D2045B +_SignedCompare_ASM = $D20477 _signextendbc = $21D78 _signextendde_broken = $21D7C _signextendhl_broken = $21D80 @@ -1252,8 +1252,8 @@ _wPutsEOL = $207E0 _WTOV = $20B98 _XftoI = $20BA8 _Xitof = $20BA0 -_xmax = $D209CF -_xmin = $D209C9 +_xmax = $D209EB +_xmin = $D209E5 _XName = $20488 _XPIXSET = $20BD0 _XrootY = $20B20 @@ -1261,8 +1261,8 @@ _XYCENT = $20BE8 _XYRND = $20B84 _XYRNDBOTH = $20B80 _YftoI = $20BA4 -_ymax = $D209D2 -_ymin = $D209CC +_ymax = $D209EE +_ymin = $D209E8 _YName = $2048C _YPIXSET = $20BCC _YRes = $20C68 @@ -1347,142 +1347,142 @@ cal_N = $D01F77 cal_PMT = $D01F92 cal_PV = $D01F89 cal_PY = $D01FA4 -CALL = $D1B676 -Camera = $D20A74 +CALL = $D1B609 +Camera = $D20A90 catalog1HookActive = $0003 catalog1HookPtr = $D025FF catalog2HookActive = $0006 catalog2HookPtr = $D0260B cellOverride = $0001 -Char000 = $D205C9 -Char001 = $D205D1 -Char002 = $D205D9 -Char003 = $D205E1 -Char004 = $D205E9 -Char005 = $D205F1 -Char006 = $D205F9 -Char007 = $D20601 -Char008 = $D20609 -Char009 = $D20611 -Char010 = $D20619 -Char011 = $D20621 -Char012 = $D20629 -Char013 = $D20631 -Char014 = $D20639 -Char015 = $D20641 -Char016 = $D20649 -Char017 = $D20651 -Char018 = $D20659 -Char019 = $D20661 -Char020 = $D20669 -Char021 = $D20671 -Char022 = $D20679 -Char023 = $D20681 -Char024 = $D20689 -Char025 = $D20691 -Char026 = $D20699 -Char027 = $D206A1 -Char028 = $D206A9 -Char029 = $D206B1 -Char030 = $D206B9 -Char031 = $D206C1 -Char032 = $D206C9 -Char033 = $D206D1 -Char034 = $D206D9 -Char035 = $D206E1 -Char036 = $D206E9 -Char037 = $D206F1 -Char038 = $D206F9 -Char039 = $D20701 -Char040 = $D20709 -Char041 = $D20711 -Char042 = $D20719 -Char043 = $D20721 -Char044 = $D20729 -Char045 = $D20731 -Char046 = $D20739 -Char047 = $D20741 -Char048 = $D20749 -Char049 = $D20751 -Char050 = $D20759 -Char051 = $D20761 -Char052 = $D20769 -Char053 = $D20771 -Char054 = $D20779 -Char055 = $D20781 -Char056 = $D20789 -Char057 = $D20791 -Char058 = $D20799 -Char059 = $D207A1 -Char060 = $D207A9 -Char061 = $D207B1 -Char062 = $D207B9 -Char063 = $D207C1 -Char064 = $D207C9 -Char065 = $D207D1 -Char066 = $D207D9 -Char067 = $D207E1 -Char068 = $D207E9 -Char069 = $D207F1 -Char070 = $D207F9 -Char071 = $D20801 -Char072 = $D20809 -Char073 = $D20811 -Char074 = $D20819 -Char075 = $D20821 -Char076 = $D20829 -Char077 = $D20831 -Char078 = $D20839 -Char079 = $D20841 -Char080 = $D20849 -Char081 = $D20851 -Char082 = $D20859 -Char083 = $D20861 -Char084 = $D20869 -Char085 = $D20871 -Char086 = $D20879 -Char087 = $D20881 -Char088 = $D20889 -Char089 = $D20891 -Char090 = $D20899 -Char091 = $D208A1 -Char092 = $D208A9 -Char093 = $D208B1 -Char094 = $D208B9 -Char095 = $D208C1 -Char096 = $D208C9 -Char097 = $D208D1 -Char098 = $D208D9 -Char099 = $D208E1 -Char100 = $D208E9 -Char101 = $D208F1 -Char102 = $D208F9 -Char103 = $D20901 -Char104 = $D20909 -Char105 = $D20911 -Char106 = $D20919 -Char107 = $D20921 -Char108 = $D20929 -Char109 = $D20931 -Char110 = $D20939 -Char111 = $D20941 -Char112 = $D20949 -Char113 = $D20951 -Char114 = $D20959 -Char115 = $D20961 -Char116 = $D20969 -Char117 = $D20971 -Char118 = $D20979 -Char119 = $D20981 -Char120 = $D20989 -Char121 = $D20991 -Char122 = $D20999 -Char123 = $D209A1 -Char124 = $D209A9 -Char125 = $D209B1 -Char126 = $D209B9 -Char127 = $D209C1 -CharSpacing_ASM = $D20523 +Char000 = $D205E5 +Char001 = $D205ED +Char002 = $D205F5 +Char003 = $D205FD +Char004 = $D20605 +Char005 = $D2060D +Char006 = $D20615 +Char007 = $D2061D +Char008 = $D20625 +Char009 = $D2062D +Char010 = $D20635 +Char011 = $D2063D +Char012 = $D20645 +Char013 = $D2064D +Char014 = $D20655 +Char015 = $D2065D +Char016 = $D20665 +Char017 = $D2066D +Char018 = $D20675 +Char019 = $D2067D +Char020 = $D20685 +Char021 = $D2068D +Char022 = $D20695 +Char023 = $D2069D +Char024 = $D206A5 +Char025 = $D206AD +Char026 = $D206B5 +Char027 = $D206BD +Char028 = $D206C5 +Char029 = $D206CD +Char030 = $D206D5 +Char031 = $D206DD +Char032 = $D206E5 +Char033 = $D206ED +Char034 = $D206F5 +Char035 = $D206FD +Char036 = $D20705 +Char037 = $D2070D +Char038 = $D20715 +Char039 = $D2071D +Char040 = $D20725 +Char041 = $D2072D +Char042 = $D20735 +Char043 = $D2073D +Char044 = $D20745 +Char045 = $D2074D +Char046 = $D20755 +Char047 = $D2075D +Char048 = $D20765 +Char049 = $D2076D +Char050 = $D20775 +Char051 = $D2077D +Char052 = $D20785 +Char053 = $D2078D +Char054 = $D20795 +Char055 = $D2079D +Char056 = $D207A5 +Char057 = $D207AD +Char058 = $D207B5 +Char059 = $D207BD +Char060 = $D207C5 +Char061 = $D207CD +Char062 = $D207D5 +Char063 = $D207DD +Char064 = $D207E5 +Char065 = $D207ED +Char066 = $D207F5 +Char067 = $D207FD +Char068 = $D20805 +Char069 = $D2080D +Char070 = $D20815 +Char071 = $D2081D +Char072 = $D20825 +Char073 = $D2082D +Char074 = $D20835 +Char075 = $D2083D +Char076 = $D20845 +Char077 = $D2084D +Char078 = $D20855 +Char079 = $D2085D +Char080 = $D20865 +Char081 = $D2086D +Char082 = $D20875 +Char083 = $D2087D +Char084 = $D20885 +Char085 = $D2088D +Char086 = $D20895 +Char087 = $D2089D +Char088 = $D208A5 +Char089 = $D208AD +Char090 = $D208B5 +Char091 = $D208BD +Char092 = $D208C5 +Char093 = $D208CD +Char094 = $D208D5 +Char095 = $D208DD +Char096 = $D208E5 +Char097 = $D208ED +Char098 = $D208F5 +Char099 = $D208FD +Char100 = $D20905 +Char101 = $D2090D +Char102 = $D20915 +Char103 = $D2091D +Char104 = $D20925 +Char105 = $D2092D +Char106 = $D20935 +Char107 = $D2093D +Char108 = $D20945 +Char109 = $D2094D +Char110 = $D20955 +Char111 = $D2095D +Char112 = $D20965 +Char113 = $D2096D +Char114 = $D20975 +Char115 = $D2097D +Char116 = $D20985 +Char117 = $D2098D +Char118 = $D20995 +Char119 = $D2099D +Char120 = $D209A5 +Char121 = $D209AD +Char122 = $D209B5 +Char123 = $D209BD +Char124 = $D209C5 +Char125 = $D209CD +Char126 = $D209D5 +Char127 = $D209DD +CharSpacing_ASM = $D2053F checkBatteryLevelFirst = $0000 checkCatalog2HookVer = $0003 ChiStat = $750A7C4 @@ -1548,9 +1548,8 @@ cxTableSet = $004B cxUnGroup = $005A dBKeyFlags = $003D DCONV = $0001 -DefaultCharSpacing_ASM = $D20529 -DefaultTextData_ASM = $D205C9 -DELTA = $1000 +DefaultCharSpacing_ASM = $D20545 +DefaultTextData_ASM = $D205E5 DELTAXt = $0026 DELTAYt = $0027 DF = $750A7D6 @@ -1565,13 +1564,13 @@ drawBGColor = $D026AA drawColorCode = $D026AE drawFGColor = $D026AC drawingHookActive = $0007 -dzx7t_copy_byte_loop = $D1C55E -dzx7t_exit = $D1C5C0 -dzx7t_len_size_loop = $D1C571 -dzx7t_len_value_loop = $D1C57E -dzx7t_len_value_start = $D1C58A -dzx7t_main_loop = $D1C560 -dzx7t_offset_end = $D1C5B7 +dzx7t_copy_byte_loop = $D1C57A +dzx7t_exit = $D1C5DC +dzx7t_len_size_loop = $D1C58D +dzx7t_len_value_loop = $D1C59A +dzx7t_len_value_start = $D1C5A6 +dzx7t_main_loop = $D1C57C +dzx7t_offset_end = $D1C5D3 E_AppErr1 = $00AB E_AppErr2 = $00AC E_Application = $00AA @@ -1641,7 +1640,7 @@ EOSSTART = $0000 EquObj = $0003 errNo = $D008DF errSP = $D008E0 -EulerAngle = $D20A68 +EulerAngle = $D20A84 extraHookFlags = $003E extraIndic = $0000 F_DF = $0000 @@ -1729,10 +1728,10 @@ hookflags2 = $0034 hookflags3 = $0035 hookflags4 = $0036 IBACK_CULL = $0001 -IDeltaX0 = $D1ABBD -IDeltaX1 = $D1ABCE -IDeltaY0 = $D1ABC5 -IDeltaY1 = $D1ABD6 +IDeltaX0 = $D1AB50 +IDeltaX1 = $D1AB61 +IDeltaY0 = $D1AB58 +IDeltaY1 = $D1AB69 IDis03h = $0004 IDis82h = $0002 IDis83h = $0003 @@ -1752,29 +1751,29 @@ interruptFlags = $0016 ioDelFlag = $0000 IPOINT = $0001 IQUADRI = $0004 -IQuaternionDot = $D1B167 -IRasterContinue = $D1AC04 -IRasterEdge0 = $D1AB32 -IRasterEdge1 = $D1AB01 -IRasterEdge2 = $D1AB8E -IRasterInverted = $D1AC13 -IRasterNoEdgeWrite = $D1AB1C -IRasterNoPixel = $D1AC07 -IRasterRBG8 = $D1AC15 -IRasterSize1 = $D1AC26 -IRasterSwap0 = $D1AAB0 -IRasterSwap1 = $D1AABA -IRasterSwap2 = $D1AABF -IRasterTriangleInner = $D1ABBC +IQuaternionDot = $D1B0FA +IRasterContinue = $D1AB97 +IRasterEdge0 = $D1AAC5 +IRasterEdge1 = $D1AA94 +IRasterEdge2 = $D1AB21 +IRasterInverted = $D1ABA6 +IRasterNoEdgeWrite = $D1AAAF +IRasterNoPixel = $D1AB9A +IRasterRBG8 = $D1ABA8 +IRasterSize1 = $D1ABB9 +IRasterSwap0 = $D1AA43 +IRasterSwap1 = $D1AA4D +IRasterSwap2 = $D1AA52 +IRasterTriangleInner = $D1AB4F is24Hour = $0002 -ISMC_Code0 = $D1ABC8 -ISMC_Code1 = $D1ABD9 +ISMC_Code0 = $D1AB5B +ISMC_Code1 = $D1AB6C isYMDMode = $0001 ITRIANGLE = $0003 ITRIANGLE_FAN = $0083 -IValueX1 = $D1AB7D -IValueX2 = $D1AB79 -IValueY1 = $D1ABAC +IValueX1 = $D1AB10 +IValueX2 = $D1AB0C +IValueY1 = $D1AB3F IVERTEX_BUFFER = $D08000 k0 = $008E k1 = $008F @@ -2602,7 +2601,7 @@ kvnA = $00FA kvSendType = $001F kvw = $00B0 kw0 = $003B -kwait = $D20A7B +kwait = $D20A97 kWebOff = $00F0 kWebOn = $00EF kWhile = $00D1 @@ -2700,7 +2699,7 @@ Lalpha = $00BB Lampersand = $0026 Langle = $0013 Lapostrophe = $0027 -LaraMatrix = $D20A59 +LaraMatrix = $D20A75 Larea = $00D3 Lasterisk = $002A lastNewApp = $005A @@ -3027,12 +3026,12 @@ mMemResetRAMAll = $0023 mMemResetROMAll = $0026 mMemResetROMApps = $0025 mMemResetROMVars = $0024 -ModelMatrix = $D20A4A +ModelMatrix = $D20A66 MODES = $0073 MODESA = $0064 monAbandon = $0004 monFlags = $0001 -MonoFlag_SMC = $D20266 +MonoFlag_SMC = $D20282 mouseFlag1 = $002C mouseFlag2 = $002D mpBlLevel = $F60024 @@ -3129,12 +3128,12 @@ noDataWrite = $0003 noTempDelete = $0006 notMDYMode = $0000 noUSBHostInit = $0003 -Num1 = $D20357 -Num2 = $D20359 +Num1 = $D20373 +Num2 = $D20375 numMode = $000A numOP1 = $0000 NUMS = $0030 -Offset_SMC = $D2031A +Offset_SMC = $D20336 old_location = $0000 onFlags = $0009 onInterrupt = $0004 @@ -3158,17 +3157,17 @@ OPBase = $D02590 openLibActive = $0004 OPS = $D02593 OS__FLAGS = $D00080 -p1 = $D1C635 -p1x = $D1C5F1 -p2 = $D1C64C -p3 = $D1C690 -p3x = $D1C667 -p5 = $D1C6BB -p5x = $D1C6D2 -p6 = $D1C6ED -p7 = $D1C716 -p8 = $D1C72D -p8x = $D1C748 +p1 = $D1C651 +p1x = $D1C60D +p2 = $D1C668 +p3 = $D1C6AC +p3x = $D1C683 +p5 = $D1C6D7 +p5x = $D1C6EE +p6 = $D1C709 +p7 = $D1C732 +p8 = $D1C749 +p8x = $D1C764 pagedGetPtr = $D025A3 parseInput = $0001 parserHookActive = $0001 @@ -3207,9 +3206,9 @@ PLOTSTARTt = $001B PlotStep = $D01EE7 PLOTSTEPt = $0034 polarMode = $0007 -posX = $D209DE -posY = $D209E0 -posZ = $D209E2 +posX = $D209FA +posY = $D209FC +posZ = $D209FE preClrForMode = $0000 ProgObj = $0005 progPtr = $D0259D @@ -3221,15 +3220,15 @@ pRtcRange = $8000 PStat = $750A7A9 pTemp = $D0259A pUsbRange = $3000 -px = $D1C60C +px = $D1C628 Q1 = $D01233 Q3 = $D0123C QuadA = $D01245 QuadB = $D0124E QuadC = $D01257 QuartE = $D01269 -Quaternion = $D20A1A -QuatMatrix = $D20A26 +Quaternion = $D20A36 +QuatMatrix = $D20A42 rawKeyHookActive = $0005 rawKeyHookPtr = $D025DB rclFlag = $000E @@ -3240,11 +3239,11 @@ regraphHookActive = $0006 regraphHookPtr = $D025F0 resetOnPowerOn = $0002 reTable = $0006 -RR = $D1C398 -RR2 = $D1C3CE +RR = $D1C3B4 +RR2 = $D1C3EA saIndic = $0001 saveSScreen = $D0EA1F -ScaleMatrix = $D20A08 +ScaleMatrix = $D20A24 scrapMem = $D02AD7 secondTimerEnabled = $0000 selfTestFlag = $0024 @@ -3478,14 +3477,14 @@ tDrawLine = $0006 tDrInv = $00A8 tDSL = $00DB tDT = $0012 -tDWP = $D1B817 +tDWP = $D1B7AA tE = $0045 tE_DF = $003A tE_MS = $003C tE_SS = $003B tee = $003B tElse = $00D0 -Temp = $D209E4 +Temp = $D20A00 tempMem = $D02587 TempProgObj = $0016 tEnd = $00D4 @@ -3501,24 +3500,24 @@ tExpr = $002A tExprOff = $0051 tExprOn = $0050 textBGcolor = $D02688 -TextBGColor_SMC = $D202B4 -TextData_ASM = $D20526 +TextBGColor_SMC = $D202D0 +TextData_ASM = $D20542 textEraseBelow = $0001 textFGcolor = $D0268A -TextFGColor_SMC = $D202BA +TextFGColor_SMC = $D202D6 textFlags = $0005 textInsMode = $0004 textInverse = $0003 -TextName = $D209FE +TextName = $D20A1A textScrolled = $0002 textShadow = $D006C0 tExtTok = $00EF -TextTransColor_SMC = $D202BC -Texture = $D20A05 -texture_frame = $D20A71 +TextTransColor_SMC = $D202D8 +Texture = $D20A21 +texture_frame = $D20A8D textWrite = $0007 -TextXPos_SMC = $D20275 -TextYPos_SMC = $D20283 +TextXPos_SMC = $D20291 +TextYPos_SMC = $D2029F tF = $0046 tF_DF = $0037 tF_MS = $0039 @@ -3785,7 +3784,7 @@ TMINt = $000E tMinX = $0008 tMinY = $000A tModBox = $005A -tmpWidth = $D209D5 +tmpWidth = $D209F1 tmRow = $0017 tmRowPlus = $0018 tMul = $0082 @@ -3902,10 +3901,10 @@ tRegEq = $0001 tRemainder = $0032 tRepeat = $00D2 tReturn = $00D5 -Triangle = $D209FB +Triangle = $D20A17 triangle_count = $D1A9A5 -TriangleName = $D209F4 -TRIDATA = $D22914 +TriangleName = $D20A10 +TRIDATA = $D22930 trigDeg = $0002 trigFlags = $0000 tRoot = $0022 @@ -3914,7 +3913,7 @@ tRowPlus = $0016 tRowSwap = $0015 tRParen = $0011 tRRef = $002E -tRT = $D1B7F3 +tRT = $D1B786 tRToPo = $001C tRToPr = $001B TRUE = $0001 @@ -4020,7 +4019,7 @@ tThetaStep = $0023 tThin = $0074 tTimeCnv = $0005 tTIntVal = $0048 -ttLT = $D1B806 +ttLT = $D1B799 tTmax = $000F tTmin = $000E tToAbc = $0003 @@ -4043,7 +4042,7 @@ tunMin = $0020 tUnused01 = $00EF tuPlotStart = $001C tuPlotStep = $0035 -tUPP = $D1B827 +tUPP = $D1B7BA tuRecuru0 = $0008 tuRecuru02 = $0039 tuRecurv0 = $0009 @@ -4156,7 +4155,7 @@ un2 = $D01F0B UNARY = $00B0 UNARYLR = $00BC UndefObj = $000E -UnitVector = $D20A11 +UnitVector = $D20A2D UnknownEquObj = $000A UnknownObj = $0009 unMax = $D01DD6 @@ -4174,7 +4173,7 @@ USBFlag4 = $0043 usbReceiveZone1 = $0002 usbTimeoutError = $0000 useFastCirc = $0004 -UseLargeFont_SMC = $D202A4 +UseLargeFont_SMC = $D202C0 useRclQueueEnd = $0002 userMem = $D1A881 useTokensInString = $0004 @@ -4201,9 +4200,9 @@ v0 = $D01EBA v02 = $D01ED5 varGraphRef = $0006 varTypeMask = $001F -Vertex = $D209F1 -VERTEXDATA = $D20BB6 -VertexName = $D209EA +Vertex = $D20A0D +VERTEXDATA = $D20BD2 +VertexName = $D20A06 vertSplit = $0001 vn1 = $D01F14 vn2 = $D01F1D @@ -4223,11 +4222,11 @@ VX_CALL1_NEG = $001A VX_CALL1_POS = $0019 VX_CALL_EXIT = $004C VX_CALL_NULL = $0026 -VX_CLIP_VERTEX0 = $D1B5C1 -VX_CLIP_VERTEX1 = $D1B5D3 +VX_CLIP_VERTEX0 = $D1B554 +VX_CLIP_VERTEX1 = $D1B566 VX_COLOR_LOW_BIT = $0029 VX_COLOR_LUT = $D00000 -VX_COLOR_LUT_DATA = $D1DF53 +VX_COLOR_LUT_DATA = $D1DF6F VX_DATA_VERTEX_SIZE = $0009 VX_DEPTH_BITS = $0018 VX_DEPTH_BUCKET = $D03200 @@ -4261,7 +4260,7 @@ VX_GREEN_BITS = $0007 VX_INDEX0 = $0000 VX_INDEX1 = $0003 VX_INDEX2 = $0006 -VX_INVERSE_TABLE = $D1DCD3 +VX_INVERSE_TABLE = $D1DCEF VX_LCD_BUFFER = $E30010 VX_LCD_CTRL = $E30018 VX_LCD_ICR = $E30028 @@ -4304,17 +4303,17 @@ VX_MATRIX_TY = $000C VX_MATRIX_TZ = $000F VX_MAX_BATCH = $0040 VX_MAX_PATCH_SIZE = $0010 -VX_MAX_RLE = $D1C47F +VX_MAX_RLE = $D1C49B VX_MAX_TMP_VERTEX = $0008 VX_MAX_TRIANGLE = $1000 VX_MAX_VERTEX = $0800 VX_MODELGUARD = $0001 -VX_PATCH_INPUT = $D1B4BD -VX_PATCH_OUTPUT = $D1B4FD +VX_PATCH_INPUT = $D1B450 +VX_PATCH_OUTPUT = $D1B490 VX_PIXEL_SHADER_CODE = $E10010 VX_PIXEL_SHADER_CONSTANT = $D00000 -VX_PIXEL_SHADER_COPY = $D1D763 -VX_PIXEL_SHADER_DATA = $D1C803 +VX_PIXEL_SHADER_COPY = $D1D77F +VX_PIXEL_SHADER_DATA = $D1C81F VX_PIXEL_SHADER_SIZE = $0040 VX_PIXEL_SHADER_SUBSIZE = $000A VX_PS_1.0 = $0001 @@ -4350,9 +4349,9 @@ VX_SCREEN_HEIGHT = $00F0 VX_SCREEN_WCENTER = $00A0 VX_SCREEN_WIDTH = $0140 VX_SHADER_INTERPOLATION_CODE = $E30800 -VX_SHADER_INTERPOLATION_COPY = $D1D403 +VX_SHADER_INTERPOLATION_COPY = $D1D41F VX_SHADER_VERTEX_SIZE = $0010 -VX_SIN_LUT_DATA = $D1FF53 +VX_SIN_LUT_DATA = $D1FF6F VX_SIN_TABLE = $D02000 VX_SIN_TABLE_SIZE = $0200 VX_TIMER_COUNT = $F20000 @@ -4369,13 +4368,13 @@ VX_VERTEX_NORMAL = $0006 VX_VERTEX_NX = $0006 VX_VERTEX_NY = $0007 VX_VERTEX_NZ = $0008 -VX_VERTEX_POOL = $D1B53D +VX_VERTEX_POOL = $D1B4D0 VX_VERTEX_POSITION = $0000 VX_VERTEX_RX = $0007 VX_VERTEX_RY = $000A VX_VERTEX_RZ = $000D VX_VERTEX_SHADER_CODE = $E30800 -VX_VERTEX_SHADER_COPY = $D1BA29 +VX_VERTEX_SHADER_COPY = $D1B9BC VX_VERTEX_SHADER_DATA = $E30800 VX_VERTEX_SHADER_SIZE = $0400 VX_VERTEX_SX = $0002 @@ -4386,145 +4385,144 @@ VX_VERTEX_VY = $0002 VX_VERTEX_VZ = $0004 VX_VRAM = $E30800 VX_VS_1.x = $0001 -vxBatchData = $D1BDAA -vxBatchOffset = $D1BD47 -vxBatchOffset0 = $D1C02C -vxBlendRBG = $D1B403 -vxBloomFilter = $D1C5C4 -vxBloomLoop = $D1C5CC -VXBLURLOOP = $D1C756 -vxBufferOffset = $D1BCEE -vxBufferOffsetAddRZ = $D1BD12 -vxClampZ = $D1B91F -vxClearBuffer = $D1B3BF -vxClipCheck0 = $D1B6D3 -vxClipContinueX = $D1B7D0 -vxClipDistance = $D1B675 -vxClipDivide = $D1B912 -vxClipDraw = $D1B672 -vxClipEnd = $D1B651 -vxClipError0 = $D1BA04 -vxClipError1 = $D1BA0E -vxClipError2 = $D1BA17 -vxClipError3 = $D1BA21 -vxClipFactor = $D1B88C -vxClipFrustrumCode = $D1B9F2 -vxClipLoop = $D1B65B -vxClipMixByte = $D1B835 -vxClipMixWord = $D1B845 -vxClipNextX = $D1B9A4 -vxClipNextXCarry = $D1B9A3 -vxClipNextY = $D1B943 -vxClipNextYCarry = $D1B942 -vxClipPlanePolygon = $D1B679 -vxClipSutherHodgmanLoop = $D1B6AB -vxClipTriangle = $D1B5E9 -vxClipWriteX = $D1B9E7 -vxClipWriteY = $D1B979 -vxCmdBackfaceCull = $D1C361 -vxCmdBackfaceCull2 = $D1C3D4 -vxCmdComputeBone = $D1C0F1 -vxCmdDepthCompute = $D1C19C -vxCmdDepthPositive = $D1C1D2 -vxCmdDepthSort = $D1C173 -vxCmdDraw = $D1BFD4 +vxBatchData = $D1BD3D +vxBatchOffset = $D1BCDA +vxBatchOffset0 = $D1C048 +vxBlendRBG = $D1B396 +vxBloomFilter = $D1C5E0 +vxBloomLoop = $D1C5E8 +VXBLURLOOP = $D1C772 +vxBufferOffset = $D1BC81 +vxBufferOffsetAddRZ = $D1BCA5 +vxClampZ = $D1B8B2 +vxClearBuffer = $D1B352 +vxClipCheck0 = $D1B666 +vxClipContinueX = $D1B763 +vxClipDistance = $D1B608 +vxClipDivide = $D1B8A5 +vxClipDraw = $D1B605 +vxClipEnd = $D1B5E4 +vxClipError0 = $D1B997 +vxClipError1 = $D1B9A1 +vxClipError2 = $D1B9AA +vxClipError3 = $D1B9B4 +vxClipFactor = $D1B81F +vxClipFrustrumCode = $D1B985 +vxClipLoop = $D1B5EE +vxClipMixByte = $D1B7C8 +vxClipMixWord = $D1B7D8 +vxClipNextX = $D1B937 +vxClipNextXCarry = $D1B936 +vxClipNextY = $D1B8D6 +vxClipNextYCarry = $D1B8D5 +vxClipPlanePolygon = $D1B60C +vxClipSutherHodgmanLoop = $D1B63E +vxClipTriangle = $D1B57C +vxClipWriteX = $D1B97A +vxClipWriteY = $D1B90C +vxCmdBackfaceCull = $D1C37D +vxCmdBackfaceCull2 = $D1C3F0 +vxCmdComputeBone = $D1C10D +vxCmdDepthCompute = $D1C1B8 +vxCmdDepthPositive = $D1C1EE +vxCmdDepthSort = $D1C18F +vxCmdDraw = $D1BFF0 vxCmdExecute = $D1BF00 vxCmdExeLoop = $D1BF43 -vxCmdFillBucket2 = $D1C337 -vxCmdFillBucketInner0 = $D1C247 -vxCmdFillBucketInner1 = $D1C2C0 -vxCmdFillBucketOuter0 = $D1C244 -vxCmdFillBucketOuter1 = $D1C2BD +vxCmdFillBucket2 = $D1C353 +vxCmdFillBucketInner0 = $D1C263 +vxCmdFillBucketInner1 = $D1C2DC +vxCmdFillBucketOuter0 = $D1C260 +vxCmdFillBucketOuter1 = $D1C2D9 vxCmdFormatCol = $D1BF59 -vxCmdFormatTex = $D1BF7C -vxCmdReadBuffer0 = $D1C2E9 -vxCmdReadBuffer1 = $D1C270 -vxCmdRestoreBucket1 = $D1C2A3 -vxCmdRestoreBucket2 = $D1C31C -vxCmdRestoreBucketLoop0 = $D1C21A -vxCmdStream = $D1C062 -vxCmdStreamLoop = $D1C0DB -vxCmdStreamLoopBack = $D1C0E9 -vxCmdWriteBuffer0 = $D1C2D4 -vxCmdWriteBuffer1 = $D1C25B -vxConvolveBlur = $D1C74E -vxCopyData = $D1C472 -vxCopyImage = $D1C466 -vxCopyLoop = $D1C782 -vxCos = $D1B1BD -vxCreateMemoryPool = $D1C4B2 -vxCrossProduct = $D1B246 +vxCmdFormatTex = $D1BF98 +vxCmdReadBuffer0 = $D1C305 +vxCmdReadBuffer1 = $D1C28C +vxCmdRestoreBucket1 = $D1C2BF +vxCmdRestoreBucket2 = $D1C338 +vxCmdRestoreBucketLoop0 = $D1C236 +vxCmdStream = $D1C07E +vxCmdStreamLoop = $D1C0F7 +vxCmdStreamLoopBack = $D1C105 +vxCmdWriteBuffer0 = $D1C2F0 +vxCmdWriteBuffer1 = $D1C277 +vxConvolveBlur = $D1C76A +vxCopyData = $D1C48E +vxCopyImage = $D1C482 +vxCopyLoop = $D1C79E +vxCos = $D1B150 +vxCreateMemoryPool = $D1C4CE +vxCrossProduct = $D1B1D9 vxDepthSortTemp = $E30014 -vxDestroyMemoryPool = $D1C50B -vxDiscard = $D1C036 +vxDestroyMemoryPool = $D1C527 +vxDiscard = $D1C052 vxDivideNext0 = $E309E3 -vxDotProduct = $D1B2F1 -vxDownDistance = $D1B817 -vxEdgeRentring = $D1B7AD -vxEngineInit = $D20153 -vxEngineQuit = $D201D3 -vxFileUnarchived = $D1C463 -vxFindFile = $D1C44B -vxFlatCyclicLoop = $D1AA07 -vxFlatDiscard = $D1AA8A +vxDotProduct = $D1B284 +vxDownDistance = $D1B7AA +vxEdgeRentring = $D1B740 +vxEngineInit = $D2016F +vxEngineQuit = $D201EF +vxFileUnarchived = $D1C47F +vxFindFile = $D1C467 +vxFlatCyclicLoop = $D1AA05 vxFlatPolygon = $D1A9FF -vxFlatTriangle = $D1AA97 -vxFlatTrianglePC = $D1AAA8 -vxFlushLCD = $D1B3D1 -vxFormatOffset = $D1BD4D -vxFormatOffset0 = $D1C038 +vxFlatTriangle = $D1AA2A +vxFlatTriangleNoClip = $D1AA3B +vxFlushLCD = $D1B364 +vxFormatOffset = $D1BCE0 +vxFormatOffset0 = $D1C054 vxFramebuffer = $E30014 -vxfTransform = $D1ADE1 -vxGeometryBucket = $D1BD43 -vxGeometryDepthClamp = $D1BD33 -vxGeometryDiscard = $D1BD4B -vxGeometryPass = $D1BD12 -vxGeometryShader = $D1BCEC -vxGeometrySize = $D1BDA7 -vxHSBDepthSkip = $D1C1EE -vxIdentityMatrix = $D1AC31 -vxIdentityQuaternion = $D1AF40 -vxImageSubCopy = $D1C775 -vxKeyAnimation = $D1BDF0 -vxLeftDistance = $D1B806 -vxLength = $D1B339 -vxLerpRBG = $D1B452 +vxfTransform = $D1AD74 +vxGeometryBucket = $D1BCD6 +vxGeometryDepthClamp = $D1BCC6 +vxGeometryDiscard = $D1BCDE +vxGeometryPass = $D1BCA5 +vxGeometryShader = $D1BC7F +vxGeometrySize = $D1BD3A +vxHSBDepthSkip = $D1C20A +vxIdentityMatrix = $D1ABC4 +vxIdentityQuaternion = $D1AED3 +vxImageSubCopy = $D1C791 +vxKeyAnimation = $D1BD83 +vxLeftDistance = $D1B799 +vxLength = $D1B2CC +vxLerpRBG = $D1B3E5 vxLight0 = $E30812 -vxLight0Cache = $D1BDE6 -vxLitRBG = $D1B413 -vxLoadPaletteLoop = $D1B3A0 -vxLockWrite = $D1C549 -vxMatrixColLoop = $D1ACDE -vxMatrixLightEarlyOut = $D1ADD9 -vxMatrixLightLoop = $D1AD87 -vxMatrixLightning = $D1AD84 -vxMatrixLoadIdentity = $D1AC43 -vxMatrixMlt = $D1ACD9 -vxMatrixRotationX = $D1AC55 -vxMatrixRotationY = $D1ACAD -vxMatrixRotationZ = $D1AC81 -vxMatrixRowLoop = $D1ACE1 -vxMatrixTransform = $D1AD3C -vxMatrixTranspose = $D1AD5F -vxMemorySafeErase = $D1C502 -vxMipmapLOD = $D1C791 -vxMixWrite = $D1B5E5 -vxMltFP8 = $D1B218 -vxMM0 = $D1B6B5 -vxMM1 = $D1B6BD -vxMM2 = $D1B6E0 +vxLight0Cache = $D1BD79 +vxLitRBG = $D1B3A6 +vxLoadPaletteLoop = $D1B333 +vxLockWrite = $D1C565 +vxMatrixColLoop = $D1AC71 +vxMatrixLightEarlyOut = $D1AD6C +vxMatrixLightLoop = $D1AD1A +vxMatrixLightning = $D1AD17 +vxMatrixLoadIdentity = $D1ABD6 +vxMatrixMlt = $D1AC6C +vxMatrixRotationX = $D1ABE8 +vxMatrixRotationY = $D1AC40 +vxMatrixRotationZ = $D1AC14 +vxMatrixRowLoop = $D1AC74 +vxMatrixTransform = $D1ACCF +vxMatrixTranspose = $D1ACF2 +vxMemorySafeErase = $D1C51E +vxMipmapLOD = $D1C7AD +vxMixWrite = $D1B578 +vxMltFP8 = $D1B1AB +vxMM0 = $D1B648 +vxMM1 = $D1B650 +vxMM2 = $D1B673 vxModelView = $E30800 -vxModelViewCache = $D1BDB0 -vxModelWorld = $D1BDC2 -vxNClip = $D1BD55 -vxNewSize = $D1B5BD +vxModelViewCache = $D1BD43 +vxModelWorld = $D1BD55 +vxNClip = $D1BCE8 +vxNewSize = $D1B550 vxNext0 = $E30A36 -vxNextPlane0 = $D1B61B -vxNextPlane1 = $D1B62D -vxNextPlane2 = $D1B63F -vxNormalize = $D1B338 -vxOptimizedKernel = $D1C5D1 -vxPass = $D1C02B +vxNextPlane0 = $D1B5AE +vxNextPlane1 = $D1B5C0 +vxNextPlane2 = $D1B5D2 +vxNormalize = $D1B2CB +vxOptimizedKernel = $D1C5ED +vxPass = $D1C047 vxPerspectiveClip0 = $E30A86 vxPerspectiveClip1 = $E30A92 vxPerspectiveClip2 = $E30A9C @@ -4532,31 +4530,31 @@ vxPerspectiveClip3 = $E30AA8 vxPerspectiveClip4 = $E30AB2 vxPixelShader = $E10010 vxPixelShaderExit = $E30B5B -vxPixelShaderExitLUT = $D1DCA6 -vxPixelShaderLengthLUT = $D1DA26 +vxPixelShaderExitLUT = $D1DCC2 +vxPixelShaderLengthLUT = $D1DA42 vxPlaneBit0 = $0080 vxPlaneBit1 = $0040 vxPlaneBit2 = $0020 vxPlaneBit3 = $0010 vxPlaneBit4 = $0008 vxPosition = $D03406 -vxQuatDivide = $D1B08B -vxQuaternionConjugate = $D1B068 -vxQuaternionGetMatrix = $D1B08C -vxQuaternionLoadIdentity = $D1AF4C -vxQuaternionLoadRotation = $D1AF5E -vxQuaternionMagnitude = $D1B042 -vxQuaternionMlt = $D1AF5F -vxQuaternionNormalize = $D1B08A -vxQuaternionRotationAxis = $D1B13A -vxQuaternionSlerp = $D1B199 -vxQuatIndexZero = $D1B1E5 -vxQuatMlt = $D1B19A -vxQuatNegResultCst = $D1B1EE -vxQuatSquare = $D1B1AB +vxQuatDivide = $D1B01E +vxQuaternionConjugate = $D1AFFB +vxQuaternionGetMatrix = $D1B01F +vxQuaternionLoadIdentity = $D1AEDF +vxQuaternionLoadRotation = $D1AEF1 +vxQuaternionMagnitude = $D1AFD5 +vxQuaternionMlt = $D1AEF2 +vxQuaternionNormalize = $D1B01D +vxQuaternionRotationAxis = $D1B0CD +vxQuaternionSlerp = $D1B12C +vxQuatIndexZero = $D1B178 +vxQuatMlt = $D1B12D +vxQuatNegResultCst = $D1B181 +vxQuatSquare = $D1B13E vxRasterPixel = $D1A9EC vxRasterPixelEntry = $D1A9F0 -vxReflect = $D1B33A +vxReflect = $D1B2CD vxRegister01Direction = $E30888 vxRegister01End = $E308BA vxRegister01ErrorAdvance = $E3088D @@ -4592,28 +4590,28 @@ vxRegisterDerivativeDY2 = $E30AA2 vxRegisterDerivativeNull = $E309FA vxRegisterGradientEnd = $E30B3C vxRegisterGradientLoop = $E30B1F -vxResetPalette = $D1B39A -vxRightDistance = $D1B7F3 -vxRLECopyEnd = $D1C4A5 -vxRLECopyRow = $D1C4AB -vxRLECopyToken = $D1C497 -vxRLELoop = $D1C47E -vxSetPalette = $D1B3B4 +vxResetPalette = $D1B32D +vxRightDistance = $D1B786 +vxRLECopyEnd = $D1C4C1 +vxRLECopyRow = $D1C4C7 +vxRLECopyToken = $D1C4B3 +vxRLELoop = $D1C49A +vxSetPalette = $D1B347 vxShaderGeneralInterpolation = $E10026 vxShaderOffset = $E30B0D vxShaderTexturePage = $E30B03 vxShaderUniform0 = $E30B4C -vxSin = $D1B1BE -vxSinNegate = $D1B1D9 -vxSinSkp1 = $D1B1C7 -vxSqAbsSkp = $D1B1FD -vxSquareFP8 = $D1B1F3 -vxSubmission0 = $D1C008 -vxSubmissionQueue = $D1BDA4 -vxSwapLCD = $D1B3F0 -vxTestAABB = $D1C790 -vxTextureCyclicLoop = $D1DCAE -vxTexturePolygon = $D1DCA8 +vxSin = $D1B151 +vxSinNegate = $D1B16C +vxSinSkp1 = $D1B15A +vxSqAbsSkp = $D1B190 +vxSquareFP8 = $D1B186 +vxSubmission0 = $D1C024 +vxSubmissionQueue = $D1BD37 +vxSwapLCD = $D1B383 +vxTestAABB = $D1C7AC +vxTextureCyclicLoop = $D1DCCA +vxTexturePolygon = $D1DCC4 vxTextureSwap0 = $E30815 vxTextureSwap1 = $E3081F vxTextureSwap2 = $E30824 @@ -4621,23 +4619,23 @@ vxTextureTriangle = $E30800 vxTextureTriangleNoClip = $E3080D vxTimerRead = $D1A9DB vxTimerStart = $D1A9BD -vxTModelWorld = $D1BDD4 -vxUncompressRLE = $D1C475 -vxUnlockWrite = $D1C536 -vxUpDistance = $D1B827 -vxVertexAdress = $D1B5BE -vxVertexBoxCode = $D1C144 -vxVertexBoxLoop = $D1C152 -vxVertexCacheFill = $D1BDAD +vxTModelWorld = $D1BD67 +vxUncompressRLE = $D1C491 +vxUnlockWrite = $D1C552 +vxUpDistance = $D1B7BA +vxVertexAdress = $D1B551 +vxVertexBoxCode = $D1C160 +vxVertexBoxLoop = $D1C16E +vxVertexCacheFill = $D1BD40 vxVertexDirty = $00FF vxVertexShader = $E3081C vxVertexSkip0 = $E3086C -vxVertexStreamBox = $D1C145 -vxWaitLCD = $D1B3E3 -vxWaitLoop = $D1B3EB -vxx = $D1B8A1 -vxZDistance = $D1B7EA -vxZX7Uncompress = $D1C55C +vxVertexStreamBox = $D1C161 +vxWaitLCD = $D1B376 +vxWaitLoop = $D1B37E +vxx = $D1B834 +vxZDistance = $D1B77D +vxZX7Uncompress = $D1C578 w0 = $D01EDE w02 = $D01EF9 web_err_mask = $0060 @@ -4652,7 +4650,7 @@ winLeftEdge = $D02506 winTop = $D02504 wn1 = $D01F26 wn2 = $D01F2F -WorldMatrix = $D20A38 +WorldMatrix = $D20A54 write_on_graph = $0004 writeSizeBytesOnly = $0005 xapFlag0 = $002E diff --git a/bin/TEST.lst b/bin/TEST.lst index 0aa5063..b7566ff 100644 --- a/bin/TEST.lst +++ b/bin/TEST.lst @@ -81,159 +81,164 @@ Listing for file "example.ez80" 4 D1:A87F EF 7B - - .db tExtTok, tAsm84CeCmp 5 D1:A881 - - - - .assume ADL=1 6 D1:A881 - - - - - 7 D1:A881 - - - - #define DELTA 4096 - 8 D1:A881 - - - - - 9 D1:A881 - - - - ; init the virtual 3d library - 10 D1:A881 CD 53 01 D2 call vxEngineInit - 11 D1:A885 D8 - - - ret c ; quit if error at init - 12 D1:A886 - - - - - 13 D1:A886 21 EA 09 D2 ld hl, VertexName - 14 D1:A88A CD 4B C4 D1 call vxFindFile - 15 D1:A88E D8 - - - ret c - 16 D1:A88F 22 F1 09 D2 ld (Vertex), hl - 17 D1:A893 - - - - - 18 D1:A893 21 F4 09 D2 ld hl, TriangleName - 19 D1:A897 CD 4B C4 D1 call vxFindFile - 20 D1:A89B D8 - - - ret c - 21 D1:A89C 22 FB 09 D2 ld (Triangle), hl - 22 D1:A8A0 - - - - - 23 D1:A8A0 - - - - - 24 D1:A8A0 21 FE 09 D2 ld hl, TextName - 25 D1:A8A4 CD 4B C4 D1 call vxFindFile - 26 D1:A8A8 D8 - - - ret c - 27 D1:A8A9 22 05 0A D2 ld (Texture), hl - 28 D1:A8AD 11 FE FF D2 ld de, $D30000-2 - 29 D1:A8B1 CD 5C C5 D1 call vxZX7Uncompress ; uncompress the texture generated by convpng - 30 D1:A8B5 - - - - - 31 D1:A8B5 - - - - - 32 D1:A8B5 - - - - ; setup global variable for rendering, euler angle and the translation of WorldMatrix - 33 D1:A8B5 - - - - - 34 D1:A8B5 21 00 00 00 ld hl, 0 - 35 D1:A8B9 22 68 0A D2 ld (EulerAngle), hl - 36 D1:A8BD 21 38 0A D2 ld hl, WorldMatrix - 37 D1:A8C1 CD 43 AC D1 call vxMatrixLoadIdentity - 38 D1:A8C5 - - - - - 39 D1:A8C5 - - - - MainLoop: - 40 D1:A8C5 - - - - - 41 D1:A8C5 CD BD A9 D1 call vxTimerStart - 42 D1:A8C9 - - - - - 43 D1:A8C9 CD 74 0A D2 call Camera - 44 D1:A8CD C0 - - - ret nz - 45 D1:A8CE - - - - - 46 D1:A8CE 3A F0 BD D1 ld a, (vxKeyAnimation) - 47 D1:A8D2 3C - - - inc a - 48 D1:A8D3 FE 13 - - cp 19 - 49 D1:A8D5 20 01 - - jr nz, $+3 - 50 D1:A8D7 AF - - - xor a, a - 51 D1:A8D8 32 F0 BD D1 ld (vxKeyAnimation), a - 52 D1:A8DC - - - - - 53 D1:A8DC - - - - ; animate the texture - 54 D1:A8DC 3A 71 0A D2 ld a, (texture_frame) - 55 D1:A8E0 3C - - - inc a - 56 D1:A8E1 FE 04 - - cp 4 - 57 D1:A8E3 20 01 - - jr nz, $+3 - 58 D1:A8E5 AF - - - xor a, a - 59 D1:A8E6 32 71 0A D2 ld (texture_frame), a - 60 D1:A8EA - - - - ; texture_frame*16 - 61 D1:A8EA 6F - - - ld l, a - 62 D1:A8EB 26 10 - - ld h, 16 - 63 D1:A8ED ED 6C - - mlt hl - 64 D1:A8EF 7D - - - ld a, l - 65 D1:A8F0 C6 B0 - - add a, 160+16 - 66 D1:A8F2 67 - - - ld h, a - 67 D1:A8F3 2E 00 - - ld l, 0 - 68 D1:A8F5 - - - - - 69 D1:A8F5 11 00 A0 00 ld de, 160*256+0 - 70 D1:A8F9 01 40 10 00 ld bc, 16*256+64 - 71 D1:A8FD - - - - - 72 D1:A8FD CD 75 C7 D1 call vxImageSubCopy - 73 D1:A901 - - - - - 74 D1:A901 3E 10 - - ld a, VX_GEOMETRY_TI9 - 75 D1:A903 DD 21 38 0A + 7 D1:A881 - - - - ; init the virtual 3d library + 8 D1:A881 CD 6F 01 D2 call vxEngineInit + 9 D1:A885 D8 - - - ret c ; quit if error at init + 10 D1:A886 - - - - + 11 D1:A886 21 06 0A D2 ld hl, VertexName + 12 D1:A88A CD 67 C4 D1 call vxFindFile + 13 D1:A88E D8 - - - ret c + 14 D1:A88F 22 0D 0A D2 ld (Vertex), hl + 15 D1:A893 - - - - + 16 D1:A893 21 10 0A D2 ld hl, TriangleName + 17 D1:A897 CD 67 C4 D1 call vxFindFile + 18 D1:A89B D8 - - - ret c + 19 D1:A89C 22 17 0A D2 ld (Triangle), hl + 20 D1:A8A0 - - - - + 21 D1:A8A0 - - - - + 22 D1:A8A0 21 1A 0A D2 ld hl, TextName + 23 D1:A8A4 CD 67 C4 D1 call vxFindFile + 24 D1:A8A8 D8 - - - ret c + 25 D1:A8A9 22 21 0A D2 ld (Texture), hl + 26 D1:A8AD 11 FE FF D2 ld de, $D30000-2 + 27 D1:A8B1 CD 78 C5 D1 call vxZX7Uncompress ; uncompress the texture generated by convpng + 28 D1:A8B5 - - - - + 29 D1:A8B5 - - - - ; about vertex coordinate : + 30 D1:A8B5 - - - - ; the format inputed in glib is pure integer 16 bits coordinates, ]-32768,32768[ + 31 D1:A8B5 - - - - ; A 1.0 coordinate in blender is equivalent to 256 in glib + 32 D1:A8B5 - - - - + 33 D1:A8B5 - - - - ; setup global variable for rendering, euler angle and the translation of WorldMatrix + 34 D1:A8B5 - - - - + 35 D1:A8B5 - - - - ; about translation : + 36 D1:A8B5 - - - - ; translation are added post transformation. So they carry the multiplication with the matrice, which aren't divided by the fixed point value of 1.0 (the matrix equivalent or 64). To have a translation of 1.0 in worldview matrix, the translation need to be 256*64 = 16384. + 37 D1:A8B5 - - - - ; However, there is two type of matrix in glib : the model matrix, which is in MODELSPACE and the world type matrix in WORLDSPACE. Modelspace matrix have only a 16 bits translation and doesn't have the 64 factor described previously. + 38 D1:A8B5 - - - - + 39 D1:A8B5 21 00 00 00 ld hl, 0 + 40 D1:A8B9 22 84 0A D2 ld (EulerAngle), hl + 41 D1:A8BD 21 54 0A D2 ld hl, WorldMatrix + 42 D1:A8C1 CD D6 AB D1 call vxMatrixLoadIdentity + 43 D1:A8C5 - - - - + 44 D1:A8C5 - - - - MainLoop: + 45 D1:A8C5 - - - - + 46 D1:A8C5 CD BD A9 D1 call vxTimerStart + 47 D1:A8C9 - - - - + 48 D1:A8C9 CD 90 0A D2 call Camera + 49 D1:A8CD C0 - - - ret nz + 50 D1:A8CE - - - - + 51 D1:A8CE 3A 83 BD D1 ld a, (vxKeyAnimation) + 52 D1:A8D2 3C - - - inc a + 53 D1:A8D3 FE 13 - - cp 19 + 54 D1:A8D5 20 01 - - jr nz, $+3 + 55 D1:A8D7 AF - - - xor a, a + 56 D1:A8D8 32 83 BD D1 ld (vxKeyAnimation), a + 57 D1:A8DC - - - - + 58 D1:A8DC - - - - ; animate the texture + 59 D1:A8DC 3A 8D 0A D2 ld a, (texture_frame) + 60 D1:A8E0 3C - - - inc a + 61 D1:A8E1 FE 04 - - cp 4 + 62 D1:A8E3 20 01 - - jr nz, $+3 + 63 D1:A8E5 AF - - - xor a, a + 64 D1:A8E6 32 8D 0A D2 ld (texture_frame), a + 65 D1:A8EA - - - - ; texture_frame*16 + 66 D1:A8EA 6F - - - ld l, a + 67 D1:A8EB 26 10 - - ld h, 16 + 68 D1:A8ED ED 6C - - mlt hl + 69 D1:A8EF 7D - - - ld a, l + 70 D1:A8F0 C6 B0 - - add a, 160+16 + 71 D1:A8F2 67 - - - ld h, a + 72 D1:A8F3 2E 00 - - ld l, 0 + 73 D1:A8F5 - - - - + 74 D1:A8F5 11 00 A0 00 ld de, 160*256+0 + 75 D1:A8F9 01 40 10 00 ld bc, 16*256+64 + 76 D1:A8FD - - - - + 77 D1:A8FD CD 91 C7 D1 call vxImageSubCopy + 78 D1:A901 - - - - + 79 D1:A901 3E 10 - - ld a, VX_GEOMETRY_TI9 + 80 D1:A903 DD 21 54 0A D2 - - - ld ix, WorldMatrix - 76 D1:A908 FD 21 4A 0A + 81 D1:A908 FD 21 66 0A D2 - - - ld iy, ModelMatrix - 77 D1:A90D 01 00 80 D0 ld bc, VX_VERTEX_BUFFER - 78 D1:A911 2A F1 09 D2 ld hl, (Vertex) - 79 D1:A915 ED 5B FB 09 + 82 D1:A90D 01 00 80 D0 ld bc, VX_VERTEX_BUFFER + 83 D1:A911 2A 0D 0A D2 ld hl, (Vertex) + 84 D1:A915 ED 5B 17 0A D2 - - - ld de, (Triangle) - 80 D1:A91A CD D4 BF D1 call vxCmdDraw - 81 D1:A91E - - - - - 82 D1:A91E 3E 10 - - ld a, VX_GEOMETRY_TI9 - 83 D1:A920 DD 21 38 0A + 85 D1:A91A CD F0 BF D1 call vxCmdDraw + 86 D1:A91E - - - - + 87 D1:A91E 3E 10 - - ld a, VX_GEOMETRY_TI9 + 88 D1:A920 DD 21 54 0A D2 - - - ld ix, WorldMatrix - 84 D1:A925 FD 21 59 0A + 89 D1:A925 FD 21 75 0A D2 - - - ld iy, LaraMatrix - 85 D1:A92A 01 00 C0 D0 ld bc, VX_VERTEX_BUFFER+(1024*16) - 86 D1:A92E 21 B6 0B D2 ld hl, VERTEXDATA - 87 D1:A932 11 14 29 D2 ld de, TRIDATA - 88 D1:A936 CD D4 BF D1 call vxCmdDraw - 89 D1:A93A - - - - - 90 D1:A93A - - - - - 91 D1:A93A 2A A7 BD D1 ld hl, (vxGeometrySize) - 92 D1:A93E 22 A5 A9 D1 ld (triangle_count), hl - 93 D1:A942 - - - - - 94 D1:A942 CD 73 C1 D1 call vxCmdDepthSort - 95 D1:A946 - - - - - 96 D1:A946 0E 00 - - ld c, %00000000 - 97 D1:A948 CD BF B3 D1 call vxClearBuffer - 98 D1:A94C CD 00 BF D1 call vxCmdExecute - 99 D1:A950 - - - - - 100 D1:A950 - - - - ; timer & counter - 101 D1:A950 - - - - - 102 D1:A950 01 FF 09 00 ld bc, 320*8-1 - 103 D1:A954 ED 5B 14 00 + 90 D1:A92A 01 00 C0 D0 ld bc, VX_VERTEX_BUFFER+(1024*16) + 91 D1:A92E 21 D2 0B D2 ld hl, VERTEXDATA + 92 D1:A932 11 30 29 D2 ld de, TRIDATA + 93 D1:A936 CD F0 BF D1 call vxCmdDraw + 94 D1:A93A - - - - + 95 D1:A93A - - - - + 96 D1:A93A 2A 3A BD D1 ld hl, (vxGeometrySize) + 97 D1:A93E 22 A5 A9 D1 ld (triangle_count), hl + 98 D1:A942 - - - - + 99 D1:A942 CD 8F C1 D1 call vxCmdDepthSort + 100 D1:A946 - - - - + 101 D1:A946 0E 00 - - ld c, %00000000 + 102 D1:A948 CD 52 B3 D1 call vxClearBuffer + 103 D1:A94C CD 00 BF D1 call vxCmdExecute + 104 D1:A950 - - - - + 105 D1:A950 - - - - ; timer & counter + 106 D1:A950 - - - - + 107 D1:A950 01 FF 09 00 ld bc, 320*8-1 + 108 D1:A954 ED 5B 14 00 E3 - - - ld de, (vxFramebuffer) - 104 D1:A959 B7 - - - or a, a - 105 D1:A95A ED 62 - - sbc hl, hl - 106 D1:A95C 19 - - - add hl, de - 107 D1:A95D 13 - - - inc de - 108 D1:A95E 36 00 - - ld (hl), 0 - 109 D1:A960 ED B0 - - ldir - 110 D1:A962 - - - - - 111 D1:A962 21 00 00 00 ld hl, 0 - 112 D1:A966 22 75 02 D2 ld (TextXPos_SMC), hl - 113 D1:A96A 3E 00 - - ld a, 0 - 114 D1:A96C 32 83 02 D2 ld (TextYPos_SMC), a - 115 D1:A970 - - - - - 116 D1:A970 CD DB A9 D1 call vxTimerRead - 117 D1:A974 - - - - ; do (ade/256)/187 - 118 D1:A974 ED 53 E4 09 + 109 D1:A959 B7 - - - or a, a + 110 D1:A95A ED 62 - - sbc hl, hl + 111 D1:A95C 19 - - - add hl, de + 112 D1:A95D 13 - - - inc de + 113 D1:A95E 36 00 - - ld (hl), 0 + 114 D1:A960 ED B0 - - ldir + 115 D1:A962 - - - - + 116 D1:A962 21 00 00 00 ld hl, 0 + 117 D1:A966 22 91 02 D2 ld (TextXPos_SMC), hl + 118 D1:A96A 3E 00 - - ld a, 0 + 119 D1:A96C 32 9F 02 D2 ld (TextYPos_SMC), a + 120 D1:A970 - - - - + 121 D1:A970 CD DB A9 D1 call vxTimerRead + 122 D1:A974 - - - - ; do (ade/256)/187 + 123 D1:A974 ED 53 00 0A D2 - - - ld (Temp), de - 119 D1:A979 32 E7 09 D2 ld (Temp+3), a - 120 D1:A97D ED 5B E5 09 + 124 D1:A979 32 03 0A D2 ld (Temp+3), a + 125 D1:A97D ED 5B 01 0A D2 - - - ld de, (Temp+1) - 121 D1:A982 - - - - ; divide de by 187 - 122 D1:A982 EB - - - ex de, hl - 123 D1:A983 01 BB 00 00 ld bc, 187 - 124 D1:A987 CD 7D 04 D2 call __idivs_ASM - 125 D1:A98B 11 04 00 00 ld de, 4 - 126 D1:A98F D5 - - - push de - 127 D1:A990 E5 - - - push hl - 128 D1:A991 CD FE 02 D2 call _PrintUInt - 129 D1:A995 D1 - - - pop de - 130 D1:A996 E1 - - - pop hl - 131 D1:A997 - - - - - 132 D1:A997 2A 75 02 D2 ld hl, (TextXPos_SMC) - 133 D1:A99B 11 08 00 00 ld de, 8 - 134 D1:A99F 19 - - - add hl, de - 135 D1:A9A0 22 75 02 D2 ld (TextXPos_SMC), hl - 136 D1:A9A4 - - - - - 137 D1:A9A4 - - - - triangle_count=$+1 - 138 D1:A9A4 21 00 00 00 ld hl, 0 - 139 D1:A9A8 11 04 00 00 ld de, 4 - 140 D1:A9AC D5 - - - push de - 141 D1:A9AD E5 - - - push hl - 142 D1:A9AE CD FE 02 D2 call _PrintUInt - 143 D1:A9B2 D1 - - - pop de - 144 D1:A9B3 E1 - - - pop hl - 145 D1:A9B4 - - - - - 146 D1:A9B4 CD D1 B3 D1 call vxFlushLCD - 147 D1:A9B8 - - - - - 148 D1:A9B8 C3 C5 A8 D1 jp MainLoop - 149 D1:A9BC C9 - - - ret - 150 D1:A9BD - - - - - 151 D1:A9BD - - - - #include "vxMain.ez80" + 126 D1:A982 - - - - ; divide de by 187 + 127 D1:A982 EB - - - ex de, hl + 128 D1:A983 01 BB 00 00 ld bc, 187 + 129 D1:A987 CD 99 04 D2 call __idivs_ASM + 130 D1:A98B 11 04 00 00 ld de, 4 + 131 D1:A98F D5 - - - push de + 132 D1:A990 E5 - - - push hl + 133 D1:A991 CD 1A 03 D2 call _PrintUInt + 134 D1:A995 D1 - - - pop de + 135 D1:A996 E1 - - - pop hl + 136 D1:A997 - - - - + 137 D1:A997 2A 91 02 D2 ld hl, (TextXPos_SMC) + 138 D1:A99B 11 08 00 00 ld de, 8 + 139 D1:A99F 19 - - - add hl, de + 140 D1:A9A0 22 91 02 D2 ld (TextXPos_SMC), hl + 141 D1:A9A4 - - - - + 142 D1:A9A4 - - - - triangle_count=$+1 + 143 D1:A9A4 21 00 00 00 ld hl, 0 + 144 D1:A9A8 11 04 00 00 ld de, 4 + 145 D1:A9AC D5 - - - push de + 146 D1:A9AD E5 - - - push hl + 147 D1:A9AE CD 1A 03 D2 call _PrintUInt + 148 D1:A9B2 D1 - - - pop de + 149 D1:A9B3 E1 - - - pop hl + 150 D1:A9B4 - - - - + 151 D1:A9B4 CD 64 B3 D1 call vxFlushLCD + 152 D1:A9B8 - - - - + 153 D1:A9B8 C3 C5 A8 D1 jp MainLoop + 154 D1:A9BC C9 - - - ret + 155 D1:A9BD - - - - + 156 D1:A9BD - - - - #include "vxMain.ez80" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" 1 D1:A9BD - - - - #include "vxTimer.ez80" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxTimer.ez80" @@ -299,703 +304,618 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxRaster.ez80" 19 D1:A9FE C9 - - - ret ; [x] 20 D1:A9FF - - - - 21 D1:A9FF - - - - vxFlatPolygon: - 22 D1:A9FF D6 03 - - sub a, 3 - 23 D1:AA01 D8 - - - ret c - 24 D1:AA02 3C - - - inc a - 25 D1:AA03 47 - - - ld b, a - 26 D1:AA04 FD 27 00 - ld hl, (iy+0) - 27 D1:AA07 - - - - vxFlatCyclicLoop: - 28 D1:AA07 C5 - - - push bc - 29 D1:AA08 FD 07 03 - ld bc, (iy+3) - 30 D1:AA0B FD 17 06 - ld de, (iy+6) - 31 D1:AA0E E5 - - - push hl - 32 D1:AA0F FD E5 - - push iy - 33 D1:AA11 0A - - - ld a, (bc) - 34 D1:AA12 B6 - - - or (hl) - 35 D1:AA13 EB - - - ex de, hl - 36 D1:AA14 B6 - - - or (hl) - 37 D1:AA15 20 73 - - jr nz, vxFlatDiscard - 38 D1:AA17 - - - - - 39 D1:AA17 E5 - - - push hl - 40 D1:AA18 D5 - - - push de - 41 D1:AA19 C5 - - - push bc - 42 D1:AA1A 23 13 03 - inc hl \ inc de \ inc bc - 43 D1:AA1D D5 - - - push de - 44 D1:AA1E DD E1 - - pop ix - 45 D1:AA20 C5 - - - push bc - 46 D1:AA21 FD E1 - - pop iy - 47 D1:AA23 E5 - - - push hl - 48 D1:AA24 23 - - - inc hl - 49 D1:AA25 ED 17 - - ld de, (hl) - 50 D1:AA27 FD 27 01 - ld hl, (iy+1) - 51 D1:AA2A B7 - - - or a, a - 52 D1:AA2B ED 52 - - sbc hl, de - 53 D1:AA2D 44 - - - ld b, h - 54 D1:AA2E 4D - - - ld c, l - 55 D1:AA2F - - - - - 56 D1:AA2F E1 - - - pop hl - 57 D1:AA30 DD 7E 00 - ld a, (ix) - 58 D1:AA33 96 - - - sub (hl) - 59 D1:AA34 E5 - - - push hl - 60 D1:AA35 - - - - - 61 D1:AA35 60 - - - ld h, b - 62 D1:AA36 6F - - - ld l, a - 63 D1:AA37 ED 6C - - mlt hl - 64 D1:AA39 30 03 - - jr nc, $+5 - 65 D1:AA3B B7 - - - or a, a - 66 D1:AA3C ED 42 - - sbc hl, bc - 67 D1:AA3E CB 78 - - bit 7, b - 68 D1:AA40 47 - - - ld b, a - 69 D1:AA41 28 03 - - jr z, $+5 - 70 D1:AA43 7C - - - ld a, h - 71 D1:AA44 90 - - - sub a, b - 72 D1:AA45 67 - - - ld h, a - 73 D1:AA46 29 29 29 29 - 29 29 29 29 slhl -Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" -Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxRaster.ez80" - 74 D1:AA4E ED 4C - - mlt bc - 75 D1:AA50 09 - - - add hl, bc - 76 D1:AA51 EB - - - ex de, hl - 77 D1:AA52 E1 - - - pop hl - 78 D1:AA53 - - - - - 79 D1:AA53 E5 - - - push hl - 80 D1:AA54 23 - - - inc hl - 81 D1:AA55 ED 07 - - ld bc, (hl) - 82 D1:AA57 DD 27 01 - ld hl, (ix+1) - 83 D1:AA5A B7 - - - or a, a - 84 D1:AA5B ED 42 - - sbc hl, bc - 85 D1:AA5D 44 - - - ld b, h - 86 D1:AA5E 4D - - - ld c, l - 87 D1:AA5F - - - - - 88 D1:AA5F E1 - - - pop hl - 89 D1:AA60 FD 7E 00 - ld a, (iy) - 90 D1:AA63 96 - - - sub (hl) - 91 D1:AA64 - - - - - 92 D1:AA64 60 - - - ld h, b - 93 D1:AA65 6F - - - ld l, a - 94 D1:AA66 ED 6C - - mlt hl - 95 D1:AA68 30 03 - - jr nc, $+5 - 96 D1:AA6A B7 - - - or a, a - 97 D1:AA6B ED 42 - - sbc hl, bc - 98 D1:AA6D CB 78 - - bit 7, b - 99 D1:AA6F 47 - - - ld b, a - 100 D1:AA70 28 03 - - jr z, $+5 - 101 D1:AA72 7C - - - ld a, h - 102 D1:AA73 90 - - - sub a, b - 103 D1:AA74 67 - - - ld h, a - 104 D1:AA75 29 29 29 29 - 29 29 29 29 slhl -Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" -Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxRaster.ez80" - 105 D1:AA7D ED 4C - - mlt bc - 106 D1:AA7F 09 - - - add hl, bc - 107 D1:AA80 - - - - - 108 D1:AA80 B7 - - - or a, a - 109 D1:AA81 ED 52 - - sbc hl, de - 110 D1:AA83 - - - - - 111 D1:AA83 C1 - - - pop bc - 112 D1:AA84 D1 - - - pop de - 113 D1:AA85 E1 - - - pop hl - 114 D1:AA86 - - - - - 115 D1:AA86 F4 A8 AA D1 call p, vxFlatTrianglePC - 116 D1:AA8A - - - - vxFlatDiscard: - 117 D1:AA8A FD E1 - - pop iy - 118 D1:AA8C ED 33 03 - lea iy, iy+3 - 119 D1:AA8F E1 - - - pop hl - 120 D1:AA90 C1 - - - pop bc - 121 D1:AA91 05 - - - dec b - 122 D1:AA92 C2 07 AA D1 jp nz, vxFlatCyclicLoop - 123 D1:AA96 C9 - - - ret - 124 D1:AA97 - - - - - 125 D1:AA97 - - - - - 126 D1:AA97 - - - - vxFlatTriangle: - 127 D1:AA97 32 15 AC D1 ld (IRasterRBG8), a - 128 D1:AA9B - - - - - 129 D1:AA9B 0A - - - ld a, (bc) - 130 D1:AA9C B6 - - - or (hl) - 131 D1:AA9D EB - - - ex de, hl - 132 D1:AA9E B6 - - - or (hl) - 133 D1:AA9F FD 21 FF A9 + 22 D1:A9FF D6 02 - - sub a, 2 + 23 D1:AA01 47 - - - ld b, a + 24 D1:AA02 FD 27 00 - ld hl, (iy+0) + 25 D1:AA05 - - - - vxFlatCyclicLoop: + 26 D1:AA05 C5 - - - push bc + 27 D1:AA06 FD 17 03 - ld de, (iy+3) + 28 D1:AA09 FD 07 06 - ld bc, (iy+6) + 29 D1:AA0C E5 - - - push hl + 30 D1:AA0D FD E5 - - push iy + 31 D1:AA0F E5 - - - push hl + 32 D1:AA10 C5 - - - push bc + 33 D1:AA11 D5 - - - push de + 34 D1:AA12 CD E8 BC D1 call vxNClip + 35 D1:AA16 D1 - - - pop de + 36 D1:AA17 C1 - - - pop bc + 37 D1:AA18 E1 - - - pop hl + 38 D1:AA19 DC 3B AA D1 call c,vxFlatTriangleNoClip + 39 D1:AA1D FD E1 - - pop iy + 40 D1:AA1F ED 33 03 - lea iy, iy+3 + 41 D1:AA22 E1 - - - pop hl + 42 D1:AA23 C1 - - - pop bc + 43 D1:AA24 05 - - - dec b + 44 D1:AA25 C2 05 AA D1 jp nz, vxFlatCyclicLoop + 45 D1:AA29 C9 - - - ret + 46 D1:AA2A - - - - + 47 D1:AA2A - - - - vxFlatTriangle: + 48 D1:AA2A 32 A8 AB D1 ld (IRasterRBG8), a + 49 D1:AA2E - - - - + 50 D1:AA2E 0A - - - ld a, (bc) + 51 D1:AA2F B6 - - - or (hl) + 52 D1:AA30 EB - - - ex de, hl + 53 D1:AA31 B6 - - - or (hl) + 54 D1:AA32 FD 21 FF A9 D1 - - - ld iy, vxFlatPolygon - 134 D1:AAA4 C2 E9 B5 D1 jp nz, vxClipTriangle - 135 D1:AAA8 - - - - vxFlatTrianglePC: - 136 D1:AAA8 23 13 03 - inc hl \ inc de \ inc bc - 137 D1:AAAB - - - - - 138 D1:AAAB 1A - - - ld a, (de) - 139 D1:AAAC 96 - - - sub a, (hl) - 140 D1:AAAD 38 01 - - jr c, IRasterSwap0 - 141 D1:AAAF EB - - - ex de, hl - 142 D1:AAB0 - - - - IRasterSwap0: - 143 D1:AAB0 0A - - - ld a, (bc) - 144 D1:AAB1 96 - - - sub a, (hl) - 145 D1:AAB2 30 06 - - jr nc, IRasterSwap1 - 146 D1:AAB4 E5 - - - push hl - 147 D1:AAB5 B7 - - - or a, a - 148 D1:AAB6 ED 62 - - sbc hl, hl - 149 D1:AAB8 09 - - - add hl, bc - 150 D1:AAB9 C1 - - - pop bc - 151 D1:AABA - - - - IRasterSwap1: - 152 D1:AABA 1A - - - ld a, (de) - 153 D1:AABB 96 - - - sub a, (hl) - 154 D1:AABC 30 01 - - jr nc, IRasterSwap2 - 155 D1:AABE EB - - - ex de, hl - 156 D1:AABF - - - - IRasterSwap2: - 157 D1:AABF - - - - - 158 D1:AABF 0A - - - ld a, (bc) - 159 D1:AAC0 96 - - - sub (hl) - 160 D1:AAC1 C8 - - - ret z - 161 D1:AAC2 - - - - - 162 D1:AAC2 DD 21 00 00 + 55 D1:AA37 C2 7C B5 D1 jp nz, vxClipTriangle + 56 D1:AA3B - - - - vxFlatTriangleNoClip: + 57 D1:AA3B 23 13 03 - inc hl \ inc de \ inc bc + 58 D1:AA3E - - - - + 59 D1:AA3E 1A - - - ld a, (de) + 60 D1:AA3F 96 - - - sub a, (hl) + 61 D1:AA40 38 01 - - jr c, IRasterSwap0 + 62 D1:AA42 EB - - - ex de, hl + 63 D1:AA43 - - - - IRasterSwap0: + 64 D1:AA43 0A - - - ld a, (bc) + 65 D1:AA44 96 - - - sub a, (hl) + 66 D1:AA45 30 06 - - jr nc, IRasterSwap1 + 67 D1:AA47 E5 - - - push hl + 68 D1:AA48 B7 - - - or a, a + 69 D1:AA49 ED 62 - - sbc hl, hl + 70 D1:AA4B 09 - - - add hl, bc + 71 D1:AA4C C1 - - - pop bc + 72 D1:AA4D - - - - IRasterSwap1: + 73 D1:AA4D 1A - - - ld a, (de) + 74 D1:AA4E 96 - - - sub a, (hl) + 75 D1:AA4F 30 01 - - jr nc, IRasterSwap2 + 76 D1:AA51 EB - - - ex de, hl + 77 D1:AA52 - - - - IRasterSwap2: + 78 D1:AA52 - - - - + 79 D1:AA52 0A - - - ld a, (bc) + 80 D1:AA53 96 - - - sub (hl) + 81 D1:AA54 C8 - - - ret z + 82 D1:AA55 - - - - + 83 D1:AA55 DD 21 00 00 FF - - - ld ix, $FF0000 - 163 D1:AAC7 FD 21 00 00 + 84 D1:AA5A FD 21 00 00 FF - - - ld iy, $FF0000 - 164 D1:AACC DD 6F - - ld ixl, a - 165 D1:AACE ED 44 - - neg - 166 D1:AAD0 32 C5 AB D1 ld (IDeltaY0), a - 167 D1:AAD4 - - - - ; x1-x0 - 168 D1:AAD4 1A - - - ld a, (de) - 169 D1:AAD5 32 AC AB D1 ld (IValueY1), a - 170 D1:AAD9 96 - - - sub (hl) - 171 D1:AADA F5 - - - push af - 172 D1:AADB FD 6F - - ld iyl, a - 173 D1:AADD ED 44 - - neg - 174 D1:AADF 32 D6 AB D1 ld (IDeltaY1), a - 175 D1:AAE3 - - - - - 176 D1:AAE3 7E - - - ld a, (hl) - 177 D1:AAE4 F5 - - - push af - 178 D1:AAE5 - - - - - 179 D1:AAE5 C5 - - - push bc - 180 D1:AAE6 23 - - - inc hl - 181 D1:AAE7 ED 07 - - ld bc, (hl) - 182 D1:AAE9 EB - - - ex de, hl - 183 D1:AAEA 23 - - - inc hl - 184 D1:AAEB ED 27 - - ld hl, (hl) - 185 D1:AAED 22 7D AB D1 ld (IValueX1), hl - 186 D1:AAF1 28 29 - - jr z, IRasterNoEdgeWrite - 187 D1:AAF3 3E 13 - - ld a, $13 - 188 D1:AAF5 B7 - - - or a, a - 189 D1:AAF6 ED 42 - - sbc hl, bc - 190 D1:AAF8 30 07 - - jr nc, IRasterEdge1 - 191 D1:AAFA F6 08 - - or a, $08 - 192 D1:AAFC EB - - - ex de, hl - 193 D1:AAFD ED 62 - - sbc hl, hl - 194 D1:AAFF ED 52 - - sbc hl, de - 195 D1:AB01 - - - - IRasterEdge1: - 196 D1:AB01 22 CE AB D1 ld (IDeltaX1), hl - 197 D1:AB05 32 D9 AB D1 ld (ISMC_Code1), a - 198 D1:AB09 - - - - - 199 D1:AB09 ED 13 00 - lea de, iy+0 - 200 D1:AB0C 19 - - - add hl, de - 201 D1:AB0D EB - - - ex de, hl - 202 D1:AB0E ED 62 - - sbc hl, hl - 203 D1:AB10 3F - - - ccf - 204 D1:AB11 ED 52 - - sbc hl, de - 205 D1:AB13 CB 2C - - sra h - 206 D1:AB15 CB 1D - - rr l - 207 D1:AB17 EB - - - ex de, hl - 208 D1:AB18 FD 62 - - ld iyh, d - 209 D1:AB1A FD 6B - - ld iyl, e - 210 D1:AB1C - - - - - 211 D1:AB1C - - - - IRasterNoEdgeWrite: - 212 D1:AB1C E1 - - - pop hl - 213 D1:AB1D - - - - - 214 D1:AB1D - - - - ; x2-x0 - 215 D1:AB1D 23 - - - inc hl - 216 D1:AB1E ED 27 - - ld hl, (hl) - 217 D1:AB20 22 79 AB D1 ld (IValueX2), hl - 218 D1:AB24 3E 23 - - ld a, $23 ; inc hl - 219 D1:AB26 B7 - - - or a, a - 220 D1:AB27 ED 42 - - sbc hl, bc - 221 D1:AB29 - - - - ; if x0>x1, edge goes to left - 222 D1:AB29 30 07 - - jr nc, IRasterEdge0 - 223 D1:AB2B F6 08 - - or a, $08 ; dec hl - 224 D1:AB2D - - - - ; edge goes to left - 225 D1:AB2D EB - - - ex de, hl - 226 D1:AB2E ED 62 - - sbc hl, hl - 227 D1:AB30 ED 52 - - sbc hl, de - 228 D1:AB32 - - - - IRasterEdge0: - 229 D1:AB32 22 BD AB D1 ld (IDeltaX0), hl - 230 D1:AB36 32 C8 AB D1 ld (ISMC_Code0), a - 231 D1:AB3A - - - - - 232 D1:AB3A ED 12 00 - lea de, ix+0 - 233 D1:AB3D 19 - - - add hl, de - 234 D1:AB3E EB - - - ex de, hl - 235 D1:AB3F ED 62 - - sbc hl, hl - 236 D1:AB41 3F - - - ccf - 237 D1:AB42 ED 52 - - sbc hl, de - 238 D1:AB44 CB 2C - - sra h - 239 D1:AB46 CB 1D - - rr l - 240 D1:AB48 EB - - - ex de, hl - 241 D1:AB49 DD 62 - - ld ixh, d - 242 D1:AB4B DD 6B - - ld ixl, e - 243 D1:AB4D - - - - - 244 D1:AB4D E1 - - - pop hl - 245 D1:AB4E 2E A0 - - ld l, 160 - 246 D1:AB50 ED 6C - - mlt hl - 247 D1:AB52 29 - - - add hl, hl - 248 D1:AB53 09 - - - add hl, bc - 249 D1:AB54 ED 5B 14 00 + 85 D1:AA5F DD 6F - - ld ixl, a + 86 D1:AA61 ED 44 - - neg + 87 D1:AA63 32 58 AB D1 ld (IDeltaY0), a + 88 D1:AA67 - - - - ; x1-x0 + 89 D1:AA67 1A - - - ld a, (de) + 90 D1:AA68 32 3F AB D1 ld (IValueY1), a + 91 D1:AA6C 96 - - - sub (hl) + 92 D1:AA6D F5 - - - push af + 93 D1:AA6E FD 6F - - ld iyl, a + 94 D1:AA70 ED 44 - - neg + 95 D1:AA72 32 69 AB D1 ld (IDeltaY1), a + 96 D1:AA76 - - - - + 97 D1:AA76 7E - - - ld a, (hl) + 98 D1:AA77 F5 - - - push af + 99 D1:AA78 - - - - + 100 D1:AA78 C5 - - - push bc + 101 D1:AA79 23 - - - inc hl + 102 D1:AA7A ED 07 - - ld bc, (hl) + 103 D1:AA7C EB - - - ex de, hl + 104 D1:AA7D 23 - - - inc hl + 105 D1:AA7E ED 27 - - ld hl, (hl) + 106 D1:AA80 22 10 AB D1 ld (IValueX1), hl + 107 D1:AA84 28 29 - - jr z, IRasterNoEdgeWrite + 108 D1:AA86 3E 13 - - ld a, $13 + 109 D1:AA88 B7 - - - or a, a + 110 D1:AA89 ED 42 - - sbc hl, bc + 111 D1:AA8B 30 07 - - jr nc, IRasterEdge1 + 112 D1:AA8D F6 08 - - or a, $08 + 113 D1:AA8F EB - - - ex de, hl + 114 D1:AA90 ED 62 - - sbc hl, hl + 115 D1:AA92 ED 52 - - sbc hl, de + 116 D1:AA94 - - - - IRasterEdge1: + 117 D1:AA94 22 61 AB D1 ld (IDeltaX1), hl + 118 D1:AA98 32 6C AB D1 ld (ISMC_Code1), a + 119 D1:AA9C - - - - + 120 D1:AA9C ED 13 00 - lea de, iy+0 + 121 D1:AA9F 19 - - - add hl, de + 122 D1:AAA0 EB - - - ex de, hl + 123 D1:AAA1 ED 62 - - sbc hl, hl + 124 D1:AAA3 3F - - - ccf + 125 D1:AAA4 ED 52 - - sbc hl, de + 126 D1:AAA6 CB 2C - - sra h + 127 D1:AAA8 CB 1D - - rr l + 128 D1:AAAA EB - - - ex de, hl + 129 D1:AAAB FD 62 - - ld iyh, d + 130 D1:AAAD FD 6B - - ld iyl, e + 131 D1:AAAF - - - - + 132 D1:AAAF - - - - IRasterNoEdgeWrite: + 133 D1:AAAF E1 - - - pop hl + 134 D1:AAB0 - - - - + 135 D1:AAB0 - - - - ; x2-x0 + 136 D1:AAB0 23 - - - inc hl + 137 D1:AAB1 ED 27 - - ld hl, (hl) + 138 D1:AAB3 22 0C AB D1 ld (IValueX2), hl + 139 D1:AAB7 3E 23 - - ld a, $23 ; inc hl + 140 D1:AAB9 B7 - - - or a, a + 141 D1:AABA ED 42 - - sbc hl, bc + 142 D1:AABC - - - - ; if x0>x1, edge goes to left + 143 D1:AABC 30 07 - - jr nc, IRasterEdge0 + 144 D1:AABE F6 08 - - or a, $08 ; dec hl + 145 D1:AAC0 - - - - ; edge goes to left + 146 D1:AAC0 EB - - - ex de, hl + 147 D1:AAC1 ED 62 - - sbc hl, hl + 148 D1:AAC3 ED 52 - - sbc hl, de + 149 D1:AAC5 - - - - IRasterEdge0: + 150 D1:AAC5 22 50 AB D1 ld (IDeltaX0), hl + 151 D1:AAC9 32 5B AB D1 ld (ISMC_Code0), a + 152 D1:AACD - - - - + 153 D1:AACD ED 12 00 - lea de, ix+0 + 154 D1:AAD0 19 - - - add hl, de + 155 D1:AAD1 EB - - - ex de, hl + 156 D1:AAD2 ED 62 - - sbc hl, hl + 157 D1:AAD4 3F - - - ccf + 158 D1:AAD5 ED 52 - - sbc hl, de + 159 D1:AAD7 CB 2C - - sra h + 160 D1:AAD9 CB 1D - - rr l + 161 D1:AADB EB - - - ex de, hl + 162 D1:AADC DD 62 - - ld ixh, d + 163 D1:AADE DD 6B - - ld ixl, e + 164 D1:AAE0 - - - - + 165 D1:AAE0 E1 - - - pop hl + 166 D1:AAE1 2E A0 - - ld l, 160 + 167 D1:AAE3 ED 6C - - mlt hl + 168 D1:AAE5 29 - - - add hl, hl + 169 D1:AAE6 09 - - - add hl, bc + 170 D1:AAE7 ED 5B 14 00 E3 - - - ld de, (vxFramebuffer) - 250 D1:AB59 19 - - - add hl, de - 251 D1:AB5A EB - - - ex de, hl - 252 D1:AB5B ED 62 - - sbc hl, hl - 253 D1:AB5D 19 - - - add hl, de - 254 D1:AB5E - - - - - 255 D1:AB5E F1 - - - pop af - 256 D1:AB5F C4 BC AB D1 call nz, IRasterTriangleInner - 257 D1:AB63 - - - - - 258 D1:AB63 3A C5 AB D1 ld a, (IDeltaY0) ; y2-y0 - 259 D1:AB67 4F - - - ld c, a - 260 D1:AB68 3A D6 AB D1 ld a, (IDeltaY1) - 261 D1:AB6C 91 - - - sub c - 262 D1:AB6D C8 - - - ret z - 263 D1:AB6E F5 - - - push af - 264 D1:AB6F FD 6F - - ld iyl, a - 265 D1:AB71 ED 44 - - neg - 266 D1:AB73 32 D6 AB D1 ld (IDeltaY1), a - 267 D1:AB77 - - - - - 268 D1:AB77 E5 - - - push hl - 269 D1:AB78 - - - - - 270 D1:AB78 - - - - IValueX2=$+1 - 271 D1:AB78 21 00 00 00 ld hl, $000000 - 272 D1:AB7C - - - - IValueX1=$+1 - 273 D1:AB7C 01 00 00 00 ld bc, $000000 - 274 D1:AB80 B7 - - - or a, a - 275 D1:AB81 ED 42 - - sbc hl, bc - 276 D1:AB83 3E 13 - - ld a, $13 - 277 D1:AB85 - - - - ; if x0>x1, edge goes to left - 278 D1:AB85 30 07 - - jr nc, IRasterEdge2 - 279 D1:AB87 F6 08 - - or a, $08 - 280 D1:AB89 EB - - - ex de, hl - 281 D1:AB8A ED 62 - - sbc hl, hl - 282 D1:AB8C ED 52 - - sbc hl, de - 283 D1:AB8E - - - - IRasterEdge2: - 284 D1:AB8E 22 CE AB D1 ld (IDeltaX1), hl - 285 D1:AB92 32 D9 AB D1 ld (ISMC_Code1), a - 286 D1:AB96 - - - - - 287 D1:AB96 ED 13 00 - lea de, iy+0 - 288 D1:AB99 16 00 - - ld d, $00 ;compensate due to previous looping - 289 D1:AB9B 19 - - - add hl, de - 290 D1:AB9C EB - - - ex de, hl - 291 D1:AB9D ED 62 - - sbc hl, hl - 292 D1:AB9F 3F - - - ccf - 293 D1:ABA0 ED 52 - - sbc hl, de - 294 D1:ABA2 CB 2C - - sra h - 295 D1:ABA4 CB 1D - - rr l - 296 D1:ABA6 EB - - - ex de, hl - 297 D1:ABA7 FD 62 - - ld iyh, d - 298 D1:ABA9 FD 6B - - ld iyl, e - 299 D1:ABAB - - - - - 300 D1:ABAB - - - - IValueY1=$+1 - 301 D1:ABAB 2E 00 - - ld l, $00 - 302 D1:ABAD 26 A0 - - ld h, 160 - 303 D1:ABAF ED 6C - - mlt hl - 304 D1:ABB1 29 - - - add hl, hl - 305 D1:ABB2 09 - - - add hl, bc - 306 D1:ABB3 ED 5B 14 00 + 171 D1:AAEC 19 - - - add hl, de + 172 D1:AAED EB - - - ex de, hl + 173 D1:AAEE ED 62 - - sbc hl, hl + 174 D1:AAF0 19 - - - add hl, de + 175 D1:AAF1 - - - - + 176 D1:AAF1 F1 - - - pop af + 177 D1:AAF2 C4 4F AB D1 call nz, IRasterTriangleInner + 178 D1:AAF6 - - - - + 179 D1:AAF6 3A 58 AB D1 ld a, (IDeltaY0) ; y2-y0 + 180 D1:AAFA 4F - - - ld c, a + 181 D1:AAFB 3A 69 AB D1 ld a, (IDeltaY1) + 182 D1:AAFF 91 - - - sub c + 183 D1:AB00 C8 - - - ret z + 184 D1:AB01 F5 - - - push af + 185 D1:AB02 FD 6F - - ld iyl, a + 186 D1:AB04 ED 44 - - neg + 187 D1:AB06 32 69 AB D1 ld (IDeltaY1), a + 188 D1:AB0A - - - - + 189 D1:AB0A E5 - - - push hl + 190 D1:AB0B - - - - + 191 D1:AB0B - - - - IValueX2=$+1 + 192 D1:AB0B 21 00 00 00 ld hl, $000000 + 193 D1:AB0F - - - - IValueX1=$+1 + 194 D1:AB0F 01 00 00 00 ld bc, $000000 + 195 D1:AB13 B7 - - - or a, a + 196 D1:AB14 ED 42 - - sbc hl, bc + 197 D1:AB16 3E 13 - - ld a, $13 + 198 D1:AB18 - - - - ; if x0>x1, edge goes to left + 199 D1:AB18 30 07 - - jr nc, IRasterEdge2 + 200 D1:AB1A F6 08 - - or a, $08 + 201 D1:AB1C EB - - - ex de, hl + 202 D1:AB1D ED 62 - - sbc hl, hl + 203 D1:AB1F ED 52 - - sbc hl, de + 204 D1:AB21 - - - - IRasterEdge2: + 205 D1:AB21 22 61 AB D1 ld (IDeltaX1), hl + 206 D1:AB25 32 6C AB D1 ld (ISMC_Code1), a + 207 D1:AB29 - - - - + 208 D1:AB29 ED 13 00 - lea de, iy+0 + 209 D1:AB2C 16 00 - - ld d, $00 ;compensate due to previous looping + 210 D1:AB2E 19 - - - add hl, de + 211 D1:AB2F EB - - - ex de, hl + 212 D1:AB30 ED 62 - - sbc hl, hl + 213 D1:AB32 3F - - - ccf + 214 D1:AB33 ED 52 - - sbc hl, de + 215 D1:AB35 CB 2C - - sra h + 216 D1:AB37 CB 1D - - rr l + 217 D1:AB39 EB - - - ex de, hl + 218 D1:AB3A FD 62 - - ld iyh, d + 219 D1:AB3C FD 6B - - ld iyl, e + 220 D1:AB3E - - - - + 221 D1:AB3E - - - - IValueY1=$+1 + 222 D1:AB3E 2E 00 - - ld l, $00 + 223 D1:AB40 26 A0 - - ld h, 160 + 224 D1:AB42 ED 6C - - mlt hl + 225 D1:AB44 29 - - - add hl, hl + 226 D1:AB45 09 - - - add hl, bc + 227 D1:AB46 ED 5B 14 00 E3 - - - ld de, (vxFramebuffer) - 307 D1:ABB8 19 - - - add hl, de - 308 D1:ABB9 EB - - - ex de, hl - 309 D1:ABBA E1 - - - pop hl - 310 D1:ABBB - - - - - 311 D1:ABBB - - - - ; ld a, (IDeltaY1) - 312 D1:ABBB - - - - ; neg - 313 D1:ABBB F1 - - - pop af - 314 D1:ABBC - - - - IRasterTriangleInner: - 315 D1:ABBC - - - - IDeltaX0=$+1 - 316 D1:ABBC 01 00 00 00 ld bc, $000000 - 317 D1:ABC0 DD 09 - - add ix, bc - 318 D1:ABC2 30 09 - - jr nc, $+11 - 319 D1:ABC4 - - - - IDeltaY0=$+1 - 320 D1:ABC4 01 00 FF FF ld bc, $FFFF00 - 321 D1:ABC8 - - - - ISMC_Code0=$ - 322 D1:ABC8 00 - - - nop - 323 D1:ABC9 DD 09 - - add ix, bc - 324 D1:ABCB 38 FB - - jr c, $-3 - 325 D1:ABCD - - - - - 326 D1:ABCD - - - - IDeltaX1=$+1 - 327 D1:ABCD 01 00 00 00 ld bc, $000000 - 328 D1:ABD1 FD 09 - - add iy, bc - 329 D1:ABD3 30 0B - - jr nc, $+13 - 330 D1:ABD5 - - - - IDeltaY1=$+1 - 331 D1:ABD5 01 00 FF FF ld bc, $FFFF00 - 332 D1:ABD9 - - - - ISMC_Code1=$ - 333 D1:ABD9 00 - - - nop - 334 D1:ABDA FD 09 - - add iy, bc - 335 D1:ABDC 38 FB - - jr c, $-3 - 336 D1:ABDE 52 03 - - inc.s bc ;reset bcu set by restoring ld bc,$FFxxxx - 337 D1:ABE0 - - - - - 338 D1:ABE0 - - - - ; hl = adress1, de = adress2 - 339 D1:ABE0 ED 52 - - sbc hl, de - 340 D1:ABE2 38 2F - - jr c, IRasterInverted - 341 D1:ABE4 28 21 - - jr z, IRasterNoPixel - 342 D1:ABE6 44 - - - ld b, h - 343 D1:ABE7 4D - - - ld c, l - 344 D1:ABE8 - - - - - 345 D1:ABE8 21 15 AC D1 ld hl, IRasterRBG8 - 346 D1:ABEC ED A0 - - ldi - 347 D1:ABEE E2 04 AC D1 jp po, IRasterContinue - 348 D1:ABF2 37 - - - scf - 349 D1:ABF3 ED 62 - - sbc hl, hl - 350 D1:ABF5 19 - - - add hl, de - 351 D1:ABF6 E5 - - - push hl - 352 D1:ABF7 ED B0 - - ldir - 353 D1:ABF9 E1 - - - pop hl - 354 D1:ABFA - - - - - 355 D1:ABFA 0E 40 - - ld c, 64 - 356 D1:ABFC 04 - - - inc b - 357 D1:ABFD 09 - - - add hl, bc - 358 D1:ABFE EB - - - ex de, hl - 359 D1:ABFF 09 - - - add hl, bc - 360 D1:AC00 3D - - - dec a - 361 D1:AC01 20 B9 - - jr nz,IRasterTriangleInner - 362 D1:AC03 C9 - - - ret - 363 D1:AC04 - - - - IRasterContinue: - 364 D1:AC04 37 - - - scf - 365 D1:AC05 ED 62 - - sbc hl, hl - 366 D1:AC07 - - - - IRasterNoPixel: - 367 D1:AC07 19 - - - add hl, de - 368 D1:AC08 01 40 01 00 ld bc, 320 - 369 D1:AC0C 09 - - - add hl, bc - 370 D1:AC0D EB - - - ex de, hl - 371 D1:AC0E 09 - - - add hl, bc - 372 D1:AC0F 3D - - - dec a - 373 D1:AC10 20 AA - - jr nz,IRasterTriangleInner - 374 D1:AC12 C9 - - - ret - 375 D1:AC13 - - - - IRasterInverted: - 376 D1:AC13 19 - - - add hl, de - 377 D1:AC14 - - - - ; hl --- de - 378 D1:AC14 - - - - IRasterRBG8=$+1 - 379 D1:AC14 36 00 - - ld (hl), $00 - 380 D1:AC16 EB - - - ex de, hl - 381 D1:AC17 - - - - ; carry is set - 382 D1:AC17 ED 52 - - sbc hl, de - 383 D1:AC19 44 - - - ld b, h - 384 D1:AC1A 4D - - - ld c, l - 385 D1:AC1B 19 - - - add hl, de - 386 D1:AC1C 28 08 - - jr z, IRasterSize1 - 387 D1:AC1E D5 - - - push de - 388 D1:AC1F ED 62 - - sbc hl, hl - 389 D1:AC21 19 - - - add hl, de - 390 D1:AC22 13 - - - inc de - 391 D1:AC23 ED B0 - - ldir - 392 D1:AC25 D1 - - - pop de - 393 D1:AC26 - - - - IRasterSize1: - 394 D1:AC26 23 - - - inc hl - 395 D1:AC27 - - - - - 396 D1:AC27 0E 40 - - ld c, 64 - 397 D1:AC29 04 - - - inc b - 398 D1:AC2A 09 - - - add hl, bc - 399 D1:AC2B EB - - - ex de, hl - 400 D1:AC2C 09 - - - add hl, bc - 401 D1:AC2D 3D - - - dec a - 402 D1:AC2E 20 8C - - jr nz, IRasterTriangleInner - 403 D1:AC30 C9 - - - ret + 228 D1:AB4B 19 - - - add hl, de + 229 D1:AB4C EB - - - ex de, hl + 230 D1:AB4D E1 - - - pop hl + 231 D1:AB4E - - - - + 232 D1:AB4E - - - - ; ld a, (IDeltaY1) + 233 D1:AB4E - - - - ; neg + 234 D1:AB4E F1 - - - pop af + 235 D1:AB4F - - - - IRasterTriangleInner: + 236 D1:AB4F - - - - IDeltaX0=$+1 + 237 D1:AB4F 01 00 00 00 ld bc, $000000 + 238 D1:AB53 DD 09 - - add ix, bc + 239 D1:AB55 30 09 - - jr nc, $+11 + 240 D1:AB57 - - - - IDeltaY0=$+1 + 241 D1:AB57 01 00 FF FF ld bc, $FFFF00 + 242 D1:AB5B - - - - ISMC_Code0=$ + 243 D1:AB5B 00 - - - nop + 244 D1:AB5C DD 09 - - add ix, bc + 245 D1:AB5E 38 FB - - jr c, $-3 + 246 D1:AB60 - - - - + 247 D1:AB60 - - - - IDeltaX1=$+1 + 248 D1:AB60 01 00 00 00 ld bc, $000000 + 249 D1:AB64 FD 09 - - add iy, bc + 250 D1:AB66 30 0B - - jr nc, $+13 + 251 D1:AB68 - - - - IDeltaY1=$+1 + 252 D1:AB68 01 00 FF FF ld bc, $FFFF00 + 253 D1:AB6C - - - - ISMC_Code1=$ + 254 D1:AB6C 00 - - - nop + 255 D1:AB6D FD 09 - - add iy, bc + 256 D1:AB6F 38 FB - - jr c, $-3 + 257 D1:AB71 52 03 - - inc.s bc ;reset bcu set by restoring ld bc,$FFxxxx + 258 D1:AB73 - - - - + 259 D1:AB73 - - - - ; hl = adress1, de = adress2 + 260 D1:AB73 ED 52 - - sbc hl, de + 261 D1:AB75 38 2F - - jr c, IRasterInverted + 262 D1:AB77 28 21 - - jr z, IRasterNoPixel + 263 D1:AB79 44 - - - ld b, h + 264 D1:AB7A 4D - - - ld c, l + 265 D1:AB7B - - - - + 266 D1:AB7B 21 A8 AB D1 ld hl, IRasterRBG8 + 267 D1:AB7F ED A0 - - ldi + 268 D1:AB81 E2 97 AB D1 jp po, IRasterContinue + 269 D1:AB85 37 - - - scf + 270 D1:AB86 ED 62 - - sbc hl, hl + 271 D1:AB88 19 - - - add hl, de + 272 D1:AB89 E5 - - - push hl + 273 D1:AB8A ED B0 - - ldir + 274 D1:AB8C E1 - - - pop hl + 275 D1:AB8D - - - - + 276 D1:AB8D 0E 40 - - ld c, 64 + 277 D1:AB8F 04 - - - inc b + 278 D1:AB90 09 - - - add hl, bc + 279 D1:AB91 EB - - - ex de, hl + 280 D1:AB92 09 - - - add hl, bc + 281 D1:AB93 3D - - - dec a + 282 D1:AB94 20 B9 - - jr nz,IRasterTriangleInner + 283 D1:AB96 C9 - - - ret + 284 D1:AB97 - - - - IRasterContinue: + 285 D1:AB97 37 - - - scf + 286 D1:AB98 ED 62 - - sbc hl, hl + 287 D1:AB9A - - - - IRasterNoPixel: + 288 D1:AB9A 19 - - - add hl, de + 289 D1:AB9B 01 40 01 00 ld bc, 320 + 290 D1:AB9F 09 - - - add hl, bc + 291 D1:ABA0 EB - - - ex de, hl + 292 D1:ABA1 09 - - - add hl, bc + 293 D1:ABA2 3D - - - dec a + 294 D1:ABA3 20 AA - - jr nz,IRasterTriangleInner + 295 D1:ABA5 C9 - - - ret + 296 D1:ABA6 - - - - IRasterInverted: + 297 D1:ABA6 19 - - - add hl, de + 298 D1:ABA7 - - - - ; hl --- de + 299 D1:ABA7 - - - - IRasterRBG8=$+1 + 300 D1:ABA7 36 00 - - ld (hl), $00 + 301 D1:ABA9 EB - - - ex de, hl + 302 D1:ABAA - - - - ; carry is set + 303 D1:ABAA ED 52 - - sbc hl, de + 304 D1:ABAC 44 - - - ld b, h + 305 D1:ABAD 4D - - - ld c, l + 306 D1:ABAE 19 - - - add hl, de + 307 D1:ABAF 28 08 - - jr z, IRasterSize1 + 308 D1:ABB1 D5 - - - push de + 309 D1:ABB2 ED 62 - - sbc hl, hl + 310 D1:ABB4 19 - - - add hl, de + 311 D1:ABB5 13 - - - inc de + 312 D1:ABB6 ED B0 - - ldir + 313 D1:ABB8 D1 - - - pop de + 314 D1:ABB9 - - - - IRasterSize1: + 315 D1:ABB9 23 - - - inc hl + 316 D1:ABBA - - - - + 317 D1:ABBA 0E 40 - - ld c, 64 + 318 D1:ABBC 04 - - - inc b + 319 D1:ABBD 09 - - - add hl, bc + 320 D1:ABBE EB - - - ex de, hl + 321 D1:ABBF 09 - - - add hl, bc + 322 D1:ABC0 3D - - - dec a + 323 D1:ABC1 20 8C - - jr nz, IRasterTriangleInner + 324 D1:ABC3 C9 - - - ret Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" - 3 D1:AC31 - - - - #include "vxMatrix.ez80" + 3 D1:ABC4 - - - - #include "vxMatrix.ez80" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" - 1 D1:AC31 - - - - #define VX_MATRIX_SIZE 18 - 2 D1:AC31 - - - - - 3 D1:AC31 - - - - vxIdentityMatrix: - 4 D1:AC31 40 00 00 - .db 64,0,0 - 5 D1:AC34 00 40 00 - .db 0,64,0 - 6 D1:AC37 00 00 40 - .db 0,0,64 - 7 D1:AC3A 00 00 00 00 + 1 D1:ABC4 - - - - #define VX_MATRIX_SIZE 18 + 2 D1:ABC4 - - - - + 3 D1:ABC4 - - - - vxIdentityMatrix: + 4 D1:ABC4 40 00 00 - .db 64,0,0 + 5 D1:ABC7 00 40 00 - .db 0,64,0 + 6 D1:ABCA 00 00 40 - .db 0,0,64 + 7 D1:ABCD 00 00 00 00 00 00 00 00 00 - - - .dl 0,0,0 - 8 D1:AC43 - - - - - 9 D1:AC43 - - - - vxMatrixLoadIdentity: - 10 D1:AC43 - - - - ; input : hl matrix - 11 D1:AC43 EB - - - ex de, hl - 12 D1:AC44 21 31 AC D1 ld hl, vxIdentityMatrix - 13 D1:AC48 01 12 00 00 ld bc, VX_MATRIX_SIZE - 14 D1:AC4C ED B0 - - ldir - 15 D1:AC4E EB - - - ex de, hl - 16 D1:AC4F 01 EE FF FF ld bc, -VX_MATRIX_SIZE - 17 D1:AC53 09 - - - add hl, bc - 18 D1:AC54 C9 - - - ret - 19 D1:AC55 - - - - vxMatrixRotationX: - 20 D1:AC55 - - - - #comment - 21 D1:AC55 ld a, l - 22 D1:AC55 ld hl, ISIN_TABLE - 23 D1:AC55 ld l, a - 24 D1:AC55 ld a, (hl) - 25 D1:AC55 ld (ix+7), a - 26 D1:AC55 neg - 27 D1:AC55 ld (ix+5), a - 28 D1:AC55 ld a, l - 29 D1:AC55 add a, 64 - 30 D1:AC55 ld l, a - 31 D1:AC55 ld c, (hl) - 32 D1:AC55 ld (ix+4), c - 33 D1:AC55 ld (ix+8), c - 34 D1:AC55 ld a, 64 - 35 D1:AC55 ld (ix+0), a - 36 D1:AC55 xor a, a - 37 D1:AC55 ld (ix+1), a - 38 D1:AC55 ld (ix+2), a - 39 D1:AC55 ld (ix+3), a - 40 D1:AC55 ld (ix+6), a - 41 D1:AC55 #endcomment - 42 D1:AC55 E5 - - - push hl - 43 D1:AC56 CD BE B1 D1 call vxSin - 44 D1:AC5A 7C - - - ld a, h - 45 D1:AC5B DD 77 07 - ld (ix+7), a - 46 D1:AC5E ED 44 - - neg - 47 D1:AC60 DD 77 05 - ld (ix+5), a - 48 D1:AC63 E1 - - - pop hl - 49 D1:AC64 CD BD B1 D1 call vxCos - 50 D1:AC68 DD 74 04 - ld (ix+4), h - 51 D1:AC6B DD 74 08 - ld (ix+8), h - 52 D1:AC6E 3E 40 - - ld a, 64 - 53 D1:AC70 DD 77 00 - ld (ix+0), a - 54 D1:AC73 AF - - - xor a, a - 55 D1:AC74 DD 77 01 - ld (ix+1), a - 56 D1:AC77 DD 77 02 - ld (ix+2), a - 57 D1:AC7A DD 77 03 - ld (ix+3), a - 58 D1:AC7D DD 77 06 - ld (ix+6), a - 59 D1:AC80 C9 - - - ret - 60 D1:AC81 - - - - vxMatrixRotationZ: - 61 D1:AC81 - - - - #comment - 62 D1:AC81 ld a, l - 63 D1:AC81 ld hl, ISIN_TABLE - 64 D1:AC81 ld l, a - 65 D1:AC81 ld a, (hl) - 66 D1:AC81 ld (ix+3), a - 67 D1:AC81 neg - 68 D1:AC81 ld (ix+1), a - 69 D1:AC81 ld a, l - 70 D1:AC81 add a, 64 - 71 D1:AC81 ld l, a - 72 D1:AC81 ld c, (hl) - 73 D1:AC81 ld (ix+0), c - 74 D1:AC81 ld (ix+4), c - 75 D1:AC81 ld a, 64 - 76 D1:AC81 ld (ix+8), a - 77 D1:AC81 xor a, a - 78 D1:AC81 ld (ix+2), a - 79 D1:AC81 ld (ix+6), a - 80 D1:AC81 ld (ix+7), a - 81 D1:AC81 ld (ix+5), a - 82 D1:AC81 #endcomment - 83 D1:AC81 E5 - - - push hl - 84 D1:AC82 CD BE B1 D1 call vxSin - 85 D1:AC86 7C - - - ld a, h - 86 D1:AC87 DD 77 03 - ld (ix+3), a - 87 D1:AC8A ED 44 - - neg - 88 D1:AC8C DD 77 01 - ld (ix+1), a - 89 D1:AC8F E1 - - - pop hl - 90 D1:AC90 CD BD B1 D1 call vxCos - 91 D1:AC94 DD 74 00 - ld (ix+0), h - 92 D1:AC97 DD 74 04 - ld (ix+4), h - 93 D1:AC9A 3E 40 - - ld a, 64 - 94 D1:AC9C DD 77 08 - ld (ix+8), a - 95 D1:AC9F AF - - - xor a, a - 96 D1:ACA0 DD 77 02 - ld (ix+2), a - 97 D1:ACA3 DD 77 06 - ld (ix+6), a - 98 D1:ACA6 DD 77 07 - ld (ix+7), a - 99 D1:ACA9 DD 77 05 - ld (ix+5), a - 100 D1:ACAC C9 - - - ret - 101 D1:ACAD - - - - vxMatrixRotationY: - 102 D1:ACAD E5 - - - push hl - 103 D1:ACAE CD BE B1 D1 call vxSin - 104 D1:ACB2 7C - - - ld a, h - 105 D1:ACB3 DD 77 02 - ld (ix+2), a - 106 D1:ACB6 ED 44 - - neg - 107 D1:ACB8 DD 77 06 - ld (ix+6), a - 108 D1:ACBB E1 - - - pop hl - 109 D1:ACBC CD BD B1 D1 call vxCos - 110 D1:ACC0 DD 74 00 - ld (ix+0), h - 111 D1:ACC3 DD 74 08 - ld (ix+8), h - 112 D1:ACC6 3E 40 - - ld a, 64 - 113 D1:ACC8 DD 77 04 - ld (ix+4), a - 114 D1:ACCB AF - - - xor a, a - 115 D1:ACCC DD 77 01 - ld (ix+1), a - 116 D1:ACCF DD 77 03 - ld (ix+3), a - 117 D1:ACD2 DD 77 05 - ld (ix+5), a - 118 D1:ACD5 DD 77 07 - ld (ix+7), a - 119 D1:ACD8 C9 - - - ret - 120 D1:ACD9 - - - - vxMatrixMlt: - 121 D1:ACD9 - - - - ; (hl) = (iy) * (ix) - 122 D1:ACD9 - - - - ; 116 bytes, ~3800 TStates - 123 D1:ACD9 EB - - - ex de, hl - 124 D1:ACDA 01 00 03 00 ld bc, 768 - 125 D1:ACDE - - - - vxMatrixColLoop: - 126 D1:ACDE C5 - - - push bc - 127 D1:ACDF 06 03 - - ld b, 3 - 128 D1:ACE1 - - - - vxMatrixRowLoop: - 129 D1:ACE1 C5 - - - push bc - 130 D1:ACE2 DD 66 00 - ld h, (ix+0) - 131 D1:ACE5 FD 6E 00 - ld l, (iy+0) - 132 D1:ACE8 AF - - - xor a, a - 133 D1:ACE9 CB 7C 28 01 + 8 D1:ABD6 - - - - + 9 D1:ABD6 - - - - vxMatrixLoadIdentity: + 10 D1:ABD6 - - - - ; input : hl matrix + 11 D1:ABD6 EB - - - ex de, hl + 12 D1:ABD7 21 C4 AB D1 ld hl, vxIdentityMatrix + 13 D1:ABDB 01 12 00 00 ld bc, VX_MATRIX_SIZE + 14 D1:ABDF ED B0 - - ldir + 15 D1:ABE1 EB - - - ex de, hl + 16 D1:ABE2 01 EE FF FF ld bc, -VX_MATRIX_SIZE + 17 D1:ABE6 09 - - - add hl, bc + 18 D1:ABE7 C9 - - - ret + 19 D1:ABE8 - - - - vxMatrixRotationX: + 20 D1:ABE8 - - - - #comment + 21 D1:ABE8 ld a, l + 22 D1:ABE8 ld hl, ISIN_TABLE + 23 D1:ABE8 ld l, a + 24 D1:ABE8 ld a, (hl) + 25 D1:ABE8 ld (ix+7), a + 26 D1:ABE8 neg + 27 D1:ABE8 ld (ix+5), a + 28 D1:ABE8 ld a, l + 29 D1:ABE8 add a, 64 + 30 D1:ABE8 ld l, a + 31 D1:ABE8 ld c, (hl) + 32 D1:ABE8 ld (ix+4), c + 33 D1:ABE8 ld (ix+8), c + 34 D1:ABE8 ld a, 64 + 35 D1:ABE8 ld (ix+0), a + 36 D1:ABE8 xor a, a + 37 D1:ABE8 ld (ix+1), a + 38 D1:ABE8 ld (ix+2), a + 39 D1:ABE8 ld (ix+3), a + 40 D1:ABE8 ld (ix+6), a + 41 D1:ABE8 #endcomment + 42 D1:ABE8 E5 - - - push hl + 43 D1:ABE9 CD 51 B1 D1 call vxSin + 44 D1:ABED 7C - - - ld a, h + 45 D1:ABEE DD 77 07 - ld (ix+7), a + 46 D1:ABF1 ED 44 - - neg + 47 D1:ABF3 DD 77 05 - ld (ix+5), a + 48 D1:ABF6 E1 - - - pop hl + 49 D1:ABF7 CD 50 B1 D1 call vxCos + 50 D1:ABFB DD 74 04 - ld (ix+4), h + 51 D1:ABFE DD 74 08 - ld (ix+8), h + 52 D1:AC01 3E 40 - - ld a, 64 + 53 D1:AC03 DD 77 00 - ld (ix+0), a + 54 D1:AC06 AF - - - xor a, a + 55 D1:AC07 DD 77 01 - ld (ix+1), a + 56 D1:AC0A DD 77 02 - ld (ix+2), a + 57 D1:AC0D DD 77 03 - ld (ix+3), a + 58 D1:AC10 DD 77 06 - ld (ix+6), a + 59 D1:AC13 C9 - - - ret + 60 D1:AC14 - - - - vxMatrixRotationZ: + 61 D1:AC14 - - - - #comment + 62 D1:AC14 ld a, l + 63 D1:AC14 ld hl, ISIN_TABLE + 64 D1:AC14 ld l, a + 65 D1:AC14 ld a, (hl) + 66 D1:AC14 ld (ix+3), a + 67 D1:AC14 neg + 68 D1:AC14 ld (ix+1), a + 69 D1:AC14 ld a, l + 70 D1:AC14 add a, 64 + 71 D1:AC14 ld l, a + 72 D1:AC14 ld c, (hl) + 73 D1:AC14 ld (ix+0), c + 74 D1:AC14 ld (ix+4), c + 75 D1:AC14 ld a, 64 + 76 D1:AC14 ld (ix+8), a + 77 D1:AC14 xor a, a + 78 D1:AC14 ld (ix+2), a + 79 D1:AC14 ld (ix+6), a + 80 D1:AC14 ld (ix+7), a + 81 D1:AC14 ld (ix+5), a + 82 D1:AC14 #endcomment + 83 D1:AC14 E5 - - - push hl + 84 D1:AC15 CD 51 B1 D1 call vxSin + 85 D1:AC19 7C - - - ld a, h + 86 D1:AC1A DD 77 03 - ld (ix+3), a + 87 D1:AC1D ED 44 - - neg + 88 D1:AC1F DD 77 01 - ld (ix+1), a + 89 D1:AC22 E1 - - - pop hl + 90 D1:AC23 CD 50 B1 D1 call vxCos + 91 D1:AC27 DD 74 00 - ld (ix+0), h + 92 D1:AC2A DD 74 04 - ld (ix+4), h + 93 D1:AC2D 3E 40 - - ld a, 64 + 94 D1:AC2F DD 77 08 - ld (ix+8), a + 95 D1:AC32 AF - - - xor a, a + 96 D1:AC33 DD 77 02 - ld (ix+2), a + 97 D1:AC36 DD 77 06 - ld (ix+6), a + 98 D1:AC39 DD 77 07 - ld (ix+7), a + 99 D1:AC3C DD 77 05 - ld (ix+5), a + 100 D1:AC3F C9 - - - ret + 101 D1:AC40 - - - - vxMatrixRotationY: + 102 D1:AC40 E5 - - - push hl + 103 D1:AC41 CD 51 B1 D1 call vxSin + 104 D1:AC45 7C - - - ld a, h + 105 D1:AC46 DD 77 02 - ld (ix+2), a + 106 D1:AC49 ED 44 - - neg + 107 D1:AC4B DD 77 06 - ld (ix+6), a + 108 D1:AC4E E1 - - - pop hl + 109 D1:AC4F CD 50 B1 D1 call vxCos + 110 D1:AC53 DD 74 00 - ld (ix+0), h + 111 D1:AC56 DD 74 08 - ld (ix+8), h + 112 D1:AC59 3E 40 - - ld a, 64 + 113 D1:AC5B DD 77 04 - ld (ix+4), a + 114 D1:AC5E AF - - - xor a, a + 115 D1:AC5F DD 77 01 - ld (ix+1), a + 116 D1:AC62 DD 77 03 - ld (ix+3), a + 117 D1:AC65 DD 77 05 - ld (ix+5), a + 118 D1:AC68 DD 77 07 - ld (ix+7), a + 119 D1:AC6B C9 - - - ret + 120 D1:AC6C - - - - vxMatrixMlt: + 121 D1:AC6C - - - - ; (hl) = (iy) * (ix) + 122 D1:AC6C - - - - ; 116 bytes, ~3800 TStates + 123 D1:AC6C EB - - - ex de, hl + 124 D1:AC6D 01 00 03 00 ld bc, 768 + 125 D1:AC71 - - - - vxMatrixColLoop: + 126 D1:AC71 C5 - - - push bc + 127 D1:AC72 06 03 - - ld b, 3 + 128 D1:AC74 - - - - vxMatrixRowLoop: + 129 D1:AC74 C5 - - - push bc + 130 D1:AC75 DD 66 00 - ld h, (ix+0) + 131 D1:AC78 FD 6E 00 - ld l, (iy+0) + 132 D1:AC7B AF - - - xor a, a + 133 D1:AC7C CB 7C 28 01 95 - - - bit 7, h \ jr z, $+3 \ sub a, l - 134 D1:ACEE CB 7D 28 01 + 134 D1:AC81 CB 7D 28 01 94 - - - bit 7, l \ jr z, $+3 \ sub a, h - 135 D1:ACF3 ED 6C - - mlt hl - 136 D1:ACF5 DD 46 01 - ld b, (ix+1) - 137 D1:ACF8 FD 4E 03 - ld c, (iy+3) - 138 D1:ACFB CB 78 28 01 + 135 D1:AC86 ED 6C - - mlt hl + 136 D1:AC88 DD 46 01 - ld b, (ix+1) + 137 D1:AC8B FD 4E 03 - ld c, (iy+3) + 138 D1:AC8E CB 78 28 01 91 - - - bit 7, b \ jr z, $+3 \ sub a, c - 139 D1:AD00 CB 79 28 01 + 139 D1:AC93 CB 79 28 01 90 - - - bit 7, c \ jr z, $+3 \ sub a, b - 140 D1:AD05 ED 4C - - mlt bc - 141 D1:AD07 09 - - - add hl, bc - 142 D1:AD08 DD 46 02 - ld b, (ix+2) - 143 D1:AD0B FD 4E 06 - ld c, (iy+6) - 144 D1:AD0E CB 78 28 01 + 140 D1:AC98 ED 4C - - mlt bc + 141 D1:AC9A 09 - - - add hl, bc + 142 D1:AC9B DD 46 02 - ld b, (ix+2) + 143 D1:AC9E FD 4E 06 - ld c, (iy+6) + 144 D1:ACA1 CB 78 28 01 91 - - - bit 7, b \ jr z, $+3 \ sub a, c - 145 D1:AD13 CB 79 28 01 + 145 D1:ACA6 CB 79 28 01 90 - - - bit 7, c \ jr z, $+3 \ sub a, b - 146 D1:AD18 ED 4C - - mlt bc - 147 D1:AD1A 09 - - - add hl, bc - 148 D1:AD1B 47 - - - ld b, a - 149 D1:AD1C AF - - - xor a, a - 150 D1:AD1D 4F - - - ld c, a - 151 D1:AD1E 09 - - - add hl, bc - 152 D1:AD1F 29 - - - add hl, hl - 153 D1:AD20 29 - - - add hl, hl - 154 D1:AD21 7C - - - ld a, h - 155 D1:AD22 12 - - - ld (de), a - 156 D1:AD23 13 - - - inc de - 157 D1:AD24 FD 23 - - inc iy - 158 D1:AD26 C1 - - - pop bc - 159 D1:AD27 10 B8 - - djnz vxMatrixRowLoop - 160 D1:AD29 ED 32 03 - lea ix, ix+3 - 161 D1:AD2C ED 33 FD - lea iy, iy-3 - 162 D1:AD2F C1 - - - pop bc - 163 D1:AD30 10 AC - - djnz vxMatrixColLoop - 164 D1:AD32 ED 32 F7 - lea ix, ix-9 - 165 D1:AD35 EB - - - ex de, hl - 166 D1:AD36 01 F7 FF FF ld bc, -9 - 167 D1:AD3A 09 - - - add hl, bc - 168 D1:AD3B C9 - - - ret - 169 D1:AD3C - - - - vxMatrixTransform: - 170 D1:AD3C - - - - ; (hl) = (iy)*(ix) with translation - 171 D1:AD3C - - - - ; iy is a animation matrix, ix is a world matrix, hl is world matrix - 172 D1:AD3C E5 - - - push hl - 173 D1:AD3D ED 33 09 - lea iy, iy+9 ; load up the translation of matrix 0 - 174 D1:AD40 CD E1 AD D1 call vxfTransform - 175 D1:AD44 ED 33 F7 - lea iy, iy-9 - 176 D1:AD47 E1 - - - pop hl - 177 D1:AD48 CD D9 AC D1 call vxMatrixMlt - 178 D1:AD4C - - - - ; copy translation data to result (hl) - 179 D1:AD4C 01 09 00 00 ld bc, 9 - 180 D1:AD50 09 - - - add hl, bc - 181 D1:AD51 11 06 34 D0 ld de, vxPosition - 182 D1:AD55 EB - - - ex de, hl - 183 D1:AD56 ED B0 - - ldir - 184 D1:AD58 01 EE FF FF ld bc, -VX_MATRIX_SIZE - 185 D1:AD5C EB - - - ex de, hl - 186 D1:AD5D 09 - - - add hl, bc - 187 D1:AD5E C9 - - - ret - 188 D1:AD5F - - - - vxMatrixTranspose: - 189 D1:AD5F - - - - ; 192 TStates + translation - 190 D1:AD5F DD 4E 03 - ld c, (ix+3) - 191 D1:AD62 DD 7E 01 - ld a, (ix+1) - 192 D1:AD65 DD 77 03 - ld (ix+3), a - 193 D1:AD68 DD 71 01 - ld (ix+1), c - 194 D1:AD6B DD 4E 06 - ld c, (ix+6) - 195 D1:AD6E DD 7E 02 - ld a, (ix+2) - 196 D1:AD71 DD 77 06 - ld (ix+6), a - 197 D1:AD74 DD 71 02 - ld (ix+2), c - 198 D1:AD77 DD 4E 07 - ld c, (ix+7) - 199 D1:AD7A DD 7E 05 - ld a, (ix+5) - 200 D1:AD7D DD 77 07 - ld (ix+7), a - 201 D1:AD80 DD 71 05 - ld (ix+5), c - 202 D1:AD83 - - - - #comment - 203 D1:AD83 ld de, (ix+9) - 204 D1:AD83 or a, a - 205 D1:AD83 sbc hl, hl - 206 D1:AD83 sbc hl, de - 207 D1:AD83 ld (ix+9), hl - 208 D1:AD83 ld de, (ix+12) - 209 D1:AD83 or a, a - 210 D1:AD83 sbc hl, hl - 211 D1:AD83 sbc hl, de - 212 D1:AD83 ld (ix+12), hl - 213 D1:AD83 ld de, (ix+15) - 214 D1:AD83 or a, a - 215 D1:AD83 sbc hl, hl - 216 D1:AD83 sbc hl, de - 217 D1:AD83 ld (ix+15), hl - 218 D1:AD83 #endcomment - 219 D1:AD83 C9 - - - ret - 220 D1:AD84 - - - - vxMatrixLightning: - 221 D1:AD84 EB - - - ex de, hl - 222 D1:AD85 06 03 - - ld b, 3 - 223 D1:AD87 - - - - vxMatrixLightLoop: - 224 D1:AD87 C5 - - - push bc - 225 D1:AD88 D5 - - - push de - 226 D1:AD89 CD F1 B2 D1 call vxDotProduct - 227 D1:AD8D D1 - - - pop de - 228 D1:AD8E 29 - - - add hl, hl - 229 D1:AD8F 29 - - - add hl, hl - 230 D1:AD90 7C - - - ld a, h - 231 D1:AD91 12 - - - ld (de), a - 232 D1:AD92 13 - - - inc de - 233 D1:AD93 ED 32 03 - lea ix, ix+3 - 234 D1:AD96 C1 - - - pop bc - 235 D1:AD97 10 EE - - djnz vxMatrixLightLoop - 236 D1:AD99 ED 32 F7 - lea ix, ix-9 - 237 D1:AD9C D5 - - - push de - 238 D1:AD9D FD 27 04 - ld hl, (iy+VX_LIGHT_POSITION) - 239 D1:ADA0 FD 17 07 - ld de, (iy+VX_LIGHT_POSITION+3) - 240 D1:ADA3 B7 - - - or a, a - 241 D1:ADA4 ED 52 - - sbc hl, de - 242 D1:ADA6 E1 - - - pop hl - 243 D1:ADA7 28 30 - - jr z, vxMatrixLightEarlyOut - 244 D1:ADA9 2B 2B 2B - dec hl \ dec hl \ dec hl - 245 D1:ADAC E5 - - - push hl - 246 D1:ADAD - - - - ; transform lightning position - 247 D1:ADAD CD E1 AD D1 call vxfTransform - 248 D1:ADB1 - - - - ; fetch value and divide them - 249 D1:ADB1 - - - - ; value should be copied to (hl) - 250 D1:ADB1 E1 - - - pop hl - 251 D1:ADB2 01 07 00 00 ld bc, VX_LIGHT_POSITION+3 - 252 D1:ADB6 09 - - - add hl, bc - 253 D1:ADB7 EB - - - ex de, hl - 254 D1:ADB8 - - - - ; de = adress of position. - 255 D1:ADB8 2A 0C 34 D0 ld hl, (vxPosition+6) - 256 D1:ADBC 29 - - - add hl, hl - 257 D1:ADBD 29 - - - add hl, hl - 258 D1:ADBE - - - - ; copy hlu, h to (de) - 259 D1:ADBE EB - - - ex de, hl - 260 D1:ADBF ED 1F - - ld (hl), de - 261 D1:ADC1 2B - - - dec hl - 262 D1:ADC2 2B - - - dec hl - 263 D1:ADC3 EB - - - ex de, hl - 264 D1:ADC4 2A 09 34 D0 ld hl, (vxPosition+3) - 265 D1:ADC8 29 - - - add hl, hl - 266 D1:ADC9 29 - - - add hl, hl - 267 D1:ADCA EB - - - ex de, hl - 268 D1:ADCB ED 1F - - ld (hl), de - 269 D1:ADCD 2B - - - dec hl - 270 D1:ADCE 2B - - - dec hl - 271 D1:ADCF EB - - - ex de, hl - 272 D1:ADD0 2A 06 34 D0 ld hl, (vxPosition) - 273 D1:ADD4 29 - - - add hl, hl - 274 D1:ADD5 29 - - - add hl, hl - 275 D1:ADD6 EB - - - ex de, hl - 276 D1:ADD7 ED 1F - - ld (hl), de - 277 D1:ADD9 - - - - ; AMBIANT_VALUE was writed with bad value. - 278 D1:ADD9 - - - - vxMatrixLightEarlyOut: - 279 D1:ADD9 FD 7E 03 - ld a, (iy+VX_LIGHT_AMBIANT) - 280 D1:ADDC 77 - - - ld (hl), a - 281 D1:ADDD 2B 2B 2B - dec hl \ dec hl \ dec hl - 282 D1:ADE0 C9 - - - ret - 283 D1:ADE1 - - - - vxfTransform: - 284 D1:ADE1 - - - - ; input : iy vector, ix matrix - 285 D1:ADE1 - - - - ; [ix+0]*[iy]+[ix+1]*[iy+2]+[ix+2]*[iy+4]+[ix+9]=x - 286 D1:ADE1 - - - - ; [ix+3]*[iy]+[ix+4]*[iy+2]+{ix+5]*[iy+4]+[ix+12]=y - 287 D1:ADE1 - - - - ; [ix+6]*[iy]+[ix+7]*[iy+2]+[ix+8]*[iy+4]+[ix+15]=z - 288 D1:ADE1 - - - - ; From 1566+x? TStates to 1654 TStates, 333 bytes - 289 D1:ADE1 - - - - ; X coordinate - 290 D1:ADE1 FD 07 00 - ld bc, (iy+0) - 291 D1:ADE4 DD 27 09 - ld hl, (ix+9) - 292 D1:ADE7 DD 7E 00 - ld a, (ix+0) - 293 D1:ADEA EB 60 6F ED + 146 D1:ACAB ED 4C - - mlt bc + 147 D1:ACAD 09 - - - add hl, bc + 148 D1:ACAE 47 - - - ld b, a + 149 D1:ACAF AF - - - xor a, a + 150 D1:ACB0 4F - - - ld c, a + 151 D1:ACB1 09 - - - add hl, bc + 152 D1:ACB2 29 - - - add hl, hl + 153 D1:ACB3 29 - - - add hl, hl + 154 D1:ACB4 7C - - - ld a, h + 155 D1:ACB5 12 - - - ld (de), a + 156 D1:ACB6 13 - - - inc de + 157 D1:ACB7 FD 23 - - inc iy + 158 D1:ACB9 C1 - - - pop bc + 159 D1:ACBA 10 B8 - - djnz vxMatrixRowLoop + 160 D1:ACBC ED 32 03 - lea ix, ix+3 + 161 D1:ACBF ED 33 FD - lea iy, iy-3 + 162 D1:ACC2 C1 - - - pop bc + 163 D1:ACC3 10 AC - - djnz vxMatrixColLoop + 164 D1:ACC5 ED 32 F7 - lea ix, ix-9 + 165 D1:ACC8 EB - - - ex de, hl + 166 D1:ACC9 01 F7 FF FF ld bc, -9 + 167 D1:ACCD 09 - - - add hl, bc + 168 D1:ACCE C9 - - - ret + 169 D1:ACCF - - - - vxMatrixTransform: + 170 D1:ACCF - - - - ; (hl) = (iy)*(ix) with translation + 171 D1:ACCF - - - - ; iy is a animation matrix, ix is a world matrix, hl is world matrix + 172 D1:ACCF E5 - - - push hl + 173 D1:ACD0 ED 33 09 - lea iy, iy+9 ; load up the translation of matrix 0 + 174 D1:ACD3 CD 74 AD D1 call vxfTransform + 175 D1:ACD7 ED 33 F7 - lea iy, iy-9 + 176 D1:ACDA E1 - - - pop hl + 177 D1:ACDB CD 6C AC D1 call vxMatrixMlt + 178 D1:ACDF - - - - ; copy translation data to result (hl) + 179 D1:ACDF 01 09 00 00 ld bc, 9 + 180 D1:ACE3 09 - - - add hl, bc + 181 D1:ACE4 11 06 34 D0 ld de, vxPosition + 182 D1:ACE8 EB - - - ex de, hl + 183 D1:ACE9 ED B0 - - ldir + 184 D1:ACEB 01 EE FF FF ld bc, -VX_MATRIX_SIZE + 185 D1:ACEF EB - - - ex de, hl + 186 D1:ACF0 09 - - - add hl, bc + 187 D1:ACF1 C9 - - - ret + 188 D1:ACF2 - - - - vxMatrixTranspose: + 189 D1:ACF2 - - - - ; 192 TStates + translation + 190 D1:ACF2 DD 4E 03 - ld c, (ix+3) + 191 D1:ACF5 DD 7E 01 - ld a, (ix+1) + 192 D1:ACF8 DD 77 03 - ld (ix+3), a + 193 D1:ACFB DD 71 01 - ld (ix+1), c + 194 D1:ACFE DD 4E 06 - ld c, (ix+6) + 195 D1:AD01 DD 7E 02 - ld a, (ix+2) + 196 D1:AD04 DD 77 06 - ld (ix+6), a + 197 D1:AD07 DD 71 02 - ld (ix+2), c + 198 D1:AD0A DD 4E 07 - ld c, (ix+7) + 199 D1:AD0D DD 7E 05 - ld a, (ix+5) + 200 D1:AD10 DD 77 07 - ld (ix+7), a + 201 D1:AD13 DD 71 05 - ld (ix+5), c + 202 D1:AD16 - - - - #comment + 203 D1:AD16 ld de, (ix+9) + 204 D1:AD16 or a, a + 205 D1:AD16 sbc hl, hl + 206 D1:AD16 sbc hl, de + 207 D1:AD16 ld (ix+9), hl + 208 D1:AD16 ld de, (ix+12) + 209 D1:AD16 or a, a + 210 D1:AD16 sbc hl, hl + 211 D1:AD16 sbc hl, de + 212 D1:AD16 ld (ix+12), hl + 213 D1:AD16 ld de, (ix+15) + 214 D1:AD16 or a, a + 215 D1:AD16 sbc hl, hl + 216 D1:AD16 sbc hl, de + 217 D1:AD16 ld (ix+15), hl + 218 D1:AD16 #endcomment + 219 D1:AD16 C9 - - - ret + 220 D1:AD17 - - - - vxMatrixLightning: + 221 D1:AD17 EB - - - ex de, hl + 222 D1:AD18 06 03 - - ld b, 3 + 223 D1:AD1A - - - - vxMatrixLightLoop: + 224 D1:AD1A C5 - - - push bc + 225 D1:AD1B D5 - - - push de + 226 D1:AD1C CD 84 B2 D1 call vxDotProduct + 227 D1:AD20 D1 - - - pop de + 228 D1:AD21 29 - - - add hl, hl + 229 D1:AD22 29 - - - add hl, hl + 230 D1:AD23 7C - - - ld a, h + 231 D1:AD24 12 - - - ld (de), a + 232 D1:AD25 13 - - - inc de + 233 D1:AD26 ED 32 03 - lea ix, ix+3 + 234 D1:AD29 C1 - - - pop bc + 235 D1:AD2A 10 EE - - djnz vxMatrixLightLoop + 236 D1:AD2C ED 32 F7 - lea ix, ix-9 + 237 D1:AD2F D5 - - - push de + 238 D1:AD30 FD 27 04 - ld hl, (iy+VX_LIGHT_POSITION) + 239 D1:AD33 FD 17 07 - ld de, (iy+VX_LIGHT_POSITION+3) + 240 D1:AD36 B7 - - - or a, a + 241 D1:AD37 ED 52 - - sbc hl, de + 242 D1:AD39 E1 - - - pop hl + 243 D1:AD3A 28 30 - - jr z, vxMatrixLightEarlyOut + 244 D1:AD3C 2B 2B 2B - dec hl \ dec hl \ dec hl + 245 D1:AD3F E5 - - - push hl + 246 D1:AD40 - - - - ; transform lightning position + 247 D1:AD40 CD 74 AD D1 call vxfTransform + 248 D1:AD44 - - - - ; fetch value and divide them + 249 D1:AD44 - - - - ; value should be copied to (hl) + 250 D1:AD44 E1 - - - pop hl + 251 D1:AD45 01 07 00 00 ld bc, VX_LIGHT_POSITION+3 + 252 D1:AD49 09 - - - add hl, bc + 253 D1:AD4A EB - - - ex de, hl + 254 D1:AD4B - - - - ; de = adress of position. + 255 D1:AD4B 2A 0C 34 D0 ld hl, (vxPosition+6) + 256 D1:AD4F 29 - - - add hl, hl + 257 D1:AD50 29 - - - add hl, hl + 258 D1:AD51 - - - - ; copy hlu, h to (de) + 259 D1:AD51 EB - - - ex de, hl + 260 D1:AD52 ED 1F - - ld (hl), de + 261 D1:AD54 2B - - - dec hl + 262 D1:AD55 2B - - - dec hl + 263 D1:AD56 EB - - - ex de, hl + 264 D1:AD57 2A 09 34 D0 ld hl, (vxPosition+3) + 265 D1:AD5B 29 - - - add hl, hl + 266 D1:AD5C 29 - - - add hl, hl + 267 D1:AD5D EB - - - ex de, hl + 268 D1:AD5E ED 1F - - ld (hl), de + 269 D1:AD60 2B - - - dec hl + 270 D1:AD61 2B - - - dec hl + 271 D1:AD62 EB - - - ex de, hl + 272 D1:AD63 2A 06 34 D0 ld hl, (vxPosition) + 273 D1:AD67 29 - - - add hl, hl + 274 D1:AD68 29 - - - add hl, hl + 275 D1:AD69 EB - - - ex de, hl + 276 D1:AD6A ED 1F - - ld (hl), de + 277 D1:AD6C - - - - ; AMBIANT_VALUE was writed with bad value. + 278 D1:AD6C - - - - vxMatrixLightEarlyOut: + 279 D1:AD6C FD 7E 03 - ld a, (iy+VX_LIGHT_AMBIANT) + 280 D1:AD6F 77 - - - ld (hl), a + 281 D1:AD70 2B 2B 2B - dec hl \ dec hl \ dec hl + 282 D1:AD73 C9 - - - ret + 283 D1:AD74 - - - - vxfTransform: + 284 D1:AD74 - - - - ; input : iy vector, ix matrix + 285 D1:AD74 - - - - ; [ix+0]*[iy]+[ix+1]*[iy+2]+[ix+2]*[iy+4]+[ix+9]=x + 286 D1:AD74 - - - - ; [ix+3]*[iy]+[ix+4]*[iy+2]+{ix+5]*[iy+4]+[ix+12]=y + 287 D1:AD74 - - - - ; [ix+6]*[iy]+[ix+7]*[iy+2]+[ix+8]*[iy+4]+[ix+15]=z + 288 D1:AD74 - - - - ; From 1566+x? TStates to 1654 TStates, 333 bytes + 289 D1:AD74 - - - - ; X coordinate + 290 D1:AD74 FD 07 00 - ld bc, (iy+0) + 291 D1:AD77 DD 27 09 - ld hl, (ix+9) + 292 D1:AD7A DD 7E 00 - ld a, (ix+0) + 293 D1:AD7D EB 60 6F ED 6C FE 80 38 02 ED 42 CB 78 47 28 03 @@ -1005,9 +925,9 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" 4C 09 19 - madd Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" - 294 D1:AE09 DD 7E 01 - ld a, (ix+1) - 295 D1:AE0C FD 07 02 - ld bc, (iy+2) - 296 D1:AE0F EB 60 6F ED + 294 D1:AD9C DD 7E 01 - ld a, (ix+1) + 295 D1:AD9F FD 07 02 - ld bc, (iy+2) + 296 D1:ADA2 EB 60 6F ED 6C FE 80 38 02 ED 42 CB 78 47 28 03 @@ -1017,9 +937,9 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" 4C 09 19 - madd Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" - 297 D1:AE2E DD 7E 02 - ld a, (ix+2) - 298 D1:AE31 FD 07 04 - ld bc, (iy+4) - 299 D1:AE34 51 5F ED 5C + 297 D1:ADC1 DD 7E 02 - ld a, (ix+2) + 298 D1:ADC4 FD 07 04 - ld bc, (iy+4) + 299 D1:ADC7 51 5F ED 5C 19 EB 60 6F ED 6C FE 80 38 02 ED 42 @@ -1029,11 +949,11 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" 29 29 29 19 madd.f Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" - 300 D1:AE54 22 06 34 D0 ld (vxPosition), hl - 301 D1:AE58 - - - - ; Y coordinate - 302 D1:AE58 DD 27 0C - ld hl, (ix+12) - 303 D1:AE5B DD 7E 05 - ld a, (ix+5) - 304 D1:AE5E EB 60 6F ED + 300 D1:ADE7 22 06 34 D0 ld (vxPosition), hl + 301 D1:ADEB - - - - ; Y coordinate + 302 D1:ADEB DD 27 0C - ld hl, (ix+12) + 303 D1:ADEE DD 7E 05 - ld a, (ix+5) + 304 D1:ADF1 EB 60 6F ED 6C FE 80 38 02 ED 42 CB 78 47 28 03 @@ -1043,9 +963,9 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" 4C 09 19 - madd Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" - 305 D1:AE7D DD 7E 04 - ld a, (ix+4) - 306 D1:AE80 FD 07 02 - ld bc, (iy+2) - 307 D1:AE83 EB 60 6F ED + 305 D1:AE10 DD 7E 04 - ld a, (ix+4) + 306 D1:AE13 FD 07 02 - ld bc, (iy+2) + 307 D1:AE16 EB 60 6F ED 6C FE 80 38 02 ED 42 CB 78 47 28 03 @@ -1055,9 +975,9 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" 4C 09 19 - madd Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" - 308 D1:AEA2 DD 7E 03 - ld a, (ix+3) - 309 D1:AEA5 FD 07 00 - ld bc, (iy+0) - 310 D1:AEA8 51 5F ED 5C + 308 D1:AE35 DD 7E 03 - ld a, (ix+3) + 309 D1:AE38 FD 07 00 - ld bc, (iy+0) + 310 D1:AE3B 51 5F ED 5C 19 EB 60 6F ED 6C FE 80 38 02 ED 42 @@ -1067,11 +987,11 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" 29 29 29 19 madd.f Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" - 311 D1:AEC8 22 09 34 D0 ld (vxPosition+3), hl - 312 D1:AECC - - - - ; Z coordinate - 313 D1:AECC DD 27 0F - ld hl, (ix+15) - 314 D1:AECF DD 7E 06 - ld a, (ix+6) - 315 D1:AED2 EB 60 6F ED + 311 D1:AE5B 22 09 34 D0 ld (vxPosition+3), hl + 312 D1:AE5F - - - - ; Z coordinate + 313 D1:AE5F DD 27 0F - ld hl, (ix+15) + 314 D1:AE62 DD 7E 06 - ld a, (ix+6) + 315 D1:AE65 EB 60 6F ED 6C FE 80 38 02 ED 42 CB 78 47 28 03 @@ -1081,9 +1001,9 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" 4C 09 19 - madd Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" - 316 D1:AEF1 DD 7E 07 - ld a, (ix+7) - 317 D1:AEF4 FD 07 02 - ld bc, (iy+2) - 318 D1:AEF7 EB 60 6F ED + 316 D1:AE84 DD 7E 07 - ld a, (ix+7) + 317 D1:AE87 FD 07 02 - ld bc, (iy+2) + 318 D1:AE8A EB 60 6F ED 6C FE 80 38 02 ED 42 CB 78 47 28 03 @@ -1093,9 +1013,9 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" 4C 09 19 - madd Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" - 319 D1:AF16 DD 7E 08 - ld a, (ix+8) - 320 D1:AF19 FD 07 04 - ld bc, (iy+4) - 321 D1:AF1C EB 60 6F ED + 319 D1:AEA9 DD 7E 08 - ld a, (ix+8) + 320 D1:AEAC FD 07 04 - ld bc, (iy+4) + 321 D1:AEAF EB 60 6F ED 6C FE 80 38 02 ED 42 CB 78 47 28 03 @@ -1105,1009 +1025,1009 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" 4C 09 19 - madd Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" - 322 D1:AF3B 22 0C 34 D0 ld (vxPosition+6), hl - 323 D1:AF3F C9 - - - ret + 322 D1:AECE 22 0C 34 D0 ld (vxPosition+6), hl + 323 D1:AED2 C9 - - - ret Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" - 4 D1:AF40 - - - - #include "vxQuaternion.ez80" + 4 D1:AED3 - - - - #include "vxQuaternion.ez80" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxQuaternion.ez80" - 1 D1:AF40 - - - - ; Quaternions utility functions - 2 D1:AF40 - - - - - 3 D1:AF40 - - - - #define VX_QUATERNION_SIZE $0C - 4 D1:AF40 - - - - #define VX_QW $0 - 5 D1:AF40 - - - - #define VX_QX $3 - 6 D1:AF40 - - - - #define VX_QY $6 - 7 D1:AF40 - - - - #define VX_QZ $9 - 8 D1:AF40 - - - - - 9 D1:AF40 - - - - vxIdentityQuaternion: - 10 D1:AF40 00 40 00 - .dl $004000 - 11 D1:AF43 00 00 00 - .dl $000000 - 12 D1:AF46 00 00 00 - .dl $000000 - 13 D1:AF49 00 00 00 - .dl $000000 - 14 D1:AF4C - - - - - 15 D1:AF4C - - - - vxQuaternionLoadIdentity: - 16 D1:AF4C EB - - - ex de, hl - 17 D1:AF4D 21 40 AF D1 ld hl, vxIdentityQuaternion - 18 D1:AF51 01 0C 00 00 ld bc, VX_QUATERNION_SIZE - 19 D1:AF55 ED B0 - - ldir - 20 D1:AF57 EB - - - ex de, hl - 21 D1:AF58 01 F4 FF FF ld bc, -VX_QUATERNION_SIZE - 22 D1:AF5C 09 - - - add hl, bc - 23 D1:AF5D C9 - - - ret - 24 D1:AF5E - - - - vxQuaternionLoadRotation: - 25 D1:AF5E C9 - - - ret - 26 D1:AF5F - - - - vxQuaternionMlt: - 27 D1:AF5F - - - - ; untested - 28 D1:AF5F DD 27 09 - ld hl, (ix+VX_QZ) - 29 D1:AF62 FD 17 09 - ld de, (iy+VX_QZ) - 30 D1:AF65 CD 9A B1 D1 call vxQuatMlt - 31 D1:AF69 E5 - - - push hl - 32 D1:AF6A DD 27 03 - ld hl, (ix+VX_QX) - 33 D1:AF6D FD 17 03 - ld de, (iy+VX_QX) - 34 D1:AF70 CD 9A B1 D1 call vxQuatMlt - 35 D1:AF74 E5 - - - push hl - 36 D1:AF75 DD 27 06 - ld hl, (ix+VX_QY) - 37 D1:AF78 FD 17 06 - ld de, (iy+VX_QY) - 38 D1:AF7B CD 9A B1 D1 call vxQuatMlt - 39 D1:AF7F E5 - - - push hl - 40 D1:AF80 DD 27 00 - ld hl, (ix+VX_QW) - 41 D1:AF83 FD 17 00 - ld de, (iy+VX_QW) - 42 D1:AF86 CD 9A B1 D1 call vxQuatMlt - 43 D1:AF8A D1 - - - pop de - 44 D1:AF8B B7 - - - or a, a - 45 D1:AF8C ED 52 - - sbc hl, de - 46 D1:AF8E D1 - - - pop de - 47 D1:AF8F B7 - - - or a, a - 48 D1:AF90 ED 52 - - sbc hl, de - 49 D1:AF92 D1 - - - pop de - 50 D1:AF93 B7 - - - or a, a - 51 D1:AF94 ED 52 - - sbc hl, de - 52 D1:AF96 - - - - ; got VX_QW - 53 D1:AF96 E5 - - - push hl - 54 D1:AF97 DD 27 00 - ld hl, (ix+VX_QW) - 55 D1:AF9A FD 17 03 - ld de, (iy+VX_QX) - 56 D1:AF9D CD 9A B1 D1 call vxQuatMlt - 57 D1:AFA1 E5 - - - push hl - 58 D1:AFA2 DD 27 03 - ld hl, (ix+VX_QX) - 59 D1:AFA5 FD 17 00 - ld de, (iy+VX_QW) - 60 D1:AFA8 CD 9A B1 D1 call vxQuatMlt - 61 D1:AFAC E5 - - - push hl - 62 D1:AFAD DD 27 09 - ld hl, (ix+VX_QZ) - 63 D1:AFB0 FD 17 06 - ld de, (iy+VX_QY) - 64 D1:AFB3 CD 9A B1 D1 call vxQuatMlt - 65 D1:AFB7 E5 - - - push hl - 66 D1:AFB8 DD 27 06 - ld hl, (ix+VX_QY) - 67 D1:AFBB FD 17 09 - ld de, (iy+VX_QZ) - 68 D1:AFBE CD 9A B1 D1 call vxQuatMlt - 69 D1:AFC2 D1 - - - pop de - 70 D1:AFC3 B7 - - - or a, a - 71 D1:AFC4 ED 52 - - sbc hl, de - 72 D1:AFC6 D1 - - - pop de - 73 D1:AFC7 19 - - - add hl, de - 74 D1:AFC8 D1 - - - pop de - 75 D1:AFC9 19 - - - add hl, de - 76 D1:AFCA - - - - ; got VX_QX - 77 D1:AFCA E5 - - - push hl - 78 D1:AFCB DD 27 00 - ld hl, (ix+VX_QW) - 79 D1:AFCE FD 17 06 - ld de, (iy+VX_QY) - 80 D1:AFD1 CD 9A B1 D1 call vxQuatMlt - 81 D1:AFD5 E5 - - - push hl - 82 D1:AFD6 DD 27 03 - ld hl, (ix+VX_QX) - 83 D1:AFD9 FD 17 09 - ld de, (iy+VX_QZ) - 84 D1:AFDC CD 9A B1 D1 call vxQuatMlt - 85 D1:AFE0 E5 - - - push hl - 86 D1:AFE1 DD 27 06 - ld hl, (ix+VX_QY) - 87 D1:AFE4 FD 17 00 - ld de, (iy+VX_QW) - 88 D1:AFE7 CD 9A B1 D1 call vxQuatMlt - 89 D1:AFEB E5 - - - push hl - 90 D1:AFEC DD 27 09 - ld hl, (ix+VX_QZ) - 91 D1:AFEF FD 17 03 - ld de, (iy+VX_QX) - 92 D1:AFF2 CD 9A B1 D1 call vxQuatMlt - 93 D1:AFF6 D1 - - - pop de - 94 D1:AFF7 19 - - - add hl, de - 95 D1:AFF8 D1 - - - pop de - 96 D1:AFF9 B7 - - - or a, a - 97 D1:AFFA ED 52 - - sbc hl, de - 98 D1:AFFC D1 - - - pop de - 99 D1:AFFD 19 - - - add hl, de - 100 D1:AFFE - - - - ; got VX_QY - 101 D1:AFFE E5 - - - push hl - 102 D1:AFFF DD 27 00 - ld hl, (ix+VX_QW) - 103 D1:B002 FD 17 09 - ld de, (iy+VX_QZ) - 104 D1:B005 CD 9A B1 D1 call vxQuatMlt - 105 D1:B009 E5 - - - push hl - 106 D1:B00A DD 27 03 - ld hl, (ix+VX_QX) - 107 D1:B00D FD 17 06 - ld de, (iy+VX_QY) - 108 D1:B010 CD 9A B1 D1 call vxQuatMlt - 109 D1:B014 E5 - - - push hl - 110 D1:B015 DD 27 06 - ld hl, (ix+VX_QY) - 111 D1:B018 FD 17 03 - ld de, (iy+VX_QX) - 112 D1:B01B CD 9A B1 D1 call vxQuatMlt - 113 D1:B01F E5 - - - push hl - 114 D1:B020 DD 27 09 - ld hl, (ix+VX_QZ) - 115 D1:B023 FD 17 00 - ld de, (iy+VX_QW) - 116 D1:B026 CD 9A B1 D1 call vxQuatMlt - 117 D1:B02A D1 - - - pop de - 118 D1:B02B B7 - - - or a, a - 119 D1:B02C ED 52 - - sbc hl, de - 120 D1:B02E D1 - - - pop de - 121 D1:B02F 19 - - - add hl, de - 122 D1:B030 D1 - - - pop de - 123 D1:B031 19 - - - add hl, de - 124 D1:B032 - - - - ; got VX_QZ - 125 D1:B032 DD 2F 09 - ld (ix+VX_QZ), hl - 126 D1:B035 E1 - - - pop hl - 127 D1:B036 DD 2F 06 - ld (ix+VX_QY), hl - 128 D1:B039 E1 - - - pop hl - 129 D1:B03A DD 2F 03 - ld (ix+VX_QX), hl - 130 D1:B03D E1 - - - pop hl - 131 D1:B03E DD 2F 00 - ld (ix+VX_QW), hl - 132 D1:B041 C9 - - - ret - 133 D1:B042 - - - - - 134 D1:B042 - - - - vxQuaternionMagnitude: - 135 D1:B042 DD 27 00 - ld hl, (ix+VX_QW) - 136 D1:B045 CD AB B1 D1 call vxQuatSquare - 137 D1:B049 E5 - - - push hl - 138 D1:B04A DD 27 03 - ld hl, (ix+VX_QX) - 139 D1:B04D CD AB B1 D1 call vxQuatSquare - 140 D1:B051 E5 - - - push hl - 141 D1:B052 DD 27 06 - ld hl, (ix+VX_QY) - 142 D1:B055 CD AB B1 D1 call vxQuatSquare - 143 D1:B059 E5 - - - push hl - 144 D1:B05A DD 27 09 - ld hl, (ix+VX_QZ) - 145 D1:B05D CD AB B1 D1 call vxQuatSquare - 146 D1:B061 D1 - - - pop de - 147 D1:B062 19 - - - add hl, de - 148 D1:B063 D1 - - - pop de - 149 D1:B064 19 - - - add hl, de - 150 D1:B065 D1 - - - pop de - 151 D1:B066 19 - - - add hl, de - 152 D1:B067 C9 - - - ret - 153 D1:B068 - - - - vxQuaternionConjugate: - 154 D1:B068 DD 17 03 - ld de, (ix+3) - 155 D1:B06B B7 - - - or a, a - 156 D1:B06C ED 62 - - sbc hl, hl - 157 D1:B06E ED 52 - - sbc hl, de - 158 D1:B070 DD 2F 03 - ld (ix+3), hl - 159 D1:B073 DD 17 06 - ld de, (ix+6) - 160 D1:B076 B7 - - - or a, a - 161 D1:B077 ED 62 - - sbc hl, hl - 162 D1:B079 ED 52 - - sbc hl, de - 163 D1:B07B DD 2F 06 - ld (ix+6), hl - 164 D1:B07E DD 17 09 - ld de, (ix+9) - 165 D1:B081 B7 - - - or a, a - 166 D1:B082 ED 62 - - sbc hl, hl - 167 D1:B084 ED 52 - - sbc hl, de - 168 D1:B086 DD 2F 09 - ld (ix+9), hl - 169 D1:B089 C9 - - - ret - 170 D1:B08A - - - - vxQuaternionNormalize: - 171 D1:B08A C9 - - - ret - 172 D1:B08B - - - - vxQuatDivide: - 173 D1:B08B - - - - ; do HL*16384/DE - 174 D1:B08B C9 - - - ret - 175 D1:B08C - - - - vxQuaternionGetMatrix: - 176 D1:B08C - - - - ; iy quaternion, ix matrix - 177 D1:B08C - - - - ; (qw, qx, qy, qz) - 178 D1:B08C - - - - ; 1 - 2*qy² - 2*qz² 2*qx*qy - 2*qz*qw 2*qx*qz + 2*qy*qw - 179 D1:B08C - - - - ; 2*qx*qy + 2*qz*qw 1 - 2*qx² - 2*qz² 2*qy*qz - 2*qx*qw - 180 D1:B08C - - - - ; 2*qx*qz - 2*qy*qw 2*qy*qz + 2*qx*qw 1 - 2*qx² - 2*qy² - 181 D1:B08C FD 27 09 - ld hl, (iy+VX_QZ) - 182 D1:B08F FD 17 00 - ld de, (iy+VX_QW) - 183 D1:B092 CD 9A B1 D1 call vxQuatMlt - 184 D1:B096 29 - - - add hl, hl - 185 D1:B097 - - - - ; 2*qz*qw - 186 D1:B097 E5 - - - push hl - 187 D1:B098 FD 27 03 - ld hl, (iy+VX_QX) - 188 D1:B09B FD 17 06 - ld de, (iy+VX_QY) - 189 D1:B09E CD 9A B1 D1 call vxQuatMlt - 190 D1:B0A2 29 - - - add hl, hl - 191 D1:B0A3 - - - - ; 2*qx*qy - 192 D1:B0A3 D1 - - - pop de - 193 D1:B0A4 B7 - - - or a, a - 194 D1:B0A5 ED 52 - - sbc hl, de - 195 D1:B0A7 DD 74 01 - ld (ix+1), h - 196 D1:B0AA 19 - - - add hl, de - 197 D1:B0AB 19 - - - add hl, de - 198 D1:B0AC DD 74 03 - ld (ix+3), h - 199 D1:B0AF - - - - ; next - 200 D1:B0AF FD 27 06 - ld hl, (iy+VX_QY) - 201 D1:B0B2 FD 17 00 - ld de, (iy+VX_QW) - 202 D1:B0B5 CD 9A B1 D1 call vxQuatMlt - 203 D1:B0B9 29 - - - add hl, hl - 204 D1:B0BA - - - - ; 2*qw*qy - 205 D1:B0BA E5 - - - push hl - 206 D1:B0BB FD 27 03 - ld hl, (iy+VX_QX) - 207 D1:B0BE FD 17 09 - ld de, (iy+VX_QZ) - 208 D1:B0C1 CD 9A B1 D1 call vxQuatMlt - 209 D1:B0C5 29 - - - add hl, hl - 210 D1:B0C6 - - - - ; 2*qx*qz - 211 D1:B0C6 D1 - - - pop de - 212 D1:B0C7 B7 - - - or a, a - 213 D1:B0C8 ED 52 - - sbc hl, de - 214 D1:B0CA DD 74 06 - ld (ix+6), h - 215 D1:B0CD 19 - - - add hl, de - 216 D1:B0CE 19 - - - add hl, de - 217 D1:B0CF DD 74 02 - ld (ix+2), h - 218 D1:B0D2 - - - - ; next - 219 D1:B0D2 FD 27 03 - ld hl, (iy+VX_QX) - 220 D1:B0D5 FD 17 00 - ld de, (iy+VX_QW) - 221 D1:B0D8 CD 9A B1 D1 call vxQuatMlt - 222 D1:B0DC 29 - - - add hl, hl - 223 D1:B0DD - - - - ; 2*qx*qw - 224 D1:B0DD E5 - - - push hl - 225 D1:B0DE FD 27 06 - ld hl, (iy+VX_QY) - 226 D1:B0E1 FD 17 09 - ld de, (iy+VX_QZ) - 227 D1:B0E4 CD 9A B1 D1 call vxQuatMlt - 228 D1:B0E8 29 - - - add hl, hl - 229 D1:B0E9 - - - - ; 2*qy*qz - 230 D1:B0E9 D1 - - - pop de - 231 D1:B0EA B7 - - - or a, a - 232 D1:B0EB ED 52 - - sbc hl, de - 233 D1:B0ED DD 74 05 - ld (ix+5), h - 234 D1:B0F0 19 - - - add hl, de - 235 D1:B0F1 19 - - - add hl, de - 236 D1:B0F2 DD 74 07 - ld (ix+7), h - 237 D1:B0F5 - - - - ; 1-2*qy²-2qz² - 238 D1:B0F5 FD 27 06 - ld hl, (iy+VX_QY) - 239 D1:B0F8 CD AB B1 D1 call vxQuatSquare - 240 D1:B0FC E5 - - - push hl - 241 D1:B0FD E5 - - - push hl - 242 D1:B0FE FD 27 09 - ld hl, (iy+VX_QZ) - 243 D1:B101 CD AB B1 D1 call vxQuatSquare - 244 D1:B105 EB - - - ex de, hl - 245 D1:B106 C1 - - - pop bc - 246 D1:B107 21 00 40 00 ld hl, $004000 - 247 D1:B10B B7 - - - or a, a - 248 D1:B10C ED 42 - - sbc hl, bc - 249 D1:B10E B7 - - - or a, a - 250 D1:B10F ED 52 - - sbc hl, de - 251 D1:B111 DD 74 00 - ld (ix+0), h - 252 D1:B114 - - - - ; 1-2*qz²-2qx² - 253 D1:B114 D5 - - - push de - 254 D1:B115 FD 27 03 - ld hl, (iy+VX_QX) - 255 D1:B118 CD AB B1 D1 call vxQuatSquare - 256 D1:B11C EB - - - ex de, hl - 257 D1:B11D C1 - - - pop bc - 258 D1:B11E 21 00 40 00 ld hl, $004000 - 259 D1:B122 B7 - - - or a, a - 260 D1:B123 ED 42 - - sbc hl, bc - 261 D1:B125 B7 - - - or a, a - 262 D1:B126 ED 52 - - sbc hl, de - 263 D1:B128 DD 74 04 - ld (ix+4), h - 264 D1:B12B - - - - ; 1-2qx²-2qy² - 265 D1:B12B C1 - - - pop bc - 266 D1:B12C 21 00 40 00 ld hl, $004000 - 267 D1:B130 B7 - - - or a, a - 268 D1:B131 ED 42 - - sbc hl, bc - 269 D1:B133 B7 - - - or a, a - 270 D1:B134 ED 52 - - sbc hl, de - 271 D1:B136 DD 74 08 - ld (ix+8), h - 272 D1:B139 C9 - - - ret - 273 D1:B13A - - - - vxQuaternionRotationAxis: - 274 D1:B13A - - - - ; iy adress of quaternion to write - 275 D1:B13A - - - - ; ix unit vector - 276 D1:B13A - - - - ; a angle - 277 D1:B13A - - - - ; qw = cos(angle/2) - 278 D1:B13A - - - - ; qx = axis.x*sin(angle/2) - 279 D1:B13A - - - - ; qy = axis.y*sin(angle/2) - 280 D1:B13A - - - - ; qz = axis.z*sin(angle/2) - 281 D1:B13A E5 - - - push hl - 282 D1:B13B CD BE B1 D1 call vxSin - 283 D1:B13F - - - - ; hl = sin - 284 D1:B13F EB - - - ex de, hl - 285 D1:B140 - - - - ; DE is never destroyed by the macro's - 286 D1:B140 DD 27 00 - ld hl, (ix+0) - 287 D1:B143 CD 9A B1 D1 call vxQuatMlt - 288 D1:B147 FD 2F 03 - ld (iy+VX_QX), hl - 289 D1:B14A DD 27 03 - ld hl, (ix+3) - 290 D1:B14D CD 9A B1 D1 call vxQuatMlt - 291 D1:B151 FD 2F 06 - ld (iy+VX_QY), hl - 292 D1:B154 DD 27 06 - ld hl, (ix+6) - 293 D1:B157 CD 9A B1 D1 call vxQuatMlt - 294 D1:B15B FD 2F 09 - ld (iy+VX_QZ), hl - 295 D1:B15E E1 - - - pop hl - 296 D1:B15F CD BD B1 D1 call vxCos - 297 D1:B163 FD 2F 00 - ld (iy+VX_QW), hl - 298 D1:B166 C9 - - - ret - 299 D1:B167 - - - - IQuaternionDot: - 300 D1:B167 DD 27 00 - ld hl, (ix+VX_QW) - 301 D1:B16A FD 17 00 - ld de, (iy+VX_QW) - 302 D1:B16D CD 9A B1 D1 call vxQuatMlt - 303 D1:B171 E5 - - - push hl - 304 D1:B172 DD 27 03 - ld hl, (ix+VX_QX) - 305 D1:B175 FD 17 03 - ld de, (iy+VX_QX) - 306 D1:B178 CD 9A B1 D1 call vxQuatMlt - 307 D1:B17C E5 - - - push hl - 308 D1:B17D DD 27 06 - ld hl, (ix+VX_QY) - 309 D1:B180 FD 17 06 - ld de, (iy+VX_QY) - 310 D1:B183 CD 9A B1 D1 call vxQuatMlt - 311 D1:B187 E5 - - - push hl - 312 D1:B188 DD 27 09 - ld hl, (ix+VX_QZ) - 313 D1:B18B FD 17 09 - ld de, (iy+VX_QZ) - 314 D1:B18E CD 9A B1 D1 call vxQuatMlt - 315 D1:B192 D1 - - - pop de - 316 D1:B193 19 - - - add hl, de - 317 D1:B194 D1 - - - pop de - 318 D1:B195 19 - - - add hl, de - 319 D1:B196 D1 - - - pop de - 320 D1:B197 19 - - - add hl, de - 321 D1:B198 C9 - - - ret - 322 D1:B199 - - - - vxQuaternionSlerp: - 323 D1:B199 C9 - - - ret - 324 D1:B19A - - - - - 325 D1:B19A - - - - ; always included functions to works with quaternions, called by the majority of the routines. - 326 D1:B19A - - - - - 327 D1:B19A - - - - vxQuatMlt: - 328 D1:B19A - - - - ; hl *de, de is not destroyed - 329 D1:B19A CD 18 B2 D1 call vxMltFP8 - 330 D1:B19E - - - - ; and now divide by 64 - 331 D1:B19E 29 - - - add hl, hl - 332 D1:B19F 29 - - - add hl, hl - 333 D1:B1A0 E5 33 F1 3B ld a, hlu - 334 D1:B1A4 4C - - - ld c, h - 335 D1:B1A5 29 - - - add hl, hl - 336 D1:B1A6 ED 62 - - sbc hl, hl - 337 D1:B1A8 67 - - - ld h, a - 338 D1:B1A9 69 - - - ld l, c - 339 D1:B1AA C9 - - - ret - 340 D1:B1AB - - - - vxQuatSquare: - 341 D1:B1AB - - - - ; bc is kept intact - 342 D1:B1AB CD F3 B1 D1 call vxSquareFP8 - 343 D1:B1AF - - - - ; divide by 32 - 344 D1:B1AF 29 - - - add hl, hl - 345 D1:B1B0 29 - - - add hl, hl - 346 D1:B1B1 29 - - - add hl, hl - 347 D1:B1B2 E5 33 F1 3B ld a, hlu - 348 D1:B1B6 5C - - - ld e, h - 349 D1:B1B7 B7 - - - or a, a - 350 D1:B1B8 ED 62 - - sbc hl, hl - 351 D1:B1BA 67 - - - ld h, a - 352 D1:B1BB 6B - - - ld l, e - 353 D1:B1BC C9 - - - ret - 354 D1:B1BD - - - - vxCos: - 355 D1:B1BD 24 - - - inc h - 356 D1:B1BE - - - - vxSin: - 357 D1:B1BE CB 44 - - bit 0, h - 358 D1:B1C0 7D - - - ld a, l - 359 D1:B1C1 28 04 - - jr z, vxSinSkp1 - 360 D1:B1C3 ED 44 - - neg - 361 D1:B1C5 28 1E - - jr z, vxQuatIndexZero - 362 D1:B1C7 - - - - vxSinSkp1: - 363 D1:B1C7 CB 4C - - bit 1, h - 364 D1:B1C9 21 00 20 D0 ld hl, VX_SIN_TABLE - 365 D1:B1CD 20 0A - - jr nz, vxSinNegate - 366 D1:B1CF 6F - - - ld l, a - 367 D1:B1D0 4E - - - ld c, (hl) - 368 D1:B1D1 24 - - - inc h - 369 D1:B1D2 46 - - - ld b, (hl) - 370 D1:B1D3 B7 - - - or a, a - 371 D1:B1D4 ED 62 - - sbc hl, hl - 372 D1:B1D6 60 - - - ld h, b - 373 D1:B1D7 69 - - - ld l, c - 374 D1:B1D8 C9 - - - ret - 375 D1:B1D9 - - - - vxSinNegate: - 376 D1:B1D9 52 03 - - inc.s bc - 377 D1:B1DB 6F - - - ld l, a - 378 D1:B1DC 4E - - - ld c, (hl) - 379 D1:B1DD 24 - - - inc h - 380 D1:B1DE 46 - - - ld b, (hl) - 381 D1:B1DF B7 - - - or a, a - 382 D1:B1E0 ED 62 - - sbc hl, hl - 383 D1:B1E2 ED 42 - - sbc hl, bc - 384 D1:B1E4 C9 - - - ret - 385 D1:B1E5 - - - - vxQuatIndexZero: - 386 D1:B1E5 CB 4C - - bit 1, h - 387 D1:B1E7 20 05 - - jr nz, vxQuatNegResultCst - 388 D1:B1E9 21 00 40 00 ld hl, $004000 - 389 D1:B1ED C9 - - - ret - 390 D1:B1EE - - - - vxQuatNegResultCst: - 391 D1:B1EE 21 00 C0 FF ld hl, $FFC000 - 392 D1:B1F2 C9 - - - ret - 393 D1:B1F3 - - - - - 394 D1:B1F3 - - - - vxSquareFP8: - 395 D1:B1F3 - - - - ; HL²/256 - 396 D1:B1F3 - - - - ; Destroy DE,A [16bits] - 397 D1:B1F3 - - - - ; (HxH*256+LxH*2+LxL/256) - 398 D1:B1F3 CB 7C - - bit 7, h - 399 D1:B1F5 28 06 - - jr z, vxSqAbsSkp - 400 D1:B1F7 EB - - - ex de, hl - 401 D1:B1F8 B7 - - - or a, a - 402 D1:B1F9 ED 62 - - sbc hl, hl - 403 D1:B1FB ED 52 - - sbc hl, de - 404 D1:B1FD - - - - vxSqAbsSkp: - 405 D1:B1FD 54 - - - ld d, h - 406 D1:B1FE 5D - - - ld e, l - 407 D1:B1FF 6C - - - ld l, h - 408 D1:B200 ED 6C - - mlt hl - 409 D1:B202 29 29 29 29 + 1 D1:AED3 - - - - ; Quaternions utility functions + 2 D1:AED3 - - - - + 3 D1:AED3 - - - - #define VX_QUATERNION_SIZE $0C + 4 D1:AED3 - - - - #define VX_QW $0 + 5 D1:AED3 - - - - #define VX_QX $3 + 6 D1:AED3 - - - - #define VX_QY $6 + 7 D1:AED3 - - - - #define VX_QZ $9 + 8 D1:AED3 - - - - + 9 D1:AED3 - - - - vxIdentityQuaternion: + 10 D1:AED3 00 40 00 - .dl $004000 + 11 D1:AED6 00 00 00 - .dl $000000 + 12 D1:AED9 00 00 00 - .dl $000000 + 13 D1:AEDC 00 00 00 - .dl $000000 + 14 D1:AEDF - - - - + 15 D1:AEDF - - - - vxQuaternionLoadIdentity: + 16 D1:AEDF EB - - - ex de, hl + 17 D1:AEE0 21 D3 AE D1 ld hl, vxIdentityQuaternion + 18 D1:AEE4 01 0C 00 00 ld bc, VX_QUATERNION_SIZE + 19 D1:AEE8 ED B0 - - ldir + 20 D1:AEEA EB - - - ex de, hl + 21 D1:AEEB 01 F4 FF FF ld bc, -VX_QUATERNION_SIZE + 22 D1:AEEF 09 - - - add hl, bc + 23 D1:AEF0 C9 - - - ret + 24 D1:AEF1 - - - - vxQuaternionLoadRotation: + 25 D1:AEF1 C9 - - - ret + 26 D1:AEF2 - - - - vxQuaternionMlt: + 27 D1:AEF2 - - - - ; untested + 28 D1:AEF2 DD 27 09 - ld hl, (ix+VX_QZ) + 29 D1:AEF5 FD 17 09 - ld de, (iy+VX_QZ) + 30 D1:AEF8 CD 2D B1 D1 call vxQuatMlt + 31 D1:AEFC E5 - - - push hl + 32 D1:AEFD DD 27 03 - ld hl, (ix+VX_QX) + 33 D1:AF00 FD 17 03 - ld de, (iy+VX_QX) + 34 D1:AF03 CD 2D B1 D1 call vxQuatMlt + 35 D1:AF07 E5 - - - push hl + 36 D1:AF08 DD 27 06 - ld hl, (ix+VX_QY) + 37 D1:AF0B FD 17 06 - ld de, (iy+VX_QY) + 38 D1:AF0E CD 2D B1 D1 call vxQuatMlt + 39 D1:AF12 E5 - - - push hl + 40 D1:AF13 DD 27 00 - ld hl, (ix+VX_QW) + 41 D1:AF16 FD 17 00 - ld de, (iy+VX_QW) + 42 D1:AF19 CD 2D B1 D1 call vxQuatMlt + 43 D1:AF1D D1 - - - pop de + 44 D1:AF1E B7 - - - or a, a + 45 D1:AF1F ED 52 - - sbc hl, de + 46 D1:AF21 D1 - - - pop de + 47 D1:AF22 B7 - - - or a, a + 48 D1:AF23 ED 52 - - sbc hl, de + 49 D1:AF25 D1 - - - pop de + 50 D1:AF26 B7 - - - or a, a + 51 D1:AF27 ED 52 - - sbc hl, de + 52 D1:AF29 - - - - ; got VX_QW + 53 D1:AF29 E5 - - - push hl + 54 D1:AF2A DD 27 00 - ld hl, (ix+VX_QW) + 55 D1:AF2D FD 17 03 - ld de, (iy+VX_QX) + 56 D1:AF30 CD 2D B1 D1 call vxQuatMlt + 57 D1:AF34 E5 - - - push hl + 58 D1:AF35 DD 27 03 - ld hl, (ix+VX_QX) + 59 D1:AF38 FD 17 00 - ld de, (iy+VX_QW) + 60 D1:AF3B CD 2D B1 D1 call vxQuatMlt + 61 D1:AF3F E5 - - - push hl + 62 D1:AF40 DD 27 09 - ld hl, (ix+VX_QZ) + 63 D1:AF43 FD 17 06 - ld de, (iy+VX_QY) + 64 D1:AF46 CD 2D B1 D1 call vxQuatMlt + 65 D1:AF4A E5 - - - push hl + 66 D1:AF4B DD 27 06 - ld hl, (ix+VX_QY) + 67 D1:AF4E FD 17 09 - ld de, (iy+VX_QZ) + 68 D1:AF51 CD 2D B1 D1 call vxQuatMlt + 69 D1:AF55 D1 - - - pop de + 70 D1:AF56 B7 - - - or a, a + 71 D1:AF57 ED 52 - - sbc hl, de + 72 D1:AF59 D1 - - - pop de + 73 D1:AF5A 19 - - - add hl, de + 74 D1:AF5B D1 - - - pop de + 75 D1:AF5C 19 - - - add hl, de + 76 D1:AF5D - - - - ; got VX_QX + 77 D1:AF5D E5 - - - push hl + 78 D1:AF5E DD 27 00 - ld hl, (ix+VX_QW) + 79 D1:AF61 FD 17 06 - ld de, (iy+VX_QY) + 80 D1:AF64 CD 2D B1 D1 call vxQuatMlt + 81 D1:AF68 E5 - - - push hl + 82 D1:AF69 DD 27 03 - ld hl, (ix+VX_QX) + 83 D1:AF6C FD 17 09 - ld de, (iy+VX_QZ) + 84 D1:AF6F CD 2D B1 D1 call vxQuatMlt + 85 D1:AF73 E5 - - - push hl + 86 D1:AF74 DD 27 06 - ld hl, (ix+VX_QY) + 87 D1:AF77 FD 17 00 - ld de, (iy+VX_QW) + 88 D1:AF7A CD 2D B1 D1 call vxQuatMlt + 89 D1:AF7E E5 - - - push hl + 90 D1:AF7F DD 27 09 - ld hl, (ix+VX_QZ) + 91 D1:AF82 FD 17 03 - ld de, (iy+VX_QX) + 92 D1:AF85 CD 2D B1 D1 call vxQuatMlt + 93 D1:AF89 D1 - - - pop de + 94 D1:AF8A 19 - - - add hl, de + 95 D1:AF8B D1 - - - pop de + 96 D1:AF8C B7 - - - or a, a + 97 D1:AF8D ED 52 - - sbc hl, de + 98 D1:AF8F D1 - - - pop de + 99 D1:AF90 19 - - - add hl, de + 100 D1:AF91 - - - - ; got VX_QY + 101 D1:AF91 E5 - - - push hl + 102 D1:AF92 DD 27 00 - ld hl, (ix+VX_QW) + 103 D1:AF95 FD 17 09 - ld de, (iy+VX_QZ) + 104 D1:AF98 CD 2D B1 D1 call vxQuatMlt + 105 D1:AF9C E5 - - - push hl + 106 D1:AF9D DD 27 03 - ld hl, (ix+VX_QX) + 107 D1:AFA0 FD 17 06 - ld de, (iy+VX_QY) + 108 D1:AFA3 CD 2D B1 D1 call vxQuatMlt + 109 D1:AFA7 E5 - - - push hl + 110 D1:AFA8 DD 27 06 - ld hl, (ix+VX_QY) + 111 D1:AFAB FD 17 03 - ld de, (iy+VX_QX) + 112 D1:AFAE CD 2D B1 D1 call vxQuatMlt + 113 D1:AFB2 E5 - - - push hl + 114 D1:AFB3 DD 27 09 - ld hl, (ix+VX_QZ) + 115 D1:AFB6 FD 17 00 - ld de, (iy+VX_QW) + 116 D1:AFB9 CD 2D B1 D1 call vxQuatMlt + 117 D1:AFBD D1 - - - pop de + 118 D1:AFBE B7 - - - or a, a + 119 D1:AFBF ED 52 - - sbc hl, de + 120 D1:AFC1 D1 - - - pop de + 121 D1:AFC2 19 - - - add hl, de + 122 D1:AFC3 D1 - - - pop de + 123 D1:AFC4 19 - - - add hl, de + 124 D1:AFC5 - - - - ; got VX_QZ + 125 D1:AFC5 DD 2F 09 - ld (ix+VX_QZ), hl + 126 D1:AFC8 E1 - - - pop hl + 127 D1:AFC9 DD 2F 06 - ld (ix+VX_QY), hl + 128 D1:AFCC E1 - - - pop hl + 129 D1:AFCD DD 2F 03 - ld (ix+VX_QX), hl + 130 D1:AFD0 E1 - - - pop hl + 131 D1:AFD1 DD 2F 00 - ld (ix+VX_QW), hl + 132 D1:AFD4 C9 - - - ret + 133 D1:AFD5 - - - - + 134 D1:AFD5 - - - - vxQuaternionMagnitude: + 135 D1:AFD5 DD 27 00 - ld hl, (ix+VX_QW) + 136 D1:AFD8 CD 3E B1 D1 call vxQuatSquare + 137 D1:AFDC E5 - - - push hl + 138 D1:AFDD DD 27 03 - ld hl, (ix+VX_QX) + 139 D1:AFE0 CD 3E B1 D1 call vxQuatSquare + 140 D1:AFE4 E5 - - - push hl + 141 D1:AFE5 DD 27 06 - ld hl, (ix+VX_QY) + 142 D1:AFE8 CD 3E B1 D1 call vxQuatSquare + 143 D1:AFEC E5 - - - push hl + 144 D1:AFED DD 27 09 - ld hl, (ix+VX_QZ) + 145 D1:AFF0 CD 3E B1 D1 call vxQuatSquare + 146 D1:AFF4 D1 - - - pop de + 147 D1:AFF5 19 - - - add hl, de + 148 D1:AFF6 D1 - - - pop de + 149 D1:AFF7 19 - - - add hl, de + 150 D1:AFF8 D1 - - - pop de + 151 D1:AFF9 19 - - - add hl, de + 152 D1:AFFA C9 - - - ret + 153 D1:AFFB - - - - vxQuaternionConjugate: + 154 D1:AFFB DD 17 03 - ld de, (ix+3) + 155 D1:AFFE B7 - - - or a, a + 156 D1:AFFF ED 62 - - sbc hl, hl + 157 D1:B001 ED 52 - - sbc hl, de + 158 D1:B003 DD 2F 03 - ld (ix+3), hl + 159 D1:B006 DD 17 06 - ld de, (ix+6) + 160 D1:B009 B7 - - - or a, a + 161 D1:B00A ED 62 - - sbc hl, hl + 162 D1:B00C ED 52 - - sbc hl, de + 163 D1:B00E DD 2F 06 - ld (ix+6), hl + 164 D1:B011 DD 17 09 - ld de, (ix+9) + 165 D1:B014 B7 - - - or a, a + 166 D1:B015 ED 62 - - sbc hl, hl + 167 D1:B017 ED 52 - - sbc hl, de + 168 D1:B019 DD 2F 09 - ld (ix+9), hl + 169 D1:B01C C9 - - - ret + 170 D1:B01D - - - - vxQuaternionNormalize: + 171 D1:B01D C9 - - - ret + 172 D1:B01E - - - - vxQuatDivide: + 173 D1:B01E - - - - ; do HL*16384/DE + 174 D1:B01E C9 - - - ret + 175 D1:B01F - - - - vxQuaternionGetMatrix: + 176 D1:B01F - - - - ; iy quaternion, ix matrix + 177 D1:B01F - - - - ; (qw, qx, qy, qz) + 178 D1:B01F - - - - ; 1 - 2*qy² - 2*qz² 2*qx*qy - 2*qz*qw 2*qx*qz + 2*qy*qw + 179 D1:B01F - - - - ; 2*qx*qy + 2*qz*qw 1 - 2*qx² - 2*qz² 2*qy*qz - 2*qx*qw + 180 D1:B01F - - - - ; 2*qx*qz - 2*qy*qw 2*qy*qz + 2*qx*qw 1 - 2*qx² - 2*qy² + 181 D1:B01F FD 27 09 - ld hl, (iy+VX_QZ) + 182 D1:B022 FD 17 00 - ld de, (iy+VX_QW) + 183 D1:B025 CD 2D B1 D1 call vxQuatMlt + 184 D1:B029 29 - - - add hl, hl + 185 D1:B02A - - - - ; 2*qz*qw + 186 D1:B02A E5 - - - push hl + 187 D1:B02B FD 27 03 - ld hl, (iy+VX_QX) + 188 D1:B02E FD 17 06 - ld de, (iy+VX_QY) + 189 D1:B031 CD 2D B1 D1 call vxQuatMlt + 190 D1:B035 29 - - - add hl, hl + 191 D1:B036 - - - - ; 2*qx*qy + 192 D1:B036 D1 - - - pop de + 193 D1:B037 B7 - - - or a, a + 194 D1:B038 ED 52 - - sbc hl, de + 195 D1:B03A DD 74 01 - ld (ix+1), h + 196 D1:B03D 19 - - - add hl, de + 197 D1:B03E 19 - - - add hl, de + 198 D1:B03F DD 74 03 - ld (ix+3), h + 199 D1:B042 - - - - ; next + 200 D1:B042 FD 27 06 - ld hl, (iy+VX_QY) + 201 D1:B045 FD 17 00 - ld de, (iy+VX_QW) + 202 D1:B048 CD 2D B1 D1 call vxQuatMlt + 203 D1:B04C 29 - - - add hl, hl + 204 D1:B04D - - - - ; 2*qw*qy + 205 D1:B04D E5 - - - push hl + 206 D1:B04E FD 27 03 - ld hl, (iy+VX_QX) + 207 D1:B051 FD 17 09 - ld de, (iy+VX_QZ) + 208 D1:B054 CD 2D B1 D1 call vxQuatMlt + 209 D1:B058 29 - - - add hl, hl + 210 D1:B059 - - - - ; 2*qx*qz + 211 D1:B059 D1 - - - pop de + 212 D1:B05A B7 - - - or a, a + 213 D1:B05B ED 52 - - sbc hl, de + 214 D1:B05D DD 74 06 - ld (ix+6), h + 215 D1:B060 19 - - - add hl, de + 216 D1:B061 19 - - - add hl, de + 217 D1:B062 DD 74 02 - ld (ix+2), h + 218 D1:B065 - - - - ; next + 219 D1:B065 FD 27 03 - ld hl, (iy+VX_QX) + 220 D1:B068 FD 17 00 - ld de, (iy+VX_QW) + 221 D1:B06B CD 2D B1 D1 call vxQuatMlt + 222 D1:B06F 29 - - - add hl, hl + 223 D1:B070 - - - - ; 2*qx*qw + 224 D1:B070 E5 - - - push hl + 225 D1:B071 FD 27 06 - ld hl, (iy+VX_QY) + 226 D1:B074 FD 17 09 - ld de, (iy+VX_QZ) + 227 D1:B077 CD 2D B1 D1 call vxQuatMlt + 228 D1:B07B 29 - - - add hl, hl + 229 D1:B07C - - - - ; 2*qy*qz + 230 D1:B07C D1 - - - pop de + 231 D1:B07D B7 - - - or a, a + 232 D1:B07E ED 52 - - sbc hl, de + 233 D1:B080 DD 74 05 - ld (ix+5), h + 234 D1:B083 19 - - - add hl, de + 235 D1:B084 19 - - - add hl, de + 236 D1:B085 DD 74 07 - ld (ix+7), h + 237 D1:B088 - - - - ; 1-2*qy²-2qz² + 238 D1:B088 FD 27 06 - ld hl, (iy+VX_QY) + 239 D1:B08B CD 3E B1 D1 call vxQuatSquare + 240 D1:B08F E5 - - - push hl + 241 D1:B090 E5 - - - push hl + 242 D1:B091 FD 27 09 - ld hl, (iy+VX_QZ) + 243 D1:B094 CD 3E B1 D1 call vxQuatSquare + 244 D1:B098 EB - - - ex de, hl + 245 D1:B099 C1 - - - pop bc + 246 D1:B09A 21 00 40 00 ld hl, $004000 + 247 D1:B09E B7 - - - or a, a + 248 D1:B09F ED 42 - - sbc hl, bc + 249 D1:B0A1 B7 - - - or a, a + 250 D1:B0A2 ED 52 - - sbc hl, de + 251 D1:B0A4 DD 74 00 - ld (ix+0), h + 252 D1:B0A7 - - - - ; 1-2*qz²-2qx² + 253 D1:B0A7 D5 - - - push de + 254 D1:B0A8 FD 27 03 - ld hl, (iy+VX_QX) + 255 D1:B0AB CD 3E B1 D1 call vxQuatSquare + 256 D1:B0AF EB - - - ex de, hl + 257 D1:B0B0 C1 - - - pop bc + 258 D1:B0B1 21 00 40 00 ld hl, $004000 + 259 D1:B0B5 B7 - - - or a, a + 260 D1:B0B6 ED 42 - - sbc hl, bc + 261 D1:B0B8 B7 - - - or a, a + 262 D1:B0B9 ED 52 - - sbc hl, de + 263 D1:B0BB DD 74 04 - ld (ix+4), h + 264 D1:B0BE - - - - ; 1-2qx²-2qy² + 265 D1:B0BE C1 - - - pop bc + 266 D1:B0BF 21 00 40 00 ld hl, $004000 + 267 D1:B0C3 B7 - - - or a, a + 268 D1:B0C4 ED 42 - - sbc hl, bc + 269 D1:B0C6 B7 - - - or a, a + 270 D1:B0C7 ED 52 - - sbc hl, de + 271 D1:B0C9 DD 74 08 - ld (ix+8), h + 272 D1:B0CC C9 - - - ret + 273 D1:B0CD - - - - vxQuaternionRotationAxis: + 274 D1:B0CD - - - - ; iy adress of quaternion to write + 275 D1:B0CD - - - - ; ix unit vector + 276 D1:B0CD - - - - ; a angle + 277 D1:B0CD - - - - ; qw = cos(angle/2) + 278 D1:B0CD - - - - ; qx = axis.x*sin(angle/2) + 279 D1:B0CD - - - - ; qy = axis.y*sin(angle/2) + 280 D1:B0CD - - - - ; qz = axis.z*sin(angle/2) + 281 D1:B0CD E5 - - - push hl + 282 D1:B0CE CD 51 B1 D1 call vxSin + 283 D1:B0D2 - - - - ; hl = sin + 284 D1:B0D2 EB - - - ex de, hl + 285 D1:B0D3 - - - - ; DE is never destroyed by the macro's + 286 D1:B0D3 DD 27 00 - ld hl, (ix+0) + 287 D1:B0D6 CD 2D B1 D1 call vxQuatMlt + 288 D1:B0DA FD 2F 03 - ld (iy+VX_QX), hl + 289 D1:B0DD DD 27 03 - ld hl, (ix+3) + 290 D1:B0E0 CD 2D B1 D1 call vxQuatMlt + 291 D1:B0E4 FD 2F 06 - ld (iy+VX_QY), hl + 292 D1:B0E7 DD 27 06 - ld hl, (ix+6) + 293 D1:B0EA CD 2D B1 D1 call vxQuatMlt + 294 D1:B0EE FD 2F 09 - ld (iy+VX_QZ), hl + 295 D1:B0F1 E1 - - - pop hl + 296 D1:B0F2 CD 50 B1 D1 call vxCos + 297 D1:B0F6 FD 2F 00 - ld (iy+VX_QW), hl + 298 D1:B0F9 C9 - - - ret + 299 D1:B0FA - - - - IQuaternionDot: + 300 D1:B0FA DD 27 00 - ld hl, (ix+VX_QW) + 301 D1:B0FD FD 17 00 - ld de, (iy+VX_QW) + 302 D1:B100 CD 2D B1 D1 call vxQuatMlt + 303 D1:B104 E5 - - - push hl + 304 D1:B105 DD 27 03 - ld hl, (ix+VX_QX) + 305 D1:B108 FD 17 03 - ld de, (iy+VX_QX) + 306 D1:B10B CD 2D B1 D1 call vxQuatMlt + 307 D1:B10F E5 - - - push hl + 308 D1:B110 DD 27 06 - ld hl, (ix+VX_QY) + 309 D1:B113 FD 17 06 - ld de, (iy+VX_QY) + 310 D1:B116 CD 2D B1 D1 call vxQuatMlt + 311 D1:B11A E5 - - - push hl + 312 D1:B11B DD 27 09 - ld hl, (ix+VX_QZ) + 313 D1:B11E FD 17 09 - ld de, (iy+VX_QZ) + 314 D1:B121 CD 2D B1 D1 call vxQuatMlt + 315 D1:B125 D1 - - - pop de + 316 D1:B126 19 - - - add hl, de + 317 D1:B127 D1 - - - pop de + 318 D1:B128 19 - - - add hl, de + 319 D1:B129 D1 - - - pop de + 320 D1:B12A 19 - - - add hl, de + 321 D1:B12B C9 - - - ret + 322 D1:B12C - - - - vxQuaternionSlerp: + 323 D1:B12C C9 - - - ret + 324 D1:B12D - - - - + 325 D1:B12D - - - - ; always included functions to works with quaternions, called by the majority of the routines. + 326 D1:B12D - - - - + 327 D1:B12D - - - - vxQuatMlt: + 328 D1:B12D - - - - ; hl *de, de is not destroyed + 329 D1:B12D CD AB B1 D1 call vxMltFP8 + 330 D1:B131 - - - - ; and now divide by 64 + 331 D1:B131 29 - - - add hl, hl + 332 D1:B132 29 - - - add hl, hl + 333 D1:B133 E5 33 F1 3B ld a, hlu + 334 D1:B137 4C - - - ld c, h + 335 D1:B138 29 - - - add hl, hl + 336 D1:B139 ED 62 - - sbc hl, hl + 337 D1:B13B 67 - - - ld h, a + 338 D1:B13C 69 - - - ld l, c + 339 D1:B13D C9 - - - ret + 340 D1:B13E - - - - vxQuatSquare: + 341 D1:B13E - - - - ; bc is kept intact + 342 D1:B13E CD 86 B1 D1 call vxSquareFP8 + 343 D1:B142 - - - - ; divide by 32 + 344 D1:B142 29 - - - add hl, hl + 345 D1:B143 29 - - - add hl, hl + 346 D1:B144 29 - - - add hl, hl + 347 D1:B145 E5 33 F1 3B ld a, hlu + 348 D1:B149 5C - - - ld e, h + 349 D1:B14A B7 - - - or a, a + 350 D1:B14B ED 62 - - sbc hl, hl + 351 D1:B14D 67 - - - ld h, a + 352 D1:B14E 6B - - - ld l, e + 353 D1:B14F C9 - - - ret + 354 D1:B150 - - - - vxCos: + 355 D1:B150 24 - - - inc h + 356 D1:B151 - - - - vxSin: + 357 D1:B151 CB 44 - - bit 0, h + 358 D1:B153 7D - - - ld a, l + 359 D1:B154 28 04 - - jr z, vxSinSkp1 + 360 D1:B156 ED 44 - - neg + 361 D1:B158 28 1E - - jr z, vxQuatIndexZero + 362 D1:B15A - - - - vxSinSkp1: + 363 D1:B15A CB 4C - - bit 1, h + 364 D1:B15C 21 00 20 D0 ld hl, VX_SIN_TABLE + 365 D1:B160 20 0A - - jr nz, vxSinNegate + 366 D1:B162 6F - - - ld l, a + 367 D1:B163 4E - - - ld c, (hl) + 368 D1:B164 24 - - - inc h + 369 D1:B165 46 - - - ld b, (hl) + 370 D1:B166 B7 - - - or a, a + 371 D1:B167 ED 62 - - sbc hl, hl + 372 D1:B169 60 - - - ld h, b + 373 D1:B16A 69 - - - ld l, c + 374 D1:B16B C9 - - - ret + 375 D1:B16C - - - - vxSinNegate: + 376 D1:B16C 52 03 - - inc.s bc + 377 D1:B16E 6F - - - ld l, a + 378 D1:B16F 4E - - - ld c, (hl) + 379 D1:B170 24 - - - inc h + 380 D1:B171 46 - - - ld b, (hl) + 381 D1:B172 B7 - - - or a, a + 382 D1:B173 ED 62 - - sbc hl, hl + 383 D1:B175 ED 42 - - sbc hl, bc + 384 D1:B177 C9 - - - ret + 385 D1:B178 - - - - vxQuatIndexZero: + 386 D1:B178 CB 4C - - bit 1, h + 387 D1:B17A 20 05 - - jr nz, vxQuatNegResultCst + 388 D1:B17C 21 00 40 00 ld hl, $004000 + 389 D1:B180 C9 - - - ret + 390 D1:B181 - - - - vxQuatNegResultCst: + 391 D1:B181 21 00 C0 FF ld hl, $FFC000 + 392 D1:B185 C9 - - - ret + 393 D1:B186 - - - - + 394 D1:B186 - - - - vxSquareFP8: + 395 D1:B186 - - - - ; HL²/256 + 396 D1:B186 - - - - ; Destroy DE,A [16bits] + 397 D1:B186 - - - - ; (HxH*256+LxH*2+LxL/256) + 398 D1:B186 CB 7C - - bit 7, h + 399 D1:B188 28 06 - - jr z, vxSqAbsSkp + 400 D1:B18A EB - - - ex de, hl + 401 D1:B18B B7 - - - or a, a + 402 D1:B18C ED 62 - - sbc hl, hl + 403 D1:B18E ED 52 - - sbc hl, de + 404 D1:B190 - - - - vxSqAbsSkp: + 405 D1:B190 54 - - - ld d, h + 406 D1:B191 5D - - - ld e, l + 407 D1:B192 6C - - - ld l, h + 408 D1:B193 ED 6C - - mlt hl + 409 D1:B195 29 29 29 29 29 29 29 29 slhl Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxQuaternion.ez80" - 410 D1:B20A 7B - - - ld a, e - 411 D1:B20B ED 5C - - mlt de - 412 D1:B20D 19 - - - add hl, de - 413 D1:B20E 19 - - - add hl, de - 414 D1:B20F 5F - - - ld e, a - 415 D1:B210 57 - - - ld d, a - 416 D1:B211 ED 5C - - mlt de - 417 D1:B213 5A - - - ld e, d - 418 D1:B214 16 00 - - ld d, 0 - 419 D1:B216 19 - - - add hl, de - 420 D1:B217 C9 - - - ret - 421 D1:B218 - - - - vxMltFP8: - 422 D1:B218 - - - - ; HLxDE/256 [16bits] - 423 D1:B218 - - - - ; (HxD*256+LxD+ExH+LxE/256) - 424 D1:B218 44 - - - ld b, h - 425 D1:B219 4D - - - ld c, l - 426 D1:B21A 6A - - - ld l, d - 427 D1:B21B ED 6C - - mlt hl - 428 D1:B21D CB 78 - - bit 7, b - 429 D1:B21F 28 03 - - jr z, $+5 - 430 D1:B221 B7 - - - or a, a - 431 D1:B222 ED 52 - - sbc hl, de - 432 D1:B224 CB 7A - - bit 7, d - 433 D1:B226 28 03 - - jr z, $+5 - 434 D1:B228 B7 - - - or a, a - 435 D1:B229 ED 42 - - sbc hl, bc - 436 D1:B22B 29 29 29 29 + 410 D1:B19D 7B - - - ld a, e + 411 D1:B19E ED 5C - - mlt de + 412 D1:B1A0 19 - - - add hl, de + 413 D1:B1A1 19 - - - add hl, de + 414 D1:B1A2 5F - - - ld e, a + 415 D1:B1A3 57 - - - ld d, a + 416 D1:B1A4 ED 5C - - mlt de + 417 D1:B1A6 5A - - - ld e, d + 418 D1:B1A7 16 00 - - ld d, 0 + 419 D1:B1A9 19 - - - add hl, de + 420 D1:B1AA C9 - - - ret + 421 D1:B1AB - - - - vxMltFP8: + 422 D1:B1AB - - - - ; HLxDE/256 [16bits] + 423 D1:B1AB - - - - ; (HxD*256+LxD+ExH+LxE/256) + 424 D1:B1AB 44 - - - ld b, h + 425 D1:B1AC 4D - - - ld c, l + 426 D1:B1AD 6A - - - ld l, d + 427 D1:B1AE ED 6C - - mlt hl + 428 D1:B1B0 CB 78 - - bit 7, b + 429 D1:B1B2 28 03 - - jr z, $+5 + 430 D1:B1B4 B7 - - - or a, a + 431 D1:B1B5 ED 52 - - sbc hl, de + 432 D1:B1B7 CB 7A - - bit 7, d + 433 D1:B1B9 28 03 - - jr z, $+5 + 434 D1:B1BB B7 - - - or a, a + 435 D1:B1BC ED 42 - - sbc hl, bc + 436 D1:B1BE 29 29 29 29 29 29 29 29 slhl Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxQuaternion.ez80" - 437 D1:B233 - - - - ; now need to do (CxD+BxE+ExC/256) - 438 D1:B233 79 - - - ld a, c - 439 D1:B234 4B - - - ld c, e - 440 D1:B235 ED 4C - - mlt bc - 441 D1:B237 09 - - - add hl, bc - 442 D1:B238 4F - - - ld c, a - 443 D1:B239 42 - - - ld b, d - 444 D1:B23A ED 4C - - mlt bc - 445 D1:B23C 09 - - - add hl, bc - 446 D1:B23D 4F - - - ld c, a - 447 D1:B23E 43 - - - ld b, e - 448 D1:B23F ED 4C - - mlt bc - 449 D1:B241 48 - - - ld c, b - 450 D1:B242 06 00 - - ld b, 0 - 451 D1:B244 09 - - - add hl, bc - 452 D1:B245 C9 - - - ret - 453 D1:B246 - - - - + 437 D1:B1C6 - - - - ; now need to do (CxD+BxE+ExC/256) + 438 D1:B1C6 79 - - - ld a, c + 439 D1:B1C7 4B - - - ld c, e + 440 D1:B1C8 ED 4C - - mlt bc + 441 D1:B1CA 09 - - - add hl, bc + 442 D1:B1CB 4F - - - ld c, a + 443 D1:B1CC 42 - - - ld b, d + 444 D1:B1CD ED 4C - - mlt bc + 445 D1:B1CF 09 - - - add hl, bc + 446 D1:B1D0 4F - - - ld c, a + 447 D1:B1D1 43 - - - ld b, e + 448 D1:B1D2 ED 4C - - mlt bc + 449 D1:B1D4 48 - - - ld c, b + 450 D1:B1D5 06 00 - - ld b, 0 + 451 D1:B1D7 09 - - - add hl, bc + 452 D1:B1D8 C9 - - - ret + 453 D1:B1D9 - - - - Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" - 5 D1:B246 - - - - #include "vxVector.ez80" + 5 D1:B1D9 - - - - #include "vxVector.ez80" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxVector.ez80" - 1 D1:B246 - - - - ; code start - vector utility fonctions - 2 D1:B246 - - - - - 3 D1:B246 - - - - #define xpd call vxCrossProduct - 4 D1:B246 - - - - vxCrossProduct: - 5 D1:B246 - - - - ; (hl) = (ix) cross (iy) - 6 D1:B246 - - - - ; 774 TStates, 177 Bytes - 7 D1:B246 - - - - ; v1.y*v2.z-v1.z*v2.y - 8 D1:B246 - - - - ; v1.z*v2.x-v1.x*v2.z - 9 D1:B246 - - - - ; v1.x*v2.y-v1.y*v2.x - 10 D1:B246 EB - - - ex de, hl - 11 D1:B247 - - - - ; v1.y - 12 D1:B247 DD 46 01 - ld b, (ix+1) - 13 D1:B24A - - - - ; v2.z - 14 D1:B24A FD 4E 02 - ld c, (iy+2) - 15 D1:B24D AF - - - xor a, a - 16 D1:B24E ED 62 - - sbc hl, hl - 17 D1:B250 CB 78 - - bit 7, b - 18 D1:B252 28 01 - - jr z, $+3 - 19 D1:B254 81 - - - add a, c - 20 D1:B255 CB 79 - - bit 7, c - 21 D1:B257 28 01 - - jr z, $+3 - 22 D1:B259 80 - - - add a, b - 23 D1:B25A ED 4C - - mlt bc - 24 D1:B25C 09 - - - add hl, bc - 25 D1:B25D 47 - - - ld b, a - 26 D1:B25E AF - - - xor a, a - 27 D1:B25F 4F - - - ld c, a - 28 D1:B260 ED 42 - - sbc hl, bc - 29 D1:B262 - - - - ; v1.z - 30 D1:B262 DD 46 02 - ld b, (ix+2) - 31 D1:B265 - - - - ; v2.y - 32 D1:B265 FD 4E 01 - ld c, (iy+1) - 33 D1:B268 AF - - - xor a, a - 34 D1:B269 CB 78 - - bit 7, b - 35 D1:B26B 28 01 - - jr z, $+3 - 36 D1:B26D 81 - - - add a, c - 37 D1:B26E CB 79 - - bit 7, c - 38 D1:B270 28 01 - - jr z, $+3 - 39 D1:B272 80 - - - add a, b - 40 D1:B273 ED 4C - - mlt bc - 41 D1:B275 B7 - - - or a, a - 42 D1:B276 ED 42 - - sbc hl, bc - 43 D1:B278 47 - - - ld b, a - 44 D1:B279 AF - - - xor a, a - 45 D1:B27A 4F - - - ld c, a - 46 D1:B27B 09 - - - add hl, bc - 47 D1:B27C 29 - - - add hl, hl - 48 D1:B27D 29 - - - add hl, hl - 49 D1:B27E 7C - - - ld a, h - 50 D1:B27F 12 - - - ld (de), a - 51 D1:B280 13 - - - inc de - 52 D1:B281 - - - - ; v1.z - 53 D1:B281 DD 66 02 - ld h, (ix+2) - 54 D1:B284 - - - - ; v2.x - 55 D1:B284 FD 6E 00 - ld l, (iy+0) - 56 D1:B287 AF - - - xor a, a - 57 D1:B288 CB 7C - - bit 7, h - 58 D1:B28A 28 01 - - jr z, $+3 - 59 D1:B28C 85 - - - add a, l - 60 D1:B28D CB 7D - - bit 7, l - 61 D1:B28F 28 01 - - jr z, $+3 - 62 D1:B291 84 - - - add a, h - 63 D1:B292 ED 6C - - mlt hl - 64 D1:B294 47 - - - ld b, a - 65 D1:B295 AF - - - xor a, a - 66 D1:B296 4F - - - ld c, a - 67 D1:B297 ED 42 - - sbc hl, bc - 68 D1:B299 - - - - ; v1.x - 69 D1:B299 DD 46 00 - ld b, (ix+0) - 70 D1:B29C - - - - ; v2.z - 71 D1:B29C FD 4E 02 - ld c, (iy+2) - 72 D1:B29F AF - - - xor a, a - 73 D1:B2A0 CB 78 - - bit 7, b - 74 D1:B2A2 28 01 - - jr z, $+3 - 75 D1:B2A4 81 - - - add a, c - 76 D1:B2A5 CB 79 - - bit 7, c - 77 D1:B2A7 28 01 - - jr z, $+3 - 78 D1:B2A9 80 - - - add a, b - 79 D1:B2AA ED 4C - - mlt bc - 80 D1:B2AC B7 - - - or a, a - 81 D1:B2AD ED 42 - - sbc hl, bc - 82 D1:B2AF 47 - - - ld b, a - 83 D1:B2B0 AF - - - xor a, a - 84 D1:B2B1 4F - - - ld c, a - 85 D1:B2B2 09 - - - add hl, bc - 86 D1:B2B3 29 - - - add hl, hl - 87 D1:B2B4 29 - - - add hl, hl - 88 D1:B2B5 7C - - - ld a, h - 89 D1:B2B6 12 - - - ld (de), a - 90 D1:B2B7 13 - - - inc de - 91 D1:B2B8 - - - - ; v1.x - 92 D1:B2B8 DD 66 00 - ld h, (ix+0) - 93 D1:B2BB - - - - ; v2.y - 94 D1:B2BB FD 6E 01 - ld l, (iy+1) - 95 D1:B2BE AF - - - xor a, a - 96 D1:B2BF CB 7C - - bit 7, h - 97 D1:B2C1 28 01 - - jr z, $+3 - 98 D1:B2C3 85 - - - add a, l - 99 D1:B2C4 CB 7D - - bit 7, l - 100 D1:B2C6 28 01 - - jr z, $+3 - 101 D1:B2C8 84 - - - add a, h - 102 D1:B2C9 ED 6C - - mlt hl - 103 D1:B2CB 47 - - - ld b, a - 104 D1:B2CC AF - - - xor a, a - 105 D1:B2CD 4F - - - ld c, a - 106 D1:B2CE ED 42 - - sbc hl, bc - 107 D1:B2D0 - - - - ; v1.y - 108 D1:B2D0 DD 46 01 - ld b, (ix+1) - 109 D1:B2D3 - - - - ; v2.x - 110 D1:B2D3 FD 4E 00 - ld c, (iy+0) - 111 D1:B2D6 AF - - - xor a, a - 112 D1:B2D7 CB 78 - - bit 7, b - 113 D1:B2D9 28 01 - - jr z, $+3 - 114 D1:B2DB 81 - - - add a, c - 115 D1:B2DC CB 79 - - bit 7, c - 116 D1:B2DE 28 01 - - jr z, $+3 - 117 D1:B2E0 80 - - - add a, b - 118 D1:B2E1 ED 4C - - mlt bc - 119 D1:B2E3 B7 - - - or a, a - 120 D1:B2E4 ED 42 - - sbc hl, bc - 121 D1:B2E6 47 - - - ld b, a - 122 D1:B2E7 AF - - - xor a, a - 123 D1:B2E8 4F - - - ld c, a - 124 D1:B2E9 09 - - - add hl, bc - 125 D1:B2EA 29 - - - add hl, hl - 126 D1:B2EB 29 - - - add hl, hl - 127 D1:B2EC EB - - - ex de, hl - 128 D1:B2ED 72 - - - ld (hl), d - 129 D1:B2EE 2B - - - dec hl - 130 D1:B2EF 2B - - - dec hl - 131 D1:B2F0 C9 - - - ret - 132 D1:B2F1 - - - - #define dp3 call vxDotProduct - 133 D1:B2F1 - - - - vxDotProduct: - 134 D1:B2F1 - - - - ; hl = (ix) dot (iy) - 135 D1:B2F1 DD 66 00 - ld h, (ix+0) - 136 D1:B2F4 FD 6E 00 - ld l, (iy+0) - 137 D1:B2F7 7C - - - ld a, h - 138 D1:B2F8 17 - - - rla - 139 D1:B2F9 9F - - - sbc a, a - 140 D1:B2FA A5 - - - and l - 141 D1:B2FB 5F - - - ld e, a - 142 D1:B2FC 7D - - - ld a, l - 143 D1:B2FD 17 - - - rla - 144 D1:B2FE 9F - - - sbc a, a - 145 D1:B2FF A4 - - - and h - 146 D1:B300 83 - - - add a, e - 147 D1:B301 ED 6C - - mlt hl - 148 D1:B303 5F - - - ld e, a - 149 D1:B304 DD 46 01 - ld b, (ix+1) - 150 D1:B307 FD 4E 01 - ld c, (iy+1) - 151 D1:B30A 78 - - - ld a, b - 152 D1:B30B 17 - - - rla - 153 D1:B30C 9F - - - sbc a, a - 154 D1:B30D A1 - - - and c - 155 D1:B30E 57 - - - ld d, a - 156 D1:B30F 79 - - - ld a, c - 157 D1:B310 17 - - - rla - 158 D1:B311 9F - - - sbc a, a - 159 D1:B312 A0 - - - and b - 160 D1:B313 82 - - - add a, d - 161 D1:B314 ED 4C - - mlt bc - 162 D1:B316 09 - - - add hl, bc - 163 D1:B317 57 - - - ld d, a - 164 D1:B318 DD 46 02 - ld b, (ix+2) - 165 D1:B31B FD 4E 02 - ld c, (iy+2) - 166 D1:B31E AF - - - xor a, a - 167 D1:B31F CB 78 - - bit 7, b - 168 D1:B321 28 01 - - jr z, $+3 - 169 D1:B323 81 - - - add a, c - 170 D1:B324 CB 79 - - bit 7, c - 171 D1:B326 28 01 - - jr z, $+3 - 172 D1:B328 80 - - - add a, b - 173 D1:B329 ED 4C - - mlt bc - 174 D1:B32B 09 - - - add hl, bc - 175 D1:B32C 47 - - - ld b, a - 176 D1:B32D AF - - - xor a, a - 177 D1:B32E 4F - - - ld c, a - 178 D1:B32F ED 42 - - sbc hl, bc - 179 D1:B331 43 - - - ld b, e - 180 D1:B332 ED 42 - - sbc hl, bc - 181 D1:B334 42 - - - ld b, d - 182 D1:B335 ED 42 - - sbc hl, bc - 183 D1:B337 C9 - - - ret - 184 D1:B338 - - - - vxNormalize: - 185 D1:B338 C9 - - - ret - 186 D1:B339 - - - - vxLength: - 187 D1:B339 C9 - - - ret - 188 D1:B33A - - - - #define rfl call vxReflect - 189 D1:B33A - - - - vxReflect: - 190 D1:B33A - - - - ; I = ix, N = iy, hl = result - 191 D1:B33A - - - - ; reflection direction I-2*dot(N,I)*N - 192 D1:B33A E5 - - - push hl - 193 D1:B33B CD F1 B2 D1 call vxDotProduct - 194 D1:B33F 29 - - - add hl, hl - 195 D1:B340 29 - - - add hl, hl - 196 D1:B341 29 - - - add hl, hl - 197 D1:B342 - - - - ; scale N vector - 198 D1:B342 44 - - - ld b, h - 199 D1:B343 D1 - - - pop de - 200 D1:B344 FD 6E 00 - ld l, (iy+0) - 201 D1:B347 7C - - - ld a, h - 202 D1:B348 17 - - - rla - 203 D1:B349 9F - - - sbc a, a - 204 D1:B34A A5 - - - and l - 205 D1:B34B 4F - - - ld c, a - 206 D1:B34C 7D - - - ld a, l - 207 D1:B34D 17 - - - rla - 208 D1:B34E 9F - - - sbc a, a - 209 D1:B34F A4 - - - and h - 210 D1:B350 81 - - - add a, c - 211 D1:B351 4F - - - ld c, a - 212 D1:B352 ED 6C - - mlt hl - 213 D1:B354 7C - - - ld a, h - 214 D1:B355 91 - - - sub c - 215 D1:B356 67 - - - ld h, a - 216 D1:B357 29 - - - add hl, hl - 217 D1:B358 29 - - - add hl, hl - 218 D1:B359 4C - - - ld c, h - 219 D1:B35A DD 7E 00 - ld a, (ix+0) - 220 D1:B35D 91 - - - sub a, c - 221 D1:B35E 12 - - - ld (de), a - 222 D1:B35F 13 - - - inc de - 223 D1:B360 - - - - - 224 D1:B360 60 - - - ld h, b - 225 D1:B361 FD 6E 01 - ld l, (iy+1) - 226 D1:B364 7C - - - ld a, h - 227 D1:B365 17 - - - rla - 228 D1:B366 9F - - - sbc a, a - 229 D1:B367 A5 - - - and l - 230 D1:B368 4F - - - ld c, a - 231 D1:B369 7D - - - ld a, l - 232 D1:B36A 17 - - - rla - 233 D1:B36B 9F - - - sbc a, a - 234 D1:B36C A4 - - - and h - 235 D1:B36D 81 - - - add a, c - 236 D1:B36E 4F - - - ld c, a - 237 D1:B36F ED 6C - - mlt hl - 238 D1:B371 7C - - - ld a, h - 239 D1:B372 91 - - - sub c - 240 D1:B373 67 - - - ld h, a - 241 D1:B374 29 - - - add hl, hl - 242 D1:B375 29 - - - add hl, hl - 243 D1:B376 4C - - - ld c, h - 244 D1:B377 DD 7E 01 - ld a, (ix+1) - 245 D1:B37A 91 - - - sub a, c - 246 D1:B37B 12 - - - ld (de), a - 247 D1:B37C 13 - - - inc de - 248 D1:B37D - - - - - 249 D1:B37D 60 - - - ld h, b - 250 D1:B37E FD 6E 02 - ld l, (iy+2) - 251 D1:B381 7C - - - ld a, h - 252 D1:B382 17 - - - rla - 253 D1:B383 9F - - - sbc a, a - 254 D1:B384 A5 - - - and l - 255 D1:B385 4F - - - ld c, a - 256 D1:B386 7D - - - ld a, l - 257 D1:B387 17 - - - rla - 258 D1:B388 9F - - - sbc a, a - 259 D1:B389 A4 - - - and h - 260 D1:B38A 81 - - - add a, c - 261 D1:B38B 4F - - - ld c, a - 262 D1:B38C ED 6C - - mlt hl - 263 D1:B38E 7C - - - ld a, h - 264 D1:B38F 91 - - - sub c - 265 D1:B390 67 - - - ld h, a - 266 D1:B391 29 - - - add hl, hl - 267 D1:B392 29 - - - add hl, hl - 268 D1:B393 4C - - - ld c, h - 269 D1:B394 DD 7E 02 - ld a, (ix+2) - 270 D1:B397 91 - - - sub a, c - 271 D1:B398 12 - - - ld (de), a - 272 D1:B399 C9 - - - ret + 1 D1:B1D9 - - - - ; code start - vector utility fonctions + 2 D1:B1D9 - - - - + 3 D1:B1D9 - - - - #define xpd call vxCrossProduct + 4 D1:B1D9 - - - - vxCrossProduct: + 5 D1:B1D9 - - - - ; (hl) = (ix) cross (iy) + 6 D1:B1D9 - - - - ; 774 TStates, 177 Bytes + 7 D1:B1D9 - - - - ; v1.y*v2.z-v1.z*v2.y + 8 D1:B1D9 - - - - ; v1.z*v2.x-v1.x*v2.z + 9 D1:B1D9 - - - - ; v1.x*v2.y-v1.y*v2.x + 10 D1:B1D9 EB - - - ex de, hl + 11 D1:B1DA - - - - ; v1.y + 12 D1:B1DA DD 46 01 - ld b, (ix+1) + 13 D1:B1DD - - - - ; v2.z + 14 D1:B1DD FD 4E 02 - ld c, (iy+2) + 15 D1:B1E0 AF - - - xor a, a + 16 D1:B1E1 ED 62 - - sbc hl, hl + 17 D1:B1E3 CB 78 - - bit 7, b + 18 D1:B1E5 28 01 - - jr z, $+3 + 19 D1:B1E7 81 - - - add a, c + 20 D1:B1E8 CB 79 - - bit 7, c + 21 D1:B1EA 28 01 - - jr z, $+3 + 22 D1:B1EC 80 - - - add a, b + 23 D1:B1ED ED 4C - - mlt bc + 24 D1:B1EF 09 - - - add hl, bc + 25 D1:B1F0 47 - - - ld b, a + 26 D1:B1F1 AF - - - xor a, a + 27 D1:B1F2 4F - - - ld c, a + 28 D1:B1F3 ED 42 - - sbc hl, bc + 29 D1:B1F5 - - - - ; v1.z + 30 D1:B1F5 DD 46 02 - ld b, (ix+2) + 31 D1:B1F8 - - - - ; v2.y + 32 D1:B1F8 FD 4E 01 - ld c, (iy+1) + 33 D1:B1FB AF - - - xor a, a + 34 D1:B1FC CB 78 - - bit 7, b + 35 D1:B1FE 28 01 - - jr z, $+3 + 36 D1:B200 81 - - - add a, c + 37 D1:B201 CB 79 - - bit 7, c + 38 D1:B203 28 01 - - jr z, $+3 + 39 D1:B205 80 - - - add a, b + 40 D1:B206 ED 4C - - mlt bc + 41 D1:B208 B7 - - - or a, a + 42 D1:B209 ED 42 - - sbc hl, bc + 43 D1:B20B 47 - - - ld b, a + 44 D1:B20C AF - - - xor a, a + 45 D1:B20D 4F - - - ld c, a + 46 D1:B20E 09 - - - add hl, bc + 47 D1:B20F 29 - - - add hl, hl + 48 D1:B210 29 - - - add hl, hl + 49 D1:B211 7C - - - ld a, h + 50 D1:B212 12 - - - ld (de), a + 51 D1:B213 13 - - - inc de + 52 D1:B214 - - - - ; v1.z + 53 D1:B214 DD 66 02 - ld h, (ix+2) + 54 D1:B217 - - - - ; v2.x + 55 D1:B217 FD 6E 00 - ld l, (iy+0) + 56 D1:B21A AF - - - xor a, a + 57 D1:B21B CB 7C - - bit 7, h + 58 D1:B21D 28 01 - - jr z, $+3 + 59 D1:B21F 85 - - - add a, l + 60 D1:B220 CB 7D - - bit 7, l + 61 D1:B222 28 01 - - jr z, $+3 + 62 D1:B224 84 - - - add a, h + 63 D1:B225 ED 6C - - mlt hl + 64 D1:B227 47 - - - ld b, a + 65 D1:B228 AF - - - xor a, a + 66 D1:B229 4F - - - ld c, a + 67 D1:B22A ED 42 - - sbc hl, bc + 68 D1:B22C - - - - ; v1.x + 69 D1:B22C DD 46 00 - ld b, (ix+0) + 70 D1:B22F - - - - ; v2.z + 71 D1:B22F FD 4E 02 - ld c, (iy+2) + 72 D1:B232 AF - - - xor a, a + 73 D1:B233 CB 78 - - bit 7, b + 74 D1:B235 28 01 - - jr z, $+3 + 75 D1:B237 81 - - - add a, c + 76 D1:B238 CB 79 - - bit 7, c + 77 D1:B23A 28 01 - - jr z, $+3 + 78 D1:B23C 80 - - - add a, b + 79 D1:B23D ED 4C - - mlt bc + 80 D1:B23F B7 - - - or a, a + 81 D1:B240 ED 42 - - sbc hl, bc + 82 D1:B242 47 - - - ld b, a + 83 D1:B243 AF - - - xor a, a + 84 D1:B244 4F - - - ld c, a + 85 D1:B245 09 - - - add hl, bc + 86 D1:B246 29 - - - add hl, hl + 87 D1:B247 29 - - - add hl, hl + 88 D1:B248 7C - - - ld a, h + 89 D1:B249 12 - - - ld (de), a + 90 D1:B24A 13 - - - inc de + 91 D1:B24B - - - - ; v1.x + 92 D1:B24B DD 66 00 - ld h, (ix+0) + 93 D1:B24E - - - - ; v2.y + 94 D1:B24E FD 6E 01 - ld l, (iy+1) + 95 D1:B251 AF - - - xor a, a + 96 D1:B252 CB 7C - - bit 7, h + 97 D1:B254 28 01 - - jr z, $+3 + 98 D1:B256 85 - - - add a, l + 99 D1:B257 CB 7D - - bit 7, l + 100 D1:B259 28 01 - - jr z, $+3 + 101 D1:B25B 84 - - - add a, h + 102 D1:B25C ED 6C - - mlt hl + 103 D1:B25E 47 - - - ld b, a + 104 D1:B25F AF - - - xor a, a + 105 D1:B260 4F - - - ld c, a + 106 D1:B261 ED 42 - - sbc hl, bc + 107 D1:B263 - - - - ; v1.y + 108 D1:B263 DD 46 01 - ld b, (ix+1) + 109 D1:B266 - - - - ; v2.x + 110 D1:B266 FD 4E 00 - ld c, (iy+0) + 111 D1:B269 AF - - - xor a, a + 112 D1:B26A CB 78 - - bit 7, b + 113 D1:B26C 28 01 - - jr z, $+3 + 114 D1:B26E 81 - - - add a, c + 115 D1:B26F CB 79 - - bit 7, c + 116 D1:B271 28 01 - - jr z, $+3 + 117 D1:B273 80 - - - add a, b + 118 D1:B274 ED 4C - - mlt bc + 119 D1:B276 B7 - - - or a, a + 120 D1:B277 ED 42 - - sbc hl, bc + 121 D1:B279 47 - - - ld b, a + 122 D1:B27A AF - - - xor a, a + 123 D1:B27B 4F - - - ld c, a + 124 D1:B27C 09 - - - add hl, bc + 125 D1:B27D 29 - - - add hl, hl + 126 D1:B27E 29 - - - add hl, hl + 127 D1:B27F EB - - - ex de, hl + 128 D1:B280 72 - - - ld (hl), d + 129 D1:B281 2B - - - dec hl + 130 D1:B282 2B - - - dec hl + 131 D1:B283 C9 - - - ret + 132 D1:B284 - - - - #define dp3 call vxDotProduct + 133 D1:B284 - - - - vxDotProduct: + 134 D1:B284 - - - - ; hl = (ix) dot (iy) + 135 D1:B284 DD 66 00 - ld h, (ix+0) + 136 D1:B287 FD 6E 00 - ld l, (iy+0) + 137 D1:B28A 7C - - - ld a, h + 138 D1:B28B 17 - - - rla + 139 D1:B28C 9F - - - sbc a, a + 140 D1:B28D A5 - - - and l + 141 D1:B28E 5F - - - ld e, a + 142 D1:B28F 7D - - - ld a, l + 143 D1:B290 17 - - - rla + 144 D1:B291 9F - - - sbc a, a + 145 D1:B292 A4 - - - and h + 146 D1:B293 83 - - - add a, e + 147 D1:B294 ED 6C - - mlt hl + 148 D1:B296 5F - - - ld e, a + 149 D1:B297 DD 46 01 - ld b, (ix+1) + 150 D1:B29A FD 4E 01 - ld c, (iy+1) + 151 D1:B29D 78 - - - ld a, b + 152 D1:B29E 17 - - - rla + 153 D1:B29F 9F - - - sbc a, a + 154 D1:B2A0 A1 - - - and c + 155 D1:B2A1 57 - - - ld d, a + 156 D1:B2A2 79 - - - ld a, c + 157 D1:B2A3 17 - - - rla + 158 D1:B2A4 9F - - - sbc a, a + 159 D1:B2A5 A0 - - - and b + 160 D1:B2A6 82 - - - add a, d + 161 D1:B2A7 ED 4C - - mlt bc + 162 D1:B2A9 09 - - - add hl, bc + 163 D1:B2AA 57 - - - ld d, a + 164 D1:B2AB DD 46 02 - ld b, (ix+2) + 165 D1:B2AE FD 4E 02 - ld c, (iy+2) + 166 D1:B2B1 AF - - - xor a, a + 167 D1:B2B2 CB 78 - - bit 7, b + 168 D1:B2B4 28 01 - - jr z, $+3 + 169 D1:B2B6 81 - - - add a, c + 170 D1:B2B7 CB 79 - - bit 7, c + 171 D1:B2B9 28 01 - - jr z, $+3 + 172 D1:B2BB 80 - - - add a, b + 173 D1:B2BC ED 4C - - mlt bc + 174 D1:B2BE 09 - - - add hl, bc + 175 D1:B2BF 47 - - - ld b, a + 176 D1:B2C0 AF - - - xor a, a + 177 D1:B2C1 4F - - - ld c, a + 178 D1:B2C2 ED 42 - - sbc hl, bc + 179 D1:B2C4 43 - - - ld b, e + 180 D1:B2C5 ED 42 - - sbc hl, bc + 181 D1:B2C7 42 - - - ld b, d + 182 D1:B2C8 ED 42 - - sbc hl, bc + 183 D1:B2CA C9 - - - ret + 184 D1:B2CB - - - - vxNormalize: + 185 D1:B2CB C9 - - - ret + 186 D1:B2CC - - - - vxLength: + 187 D1:B2CC C9 - - - ret + 188 D1:B2CD - - - - #define rfl call vxReflect + 189 D1:B2CD - - - - vxReflect: + 190 D1:B2CD - - - - ; I = ix, N = iy, hl = result + 191 D1:B2CD - - - - ; reflection direction I-2*dot(N,I)*N + 192 D1:B2CD E5 - - - push hl + 193 D1:B2CE CD 84 B2 D1 call vxDotProduct + 194 D1:B2D2 29 - - - add hl, hl + 195 D1:B2D3 29 - - - add hl, hl + 196 D1:B2D4 29 - - - add hl, hl + 197 D1:B2D5 - - - - ; scale N vector + 198 D1:B2D5 44 - - - ld b, h + 199 D1:B2D6 D1 - - - pop de + 200 D1:B2D7 FD 6E 00 - ld l, (iy+0) + 201 D1:B2DA 7C - - - ld a, h + 202 D1:B2DB 17 - - - rla + 203 D1:B2DC 9F - - - sbc a, a + 204 D1:B2DD A5 - - - and l + 205 D1:B2DE 4F - - - ld c, a + 206 D1:B2DF 7D - - - ld a, l + 207 D1:B2E0 17 - - - rla + 208 D1:B2E1 9F - - - sbc a, a + 209 D1:B2E2 A4 - - - and h + 210 D1:B2E3 81 - - - add a, c + 211 D1:B2E4 4F - - - ld c, a + 212 D1:B2E5 ED 6C - - mlt hl + 213 D1:B2E7 7C - - - ld a, h + 214 D1:B2E8 91 - - - sub c + 215 D1:B2E9 67 - - - ld h, a + 216 D1:B2EA 29 - - - add hl, hl + 217 D1:B2EB 29 - - - add hl, hl + 218 D1:B2EC 4C - - - ld c, h + 219 D1:B2ED DD 7E 00 - ld a, (ix+0) + 220 D1:B2F0 91 - - - sub a, c + 221 D1:B2F1 12 - - - ld (de), a + 222 D1:B2F2 13 - - - inc de + 223 D1:B2F3 - - - - + 224 D1:B2F3 60 - - - ld h, b + 225 D1:B2F4 FD 6E 01 - ld l, (iy+1) + 226 D1:B2F7 7C - - - ld a, h + 227 D1:B2F8 17 - - - rla + 228 D1:B2F9 9F - - - sbc a, a + 229 D1:B2FA A5 - - - and l + 230 D1:B2FB 4F - - - ld c, a + 231 D1:B2FC 7D - - - ld a, l + 232 D1:B2FD 17 - - - rla + 233 D1:B2FE 9F - - - sbc a, a + 234 D1:B2FF A4 - - - and h + 235 D1:B300 81 - - - add a, c + 236 D1:B301 4F - - - ld c, a + 237 D1:B302 ED 6C - - mlt hl + 238 D1:B304 7C - - - ld a, h + 239 D1:B305 91 - - - sub c + 240 D1:B306 67 - - - ld h, a + 241 D1:B307 29 - - - add hl, hl + 242 D1:B308 29 - - - add hl, hl + 243 D1:B309 4C - - - ld c, h + 244 D1:B30A DD 7E 01 - ld a, (ix+1) + 245 D1:B30D 91 - - - sub a, c + 246 D1:B30E 12 - - - ld (de), a + 247 D1:B30F 13 - - - inc de + 248 D1:B310 - - - - + 249 D1:B310 60 - - - ld h, b + 250 D1:B311 FD 6E 02 - ld l, (iy+2) + 251 D1:B314 7C - - - ld a, h + 252 D1:B315 17 - - - rla + 253 D1:B316 9F - - - sbc a, a + 254 D1:B317 A5 - - - and l + 255 D1:B318 4F - - - ld c, a + 256 D1:B319 7D - - - ld a, l + 257 D1:B31A 17 - - - rla + 258 D1:B31B 9F - - - sbc a, a + 259 D1:B31C A4 - - - and h + 260 D1:B31D 81 - - - add a, c + 261 D1:B31E 4F - - - ld c, a + 262 D1:B31F ED 6C - - mlt hl + 263 D1:B321 7C - - - ld a, h + 264 D1:B322 91 - - - sub c + 265 D1:B323 67 - - - ld h, a + 266 D1:B324 29 - - - add hl, hl + 267 D1:B325 29 - - - add hl, hl + 268 D1:B326 4C - - - ld c, h + 269 D1:B327 DD 7E 02 - ld a, (ix+2) + 270 D1:B32A 91 - - - sub a, c + 271 D1:B32B 12 - - - ld (de), a + 272 D1:B32C C9 - - - ret Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" - 6 D1:B39A - - - - #include "vxFramebuffer.ez80" + 6 D1:B32D - - - - #include "vxFramebuffer.ez80" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxFramebuffer.ez80" - 1 D1:B39A - - - - ; code start - framebuffer functions - 2 D1:B39A - - - - - 3 D1:B39A - - - - #define VX_FRAMEBUFFER_AUX0 $D40000 ; first VRAM buffer - 4 D1:B39A - - - - #define VX_FRAMEBUFFER_AUX1 $D52C00 ; second VRAM buffer - 5 D1:B39A - - - - #define VX_FRAMEBUFFER_SIZE $12C00 - 6 D1:B39A - - - - #define VX_VRAM $E30800 - 7 D1:B39A - - - - #define VX_BPP8 lcdBpp8 ; LCD 8 bpp mode bits - 8 D1:B39A - - - - #define VX_BPP16 lcdBpp16 ; LCD 16 bpp mode bits - 9 D1:B39A - - - - #define VX_LCD_CTRL mpLcdCtrl ; LCD control port - 10 D1:B39A - - - - #define VX_LCD_IMSC $E3001C ; LCD Interrupt Mask Register - 11 D1:B39A - - - - #define VX_LCD_ICR $E30028 ; LCD Interrupt Clear/Set Register - 12 D1:B39A - - - - #define VX_LCD_ISR $E30020 ; LCD Interrupt Status Register - 13 D1:B39A - - - - #define VX_LCD_BUFFER $E30010 ; base adress of LCD - 14 D1:B39A - - - - #define VX_LCD_PALETTE mpLcdPalette ; palette (r3g3b2) - 15 D1:B39A - - - - #define VX_LCD_TIMING2 $E30008 - 16 D1:B39A - - - - - 17 D1:B39A - - - - #define VX_GREEN_BITS %00000111 - 18 D1:B39A - - - - #define VX_RED_BITS %11100000 - 19 D1:B39A - - - - #define VX_BLUE_BITS %00011000 - 20 D1:B39A - - - - #define VX_COLOR_LOW_BIT %00101001 - 21 D1:B39A - - - - - 22 D1:B39A - - - - #define vxFramebuffer $E30014 - 23 D1:B39A - - - - - 24 D1:B39A - - - - vxResetPalette: - 25 D1:B39A - - - - ; load palette : - 26 D1:B39A - - - - ; color is 3-3-2 format, RGB - 27 D1:B39A - - - - ; calculate 1555 format color - 28 D1:B39A 21 00 02 E3 ld hl,VX_LCD_PALETTE ; palette mem - 29 D1:B39E 06 00 - - ld b,0 - 30 D1:B3A0 - - - - vxLoadPaletteLoop: ; this loop is from wikiti - 31 D1:B3A0 50 - - - ld d,b - 32 D1:B3A1 78 - - - ld a,b - 33 D1:B3A2 E6 C0 - - and %11000000 - 34 D1:B3A4 CB 3A - - srl d - 35 D1:B3A6 1F - - - rra - 36 D1:B3A7 5F - - - ld e,a - 37 D1:B3A8 3E 1F - - ld a,%00011111 - 38 D1:B3AA A0 - - - and b - 39 D1:B3AB B3 - - - or e - 40 D1:B3AC 77 - - - ld (hl),a - 41 D1:B3AD 23 - - - inc hl - 42 D1:B3AE 72 - - - ld (hl),d - 43 D1:B3AF 23 - - - inc hl - 44 D1:B3B0 04 - - - inc b - 45 D1:B3B1 20 ED - - jr nz,vxLoadPaletteLoop - 46 D1:B3B3 C9 - - - ret - 47 D1:B3B4 - - - - vxSetPalette: - 48 D1:B3B4 - - - - ; set the framebuffer palette - 49 D1:B3B4 - - - - ; input : hl - 50 D1:B3B4 11 00 02 E3 ld de, VX_LCD_PALETTE - 51 D1:B3B8 01 00 02 00 ld bc, 512 - 52 D1:B3BC ED B0 - - ldir - 53 D1:B3BE C9 - - - ret - 54 D1:B3BF - - - - vxClearBuffer: - 55 D1:B3BF - - - - ; reset framebuffer with color - 56 D1:B3BF - - - - ; input : c - 57 D1:B3BF - - - - ; output : none - 58 D1:B3BF - - - - ; destroyed : all except ix,iy - 59 D1:B3BF 2A 14 00 E3 ld hl, (vxFramebuffer) - 60 D1:B3C3 71 - - - ld (hl), c - 61 D1:B3C4 EB - - - ex de, hl - 62 D1:B3C5 B7 - - - or a, a - 63 D1:B3C6 ED 62 - - sbc hl, hl - 64 D1:B3C8 19 - - - add hl, de - 65 D1:B3C9 13 - - - inc de - 66 D1:B3CA 01 FF 2B 01 ld bc, 76799 - 67 D1:B3CE ED B0 - - ldir - 68 D1:B3D0 C9 - - - ret - 69 D1:B3D1 - - - - vxFlushLCD: - 70 D1:B3D1 - - - - ; swap the framebuffer and synchronize with LCD - 71 D1:B3D1 2A 10 00 E3 ld hl, (VX_LCD_BUFFER) - 72 D1:B3D5 ED 5B 14 00 + 1 D1:B32D - - - - ; code start - framebuffer functions + 2 D1:B32D - - - - + 3 D1:B32D - - - - #define VX_FRAMEBUFFER_AUX0 $D40000 ; first VRAM buffer + 4 D1:B32D - - - - #define VX_FRAMEBUFFER_AUX1 $D52C00 ; second VRAM buffer + 5 D1:B32D - - - - #define VX_FRAMEBUFFER_SIZE $12C00 + 6 D1:B32D - - - - #define VX_VRAM $E30800 + 7 D1:B32D - - - - #define VX_BPP8 lcdBpp8 ; LCD 8 bpp mode bits + 8 D1:B32D - - - - #define VX_BPP16 lcdBpp16 ; LCD 16 bpp mode bits + 9 D1:B32D - - - - #define VX_LCD_CTRL mpLcdCtrl ; LCD control port + 10 D1:B32D - - - - #define VX_LCD_IMSC $E3001C ; LCD Interrupt Mask Register + 11 D1:B32D - - - - #define VX_LCD_ICR $E30028 ; LCD Interrupt Clear/Set Register + 12 D1:B32D - - - - #define VX_LCD_ISR $E30020 ; LCD Interrupt Status Register + 13 D1:B32D - - - - #define VX_LCD_BUFFER $E30010 ; base adress of LCD + 14 D1:B32D - - - - #define VX_LCD_PALETTE mpLcdPalette ; palette (r3g3b2) + 15 D1:B32D - - - - #define VX_LCD_TIMING2 $E30008 + 16 D1:B32D - - - - + 17 D1:B32D - - - - #define VX_GREEN_BITS %00000111 + 18 D1:B32D - - - - #define VX_RED_BITS %11100000 + 19 D1:B32D - - - - #define VX_BLUE_BITS %00011000 + 20 D1:B32D - - - - #define VX_COLOR_LOW_BIT %00101001 + 21 D1:B32D - - - - + 22 D1:B32D - - - - #define vxFramebuffer $E30014 + 23 D1:B32D - - - - + 24 D1:B32D - - - - vxResetPalette: + 25 D1:B32D - - - - ; load palette : + 26 D1:B32D - - - - ; color is 3-3-2 format, RGB + 27 D1:B32D - - - - ; calculate 1555 format color + 28 D1:B32D 21 00 02 E3 ld hl,VX_LCD_PALETTE ; palette mem + 29 D1:B331 06 00 - - ld b,0 + 30 D1:B333 - - - - vxLoadPaletteLoop: ; this loop is from wikiti + 31 D1:B333 50 - - - ld d,b + 32 D1:B334 78 - - - ld a,b + 33 D1:B335 E6 C0 - - and %11000000 + 34 D1:B337 CB 3A - - srl d + 35 D1:B339 1F - - - rra + 36 D1:B33A 5F - - - ld e,a + 37 D1:B33B 3E 1F - - ld a,%00011111 + 38 D1:B33D A0 - - - and b + 39 D1:B33E B3 - - - or e + 40 D1:B33F 77 - - - ld (hl),a + 41 D1:B340 23 - - - inc hl + 42 D1:B341 72 - - - ld (hl),d + 43 D1:B342 23 - - - inc hl + 44 D1:B343 04 - - - inc b + 45 D1:B344 20 ED - - jr nz,vxLoadPaletteLoop + 46 D1:B346 C9 - - - ret + 47 D1:B347 - - - - vxSetPalette: + 48 D1:B347 - - - - ; set the framebuffer palette + 49 D1:B347 - - - - ; input : hl + 50 D1:B347 11 00 02 E3 ld de, VX_LCD_PALETTE + 51 D1:B34B 01 00 02 00 ld bc, 512 + 52 D1:B34F ED B0 - - ldir + 53 D1:B351 C9 - - - ret + 54 D1:B352 - - - - vxClearBuffer: + 55 D1:B352 - - - - ; reset framebuffer with color + 56 D1:B352 - - - - ; input : c + 57 D1:B352 - - - - ; output : none + 58 D1:B352 - - - - ; destroyed : all except ix,iy + 59 D1:B352 2A 14 00 E3 ld hl, (vxFramebuffer) + 60 D1:B356 71 - - - ld (hl), c + 61 D1:B357 EB - - - ex de, hl + 62 D1:B358 B7 - - - or a, a + 63 D1:B359 ED 62 - - sbc hl, hl + 64 D1:B35B 19 - - - add hl, de + 65 D1:B35C 13 - - - inc de + 66 D1:B35D 01 FF 2B 01 ld bc, 76799 + 67 D1:B361 ED B0 - - ldir + 68 D1:B363 C9 - - - ret + 69 D1:B364 - - - - vxFlushLCD: + 70 D1:B364 - - - - ; swap the framebuffer and synchronize with LCD + 71 D1:B364 2A 10 00 E3 ld hl, (VX_LCD_BUFFER) + 72 D1:B368 ED 5B 14 00 E3 - - - ld de, (vxFramebuffer) - 73 D1:B3DA 22 14 00 E3 ld (vxFramebuffer), hl - 74 D1:B3DE ED 53 10 00 + 73 D1:B36D 22 14 00 E3 ld (vxFramebuffer), hl + 74 D1:B371 ED 53 10 00 E3 - - - ld (VX_LCD_BUFFER), de - 75 D1:B3E3 - - - - vxWaitLCD: - 76 D1:B3E3 - - - - ; wait until the LCD finish displaying the frame - 77 D1:B3E3 21 28 00 E3 ld hl, VX_LCD_ICR - 78 D1:B3E7 CB D6 - - set 2, (hl) - 79 D1:B3E9 2E 20 - - ld l, VX_LCD_ISR&$FF - 80 D1:B3EB - - - - vxWaitLoop: - 81 D1:B3EB CB 56 - - bit 2, (hl) - 82 D1:B3ED 28 FC - - jr z, vxWaitLoop - 83 D1:B3EF C9 - - - ret - 84 D1:B3F0 - - - - vxSwapLCD: - 85 D1:B3F0 - - - - ; swap buffer without LCD acknowledge - 86 D1:B3F0 2A 10 00 E3 ld hl, (VX_LCD_BUFFER) - 87 D1:B3F4 ED 5B 14 00 + 75 D1:B376 - - - - vxWaitLCD: + 76 D1:B376 - - - - ; wait until the LCD finish displaying the frame + 77 D1:B376 21 28 00 E3 ld hl, VX_LCD_ICR + 78 D1:B37A CB D6 - - set 2, (hl) + 79 D1:B37C 2E 20 - - ld l, VX_LCD_ISR&$FF + 80 D1:B37E - - - - vxWaitLoop: + 81 D1:B37E CB 56 - - bit 2, (hl) + 82 D1:B380 28 FC - - jr z, vxWaitLoop + 83 D1:B382 C9 - - - ret + 84 D1:B383 - - - - vxSwapLCD: + 85 D1:B383 - - - - ; swap buffer without LCD acknowledge + 86 D1:B383 2A 10 00 E3 ld hl, (VX_LCD_BUFFER) + 87 D1:B387 ED 5B 14 00 E3 - - - ld de, (vxFramebuffer) - 88 D1:B3F9 22 14 00 E3 ld (vxFramebuffer), hl - 89 D1:B3FD ED 53 10 00 + 88 D1:B38C 22 14 00 E3 ld (vxFramebuffer), hl + 89 D1:B390 ED 53 10 00 E3 - - - ld (VX_LCD_BUFFER), de - 90 D1:B402 C9 - - - ret - 91 D1:B403 - - - - vxBlendRBG: - 92 D1:B403 - - - - ; blend color c and a - 93 D1:B403 - - - - ; destroy d and e - 94 D1:B403 57 - - - ld d, a - 95 D1:B404 A1 - - - and c - 96 D1:B405 E6 29 - - and VX_COLOR_LOW_BIT - 97 D1:B407 5F - - - ld e, a - 98 D1:B408 7A - - - ld a, d - 99 D1:B409 E6 D6 - - and ~VX_COLOR_LOW_BIT - 100 D1:B40B 57 - - - ld d, a - 101 D1:B40C 79 - - - ld a, c - 102 D1:B40D E6 D6 - - and ~VX_COLOR_LOW_BIT - 103 D1:B40F 82 - - - add a, d - 104 D1:B410 1F - - - rra - 105 D1:B411 83 - - - add a, e - 106 D1:B412 C9 - - - ret - 107 D1:B413 - - - - vxLitRBG: - 108 D1:B413 - - - - ; lit a color (c) by factor (a) (0-63::255) - 109 D1:B413 - - - - ; destroy bc, hl - 110 D1:B413 47 - - - ld b, a - 111 D1:B414 79 - - - ld a, c - 112 D1:B415 E6 07 - - and VX_GREEN_BITS - 113 D1:B417 6F - - - ld l, a - 114 D1:B418 60 - - - ld h, b - 115 D1:B419 ED 6C - - mlt hl - 116 D1:B41B 29 - - - add hl, hl - 117 D1:B41C 29 - - - add hl, hl - 118 D1:B41D 7C - - - ld a, h - 119 D1:B41E ED 64 F8 - tst a, %11111000 - 120 D1:B421 28 02 - - jr z, $+4 - 121 D1:B423 26 07 - - ld h, VX_GREEN_BITS - 122 D1:B425 79 - - - ld a, c - 123 D1:B426 E6 18 - - and VX_BLUE_BITS - 124 D1:B428 6F - - - ld l, a - 125 D1:B429 7C - - - ld a, h - 126 D1:B42A 60 - - - ld h, b - 127 D1:B42B ED 6C - - mlt hl - 128 D1:B42D 29 - - - add hl, hl - 129 D1:B42E 29 - - - add hl, hl - 130 D1:B42F 6F - - - ld l, a - 131 D1:B430 7C - - - ld a, h - 132 D1:B431 ED 64 E0 - tst a, %11100000 - 133 D1:B434 28 02 - - jr z, $+4 - 134 D1:B436 3E 18 - - ld a, VX_BLUE_BITS - 135 D1:B438 E6 18 - - and VX_BLUE_BITS - 136 D1:B43A B5 - - - or l - 137 D1:B43B 60 - - - ld h, b - 138 D1:B43C 47 - - - ld b, a - 139 D1:B43D 79 - - - ld a, c - 140 D1:B43E E6 E0 - - and VX_RED_BITS - 141 D1:B440 6F - - - ld l, a - 142 D1:B441 ED 6C - - mlt hl - 143 D1:B443 7C - - - ld a, h - 144 D1:B444 ED 64 C0 - tst a, %11000000 - 145 D1:B447 28 02 - - jr z, $+4 - 146 D1:B449 26 38 - - ld h, VX_RED_BITS>>2 - 147 D1:B44B 29 - - - add hl, hl - 148 D1:B44C 29 - - - add hl, hl - 149 D1:B44D 7C - - - ld a, h - 150 D1:B44E E6 E0 - - and VX_RED_BITS - 151 D1:B450 B0 - - - or b - 152 D1:B451 C9 - - - ret - 153 D1:B452 - - - - vxLerpRBG: - 154 D1:B452 - - - - ; 452 TStates - 155 D1:B452 E5 - - - push hl - 156 D1:B453 46 - - - ld b, (hl) - 157 D1:B454 - - - - ; b,c,e - 158 D1:B454 5F - - - ld e, a - 159 D1:B455 78 - - - ld a, b - 160 D1:B456 E6 07 - - and VX_GREEN_BITS - 161 D1:B458 67 - - - ld h, a - 162 D1:B459 79 - - - ld a, c - 163 D1:B45A E6 07 - - and VX_GREEN_BITS - 164 D1:B45C 94 - - - sub h - 165 D1:B45D 30 02 - - jr nc, $+4 - 166 D1:B45F 2F - - - cpl - 167 D1:B460 3C - - - inc a - 168 D1:B461 67 - - - ld h, a - 169 D1:B462 6B - - - ld l, e - 170 D1:B463 - - - - ; convert flag - 171 D1:B463 9F - - - sbc a, a - 172 D1:B464 B7 - - - or a, a - 173 D1:B465 - - - - ; c=nz, nc=z - 174 D1:B465 ED 6C - - mlt hl - 175 D1:B467 29 - - - add hl, hl - 176 D1:B468 29 - - - add hl, hl - 177 D1:B469 7C - - - ld a, h - 178 D1:B46A 28 02 - - jr z, $+4 - 179 D1:B46C ED 44 - - neg - 180 D1:B46E 67 - - - ld h, a - 181 D1:B46F 78 - - - ld a, b - 182 D1:B470 E6 07 - - and VX_GREEN_BITS - 183 D1:B472 84 - - - add a, h - 184 D1:B473 57 - - - ld d, a - 185 D1:B474 - - - - ; 138 - 186 D1:B474 78 - - - ld a, b - 187 D1:B475 E6 18 - - and VX_BLUE_BITS - 188 D1:B477 67 - - - ld h, a - 189 D1:B478 79 - - - ld a, c - 190 D1:B479 E6 18 - - and VX_BLUE_BITS - 191 D1:B47B 94 - - - sub h - 192 D1:B47C 30 02 - - jr nc, $+4 - 193 D1:B47E 2F - - - cpl - 194 D1:B47F 3C - - - inc a - 195 D1:B480 67 - - - ld h, a - 196 D1:B481 6B - - - ld l, e - 197 D1:B482 ED 6C - - mlt hl - 198 D1:B484 CB 14 - - rl h ; push down carry flag - 199 D1:B486 29 - - - add hl, hl - 200 D1:B487 7C - - - ld a, h - 201 D1:B488 E6 18 - - and VX_BLUE_BITS - 202 D1:B48A CB 4C - - bit 1, h - 203 D1:B48C 28 02 - - jr z, $+4 - 204 D1:B48E ED 44 - - neg - 205 D1:B490 67 - - - ld h, a - 206 D1:B491 78 - - - ld a, b - 207 D1:B492 E6 18 - - and VX_BLUE_BITS - 208 D1:B494 84 - - - add a, h - 209 D1:B495 B2 - - - or d - 210 D1:B496 57 - - - ld d, a - 211 D1:B497 - - - - ; 280 - 212 D1:B497 78 - - - ld a, b - 213 D1:B498 E6 E0 - - and VX_RED_BITS - 214 D1:B49A 67 - - - ld h, a - 215 D1:B49B 79 - - - ld a, c - 216 D1:B49C E6 E0 - - and VX_RED_BITS - 217 D1:B49E 94 - - - sub h - 218 D1:B49F 30 02 - - jr nc, $+4 - 219 D1:B4A1 2F - - - cpl - 220 D1:B4A2 3C - - - inc a ; neg, put different flag output - 221 D1:B4A3 67 - - - ld h, a - 222 D1:B4A4 6B - - - ld l, e - 223 D1:B4A5 ED 6C - - mlt hl - 224 D1:B4A7 CB 14 - - rl h ; push down carry flag - 225 D1:B4A9 7C - - - ld a, h - 226 D1:B4AA E6 70 - - and VX_RED_BITS>>1 - 227 D1:B4AC CB 44 - - bit 0, h - 228 D1:B4AE 28 02 - - jr z, $+4 - 229 D1:B4B0 ED 44 - - neg - 230 D1:B4B2 67 - - - ld h, a - 231 D1:B4B3 78 - - - ld a, b - 232 D1:B4B4 1F - - - rra - 233 D1:B4B5 E6 70 - - and VX_RED_BITS>>1 - 234 D1:B4B7 84 - - - add a, h - 235 D1:B4B8 CB 27 - - sla a - 236 D1:B4BA B2 - - - or d - 237 D1:B4BB E1 - - - pop hl - 238 D1:B4BC C9 - - - ret + 90 D1:B395 C9 - - - ret + 91 D1:B396 - - - - vxBlendRBG: + 92 D1:B396 - - - - ; blend color c and a + 93 D1:B396 - - - - ; destroy d and e + 94 D1:B396 57 - - - ld d, a + 95 D1:B397 A1 - - - and c + 96 D1:B398 E6 29 - - and VX_COLOR_LOW_BIT + 97 D1:B39A 5F - - - ld e, a + 98 D1:B39B 7A - - - ld a, d + 99 D1:B39C E6 D6 - - and ~VX_COLOR_LOW_BIT + 100 D1:B39E 57 - - - ld d, a + 101 D1:B39F 79 - - - ld a, c + 102 D1:B3A0 E6 D6 - - and ~VX_COLOR_LOW_BIT + 103 D1:B3A2 82 - - - add a, d + 104 D1:B3A3 1F - - - rra + 105 D1:B3A4 83 - - - add a, e + 106 D1:B3A5 C9 - - - ret + 107 D1:B3A6 - - - - vxLitRBG: + 108 D1:B3A6 - - - - ; lit a color (c) by factor (a) (0-63::255) + 109 D1:B3A6 - - - - ; destroy bc, hl + 110 D1:B3A6 47 - - - ld b, a + 111 D1:B3A7 79 - - - ld a, c + 112 D1:B3A8 E6 07 - - and VX_GREEN_BITS + 113 D1:B3AA 6F - - - ld l, a + 114 D1:B3AB 60 - - - ld h, b + 115 D1:B3AC ED 6C - - mlt hl + 116 D1:B3AE 29 - - - add hl, hl + 117 D1:B3AF 29 - - - add hl, hl + 118 D1:B3B0 7C - - - ld a, h + 119 D1:B3B1 ED 64 F8 - tst a, %11111000 + 120 D1:B3B4 28 02 - - jr z, $+4 + 121 D1:B3B6 26 07 - - ld h, VX_GREEN_BITS + 122 D1:B3B8 79 - - - ld a, c + 123 D1:B3B9 E6 18 - - and VX_BLUE_BITS + 124 D1:B3BB 6F - - - ld l, a + 125 D1:B3BC 7C - - - ld a, h + 126 D1:B3BD 60 - - - ld h, b + 127 D1:B3BE ED 6C - - mlt hl + 128 D1:B3C0 29 - - - add hl, hl + 129 D1:B3C1 29 - - - add hl, hl + 130 D1:B3C2 6F - - - ld l, a + 131 D1:B3C3 7C - - - ld a, h + 132 D1:B3C4 ED 64 E0 - tst a, %11100000 + 133 D1:B3C7 28 02 - - jr z, $+4 + 134 D1:B3C9 3E 18 - - ld a, VX_BLUE_BITS + 135 D1:B3CB E6 18 - - and VX_BLUE_BITS + 136 D1:B3CD B5 - - - or l + 137 D1:B3CE 60 - - - ld h, b + 138 D1:B3CF 47 - - - ld b, a + 139 D1:B3D0 79 - - - ld a, c + 140 D1:B3D1 E6 E0 - - and VX_RED_BITS + 141 D1:B3D3 6F - - - ld l, a + 142 D1:B3D4 ED 6C - - mlt hl + 143 D1:B3D6 7C - - - ld a, h + 144 D1:B3D7 ED 64 C0 - tst a, %11000000 + 145 D1:B3DA 28 02 - - jr z, $+4 + 146 D1:B3DC 26 38 - - ld h, VX_RED_BITS>>2 + 147 D1:B3DE 29 - - - add hl, hl + 148 D1:B3DF 29 - - - add hl, hl + 149 D1:B3E0 7C - - - ld a, h + 150 D1:B3E1 E6 E0 - - and VX_RED_BITS + 151 D1:B3E3 B0 - - - or b + 152 D1:B3E4 C9 - - - ret + 153 D1:B3E5 - - - - vxLerpRBG: + 154 D1:B3E5 - - - - ; 452 TStates + 155 D1:B3E5 E5 - - - push hl + 156 D1:B3E6 46 - - - ld b, (hl) + 157 D1:B3E7 - - - - ; b,c,e + 158 D1:B3E7 5F - - - ld e, a + 159 D1:B3E8 78 - - - ld a, b + 160 D1:B3E9 E6 07 - - and VX_GREEN_BITS + 161 D1:B3EB 67 - - - ld h, a + 162 D1:B3EC 79 - - - ld a, c + 163 D1:B3ED E6 07 - - and VX_GREEN_BITS + 164 D1:B3EF 94 - - - sub h + 165 D1:B3F0 30 02 - - jr nc, $+4 + 166 D1:B3F2 2F - - - cpl + 167 D1:B3F3 3C - - - inc a + 168 D1:B3F4 67 - - - ld h, a + 169 D1:B3F5 6B - - - ld l, e + 170 D1:B3F6 - - - - ; convert flag + 171 D1:B3F6 9F - - - sbc a, a + 172 D1:B3F7 B7 - - - or a, a + 173 D1:B3F8 - - - - ; c=nz, nc=z + 174 D1:B3F8 ED 6C - - mlt hl + 175 D1:B3FA 29 - - - add hl, hl + 176 D1:B3FB 29 - - - add hl, hl + 177 D1:B3FC 7C - - - ld a, h + 178 D1:B3FD 28 02 - - jr z, $+4 + 179 D1:B3FF ED 44 - - neg + 180 D1:B401 67 - - - ld h, a + 181 D1:B402 78 - - - ld a, b + 182 D1:B403 E6 07 - - and VX_GREEN_BITS + 183 D1:B405 84 - - - add a, h + 184 D1:B406 57 - - - ld d, a + 185 D1:B407 - - - - ; 138 + 186 D1:B407 78 - - - ld a, b + 187 D1:B408 E6 18 - - and VX_BLUE_BITS + 188 D1:B40A 67 - - - ld h, a + 189 D1:B40B 79 - - - ld a, c + 190 D1:B40C E6 18 - - and VX_BLUE_BITS + 191 D1:B40E 94 - - - sub h + 192 D1:B40F 30 02 - - jr nc, $+4 + 193 D1:B411 2F - - - cpl + 194 D1:B412 3C - - - inc a + 195 D1:B413 67 - - - ld h, a + 196 D1:B414 6B - - - ld l, e + 197 D1:B415 ED 6C - - mlt hl + 198 D1:B417 CB 14 - - rl h ; push down carry flag + 199 D1:B419 29 - - - add hl, hl + 200 D1:B41A 7C - - - ld a, h + 201 D1:B41B E6 18 - - and VX_BLUE_BITS + 202 D1:B41D CB 4C - - bit 1, h + 203 D1:B41F 28 02 - - jr z, $+4 + 204 D1:B421 ED 44 - - neg + 205 D1:B423 67 - - - ld h, a + 206 D1:B424 78 - - - ld a, b + 207 D1:B425 E6 18 - - and VX_BLUE_BITS + 208 D1:B427 84 - - - add a, h + 209 D1:B428 B2 - - - or d + 210 D1:B429 57 - - - ld d, a + 211 D1:B42A - - - - ; 280 + 212 D1:B42A 78 - - - ld a, b + 213 D1:B42B E6 E0 - - and VX_RED_BITS + 214 D1:B42D 67 - - - ld h, a + 215 D1:B42E 79 - - - ld a, c + 216 D1:B42F E6 E0 - - and VX_RED_BITS + 217 D1:B431 94 - - - sub h + 218 D1:B432 30 02 - - jr nc, $+4 + 219 D1:B434 2F - - - cpl + 220 D1:B435 3C - - - inc a ; neg, put different flag output + 221 D1:B436 67 - - - ld h, a + 222 D1:B437 6B - - - ld l, e + 223 D1:B438 ED 6C - - mlt hl + 224 D1:B43A CB 14 - - rl h ; push down carry flag + 225 D1:B43C 7C - - - ld a, h + 226 D1:B43D E6 70 - - and VX_RED_BITS>>1 + 227 D1:B43F CB 44 - - bit 0, h + 228 D1:B441 28 02 - - jr z, $+4 + 229 D1:B443 ED 44 - - neg + 230 D1:B445 67 - - - ld h, a + 231 D1:B446 78 - - - ld a, b + 232 D1:B447 1F - - - rra + 233 D1:B448 E6 70 - - and VX_RED_BITS>>1 + 234 D1:B44A 84 - - - add a, h + 235 D1:B44B CB 27 - - sla a + 236 D1:B44D B2 - - - or d + 237 D1:B44E E1 - - - pop hl + 238 D1:B44F C9 - - - ret Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" - 7 D1:B4BD - - - - #include "vxClipping.ez80" + 7 D1:B450 - - - - #include "vxClipping.ez80" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxClipping.ez80" - 1 D1:B4BD - - - - #define vxPlaneBit0 %10000000 - 2 D1:B4BD - - - - #define vxPlaneBit1 %01000000 - 3 D1:B4BD - - - - #define vxPlaneBit2 %00100000 - 4 D1:B4BD - - - - #define vxPlaneBit3 %00010000 - 5 D1:B4BD - - - - #define vxPlaneBit4 %00001000 - 6 D1:B4BD - - - - #define vxVertexDirty %11111111 - 7 D1:B4BD - - - - ;;#define VX_CLIP_EPSILON 32 - 8 D1:B4BD - - - - #define VX_MAX_TMP_VERTEX 8 - 9 D1:B4BD - - - - #define VX_MAX_PATCH_SIZE 16 - 10 D1:B4BD - - - - #define VX_SCREEN_WIDTH 320 - 11 D1:B4BD - - - - #define VX_SCREEN_HEIGHT 240 - 12 D1:B4BD - - - - #define VX_SCREEN_WCENTER 160 - 13 D1:B4BD - - - - #define VX_SCREEN_HCENTER 120 - 14 D1:B4BD - - - - - 15 D1:B4BD - - - - VX_PATCH_INPUT: - 16 D1:B4BD 00 00 00 00 + 1 D1:B450 - - - - #define vxPlaneBit0 %10000000 + 2 D1:B450 - - - - #define vxPlaneBit1 %01000000 + 3 D1:B450 - - - - #define vxPlaneBit2 %00100000 + 4 D1:B450 - - - - #define vxPlaneBit3 %00010000 + 5 D1:B450 - - - - #define vxPlaneBit4 %00001000 + 6 D1:B450 - - - - #define vxVertexDirty %11111111 + 7 D1:B450 - - - - ;;#define VX_CLIP_EPSILON 32 + 8 D1:B450 - - - - #define VX_MAX_TMP_VERTEX 8 + 9 D1:B450 - - - - #define VX_MAX_PATCH_SIZE 16 + 10 D1:B450 - - - - #define VX_SCREEN_WIDTH 320 + 11 D1:B450 - - - - #define VX_SCREEN_HEIGHT 240 + 12 D1:B450 - - - - #define VX_SCREEN_WCENTER 160 + 13 D1:B450 - - - - #define VX_SCREEN_HCENTER 120 + 14 D1:B450 - - - - + 15 D1:B450 - - - - VX_PATCH_INPUT: + 16 D1:B450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -2123,8 +2043,8 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxClipping.ez80" 00 00 00 00 00 00 00 00 00 00 00 00 .fill 64 - 17 D1:B4FD - - - - VX_PATCH_OUTPUT: - 18 D1:B4FD 00 00 00 00 + 17 D1:B490 - - - - VX_PATCH_OUTPUT: + 18 D1:B490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -2140,8 +2060,8 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxClipping.ez80" 00 00 00 00 00 00 00 00 00 00 00 00 .fill 64 - 19 D1:B53D - - - - VX_VERTEX_POOL: - 20 D1:B53D 00 00 00 00 + 19 D1:B4D0 - - - - VX_VERTEX_POOL: + 20 D1:B4D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -2173,684 +2093,684 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxClipping.ez80" 00 00 00 00 00 00 00 00 00 00 00 00 .fill 128 - 21 D1:B5BD - - - - vxNewSize: - 22 D1:B5BD 00 - - - .db 0 - 23 D1:B5BE - - - - vxVertexAdress: - 24 D1:B5BE 00 00 00 - .dl 0 - 25 D1:B5C1 - - - - VX_CLIP_VERTEX0: - 26 D1:B5C1 00 00 00 00 + 21 D1:B550 - - - - vxNewSize: + 22 D1:B550 00 - - - .db 0 + 23 D1:B551 - - - - vxVertexAdress: + 24 D1:B551 00 00 00 - .dl 0 + 25 D1:B554 - - - - VX_CLIP_VERTEX0: + 26 D1:B554 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - - .dl 0,0,0,0,0,0 - 27 D1:B5D3 - - - - VX_CLIP_VERTEX1: - 28 D1:B5D3 00 00 00 00 + 27 D1:B566 - - - - VX_CLIP_VERTEX1: + 28 D1:B566 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - - .dl 0,0,0,0,0,0 - 29 D1:B5E5 - - - - vxMixWrite: - 30 D1:B5E5 00 00 00 00 .db 0,0,0,0 - 31 D1:B5E9 - - - - - 32 D1:B5E9 - - - - vxClipTriangle: - 33 D1:B5E9 FD 22 72 B6 + 29 D1:B578 - - - - vxMixWrite: + 30 D1:B578 00 00 00 00 .db 0,0,0,0 + 31 D1:B57C - - - - + 32 D1:B57C - - - - vxClipTriangle: + 33 D1:B57C FD 22 05 B6 D1 - - - ld (vxClipDraw), iy - 34 D1:B5EE FD 21 FD B4 + 34 D1:B581 FD 21 90 B4 D1 - - - ld iy, VX_PATCH_OUTPUT - 35 D1:B5F3 FD 1F 00 - ld (iy+0), de - 36 D1:B5F6 FD 2F 03 - ld (iy+3), hl - 37 D1:B5F9 FD 0F 06 - ld (iy+6), bc - 38 D1:B5FC FD 1F 09 - ld (iy+9), de - 39 D1:B5FF 21 3D B5 D1 ld hl, VX_VERTEX_POOL - 40 D1:B603 22 BE B5 D1 ld (vxVertexAdress), hl - 41 D1:B607 - - - - - 42 D1:B607 06 03 - - ld b, 3 - 43 D1:B609 - - - - - 44 D1:B609 ED 64 80 - tst a, %10000000 - 45 D1:B60C 28 0D - - jr z, vxNextPlane0 - 46 D1:B60E F5 - - - push af - 47 D1:B60F 3E 80 - - ld a, %10000000 - 48 D1:B611 DD 21 F3 B7 + 35 D1:B586 FD 1F 00 - ld (iy+0), de + 36 D1:B589 FD 2F 03 - ld (iy+3), hl + 37 D1:B58C FD 0F 06 - ld (iy+6), bc + 38 D1:B58F FD 1F 09 - ld (iy+9), de + 39 D1:B592 21 D0 B4 D1 ld hl, VX_VERTEX_POOL + 40 D1:B596 22 51 B5 D1 ld (vxVertexAdress), hl + 41 D1:B59A - - - - + 42 D1:B59A 06 03 - - ld b, 3 + 43 D1:B59C - - - - + 44 D1:B59C ED 64 80 - tst a, %10000000 + 45 D1:B59F 28 0D - - jr z, vxNextPlane0 + 46 D1:B5A1 F5 - - - push af + 47 D1:B5A2 3E 80 - - ld a, %10000000 + 48 D1:B5A4 DD 21 86 B7 D1 - - - ld ix, vxRightDistance - 49 D1:B616 CD 79 B6 D1 call vxClipPlanePolygon - 50 D1:B61A F1 - - - pop af - 51 D1:B61B - - - - vxNextPlane0: - 52 D1:B61B ED 64 40 - tst a, %01000000 - 53 D1:B61E 28 0D - - jr z, vxNextPlane1 - 54 D1:B620 F5 - - - push af - 55 D1:B621 3E 40 - - ld a, %01000000 - 56 D1:B623 DD 21 06 B8 + 49 D1:B5A9 CD 0C B6 D1 call vxClipPlanePolygon + 50 D1:B5AD F1 - - - pop af + 51 D1:B5AE - - - - vxNextPlane0: + 52 D1:B5AE ED 64 40 - tst a, %01000000 + 53 D1:B5B1 28 0D - - jr z, vxNextPlane1 + 54 D1:B5B3 F5 - - - push af + 55 D1:B5B4 3E 40 - - ld a, %01000000 + 56 D1:B5B6 DD 21 99 B7 D1 - - - ld ix, vxLeftDistance - 57 D1:B628 CD 79 B6 D1 call vxClipPlanePolygon - 58 D1:B62C F1 - - - pop af - 59 D1:B62D - - - - vxNextPlane1: - 60 D1:B62D ED 64 20 - tst a, %00100000 - 61 D1:B630 28 0D - - jr z, vxNextPlane2 - 62 D1:B632 F5 - - - push af - 63 D1:B633 3E 20 - - ld a, %00100000 - 64 D1:B635 DD 21 17 B8 + 57 D1:B5BB CD 0C B6 D1 call vxClipPlanePolygon + 58 D1:B5BF F1 - - - pop af + 59 D1:B5C0 - - - - vxNextPlane1: + 60 D1:B5C0 ED 64 20 - tst a, %00100000 + 61 D1:B5C3 28 0D - - jr z, vxNextPlane2 + 62 D1:B5C5 F5 - - - push af + 63 D1:B5C6 3E 20 - - ld a, %00100000 + 64 D1:B5C8 DD 21 AA B7 D1 - - - ld ix, vxDownDistance - 65 D1:B63A CD 79 B6 D1 call vxClipPlanePolygon - 66 D1:B63E F1 - - - pop af - 67 D1:B63F - - - - vxNextPlane2: - 68 D1:B63F ED 64 10 - tst a, %00010000 - 69 D1:B642 28 0D - - jr z, vxClipEnd - 70 D1:B644 F5 - - - push af - 71 D1:B645 3E 10 - - ld a, %00010000 - 72 D1:B647 DD 21 27 B8 + 65 D1:B5CD CD 0C B6 D1 call vxClipPlanePolygon + 66 D1:B5D1 F1 - - - pop af + 67 D1:B5D2 - - - - vxNextPlane2: + 68 D1:B5D2 ED 64 10 - tst a, %00010000 + 69 D1:B5D5 28 0D - - jr z, vxClipEnd + 70 D1:B5D7 F5 - - - push af + 71 D1:B5D8 3E 10 - - ld a, %00010000 + 72 D1:B5DA DD 21 BA B7 D1 - - - ld ix, vxUpDistance - 73 D1:B64C CD 79 B6 D1 call vxClipPlanePolygon - 74 D1:B650 F1 - - - pop af - 75 D1:B651 - - - - vxClipEnd: - 76 D1:B651 - - - - - 77 D1:B651 78 - - - ld a, b - 78 D1:B652 FE 03 - - cp a, 3 - 79 D1:B654 D8 - - - ret c ; preventive quit - 80 D1:B655 F5 - - - push af - 81 D1:B656 FD E5 - - push iy - 82 D1:B658 ED 54 00 - lea ix, iy+0 - 83 D1:B65B - - - - vxClipLoop: - 84 D1:B65B C5 - - - push bc - 85 D1:B65C DD 31 00 - ld iy, (ix+0) - 86 D1:B65F FD 7E 00 - ld a, (iy+0) - 87 D1:B662 E6 01 - - and $01 - 88 D1:B664 C4 12 B9 D1 call nz, vxClipDivide - 89 D1:B668 C1 - - - pop bc - 90 D1:B669 ED 32 03 - lea ix, ix+3 - 91 D1:B66C 10 ED - - djnz vxClipLoop - 92 D1:B66E FD E1 - - pop iy - 93 D1:B670 F1 - - - pop af - 94 D1:B671 - - - - vxClipDraw=$+1 - 95 D1:B671 C3 00 00 00 jp $000000 - 96 D1:B675 - - - - vxClipDistance: - 97 D1:B675 - - - - CALL=$+1 - 98 D1:B675 C3 00 00 00 jp $000000 - 99 D1:B679 - - - - vxClipPlanePolygon: - 100 D1:B679 - - - - ; don't destroy bc - 101 D1:B679 - - - - ; input : iy list, b:size,ix:dcall, a:mask - 102 D1:B679 - - - - ; ouput : iy newlist, b:newsize - 103 D1:B679 32 B5 B6 D1 ld (vxMM0), a - 104 D1:B67D 32 BD B6 D1 ld (vxMM1), a - 105 D1:B681 32 E0 B6 D1 ld (vxMM2), a - 106 D1:B685 AF - - - xor a - 107 D1:B686 32 BD B5 D1 ld (vxNewSize), a - 108 D1:B68A 78 - - - ld a, b - 109 D1:B68B B7 - - - or a, a - 110 D1:B68C C8 - - - ret z - 111 D1:B68D DD 22 76 B6 + 73 D1:B5DF CD 0C B6 D1 call vxClipPlanePolygon + 74 D1:B5E3 F1 - - - pop af + 75 D1:B5E4 - - - - vxClipEnd: + 76 D1:B5E4 - - - - + 77 D1:B5E4 78 - - - ld a, b + 78 D1:B5E5 FE 03 - - cp a, 3 + 79 D1:B5E7 D8 - - - ret c ; preventive quit + 80 D1:B5E8 F5 - - - push af + 81 D1:B5E9 FD E5 - - push iy + 82 D1:B5EB ED 54 00 - lea ix, iy+0 + 83 D1:B5EE - - - - vxClipLoop: + 84 D1:B5EE C5 - - - push bc + 85 D1:B5EF DD 31 00 - ld iy, (ix+0) + 86 D1:B5F2 FD 7E 00 - ld a, (iy+0) + 87 D1:B5F5 E6 01 - - and $01 + 88 D1:B5F7 C4 A5 B8 D1 call nz, vxClipDivide + 89 D1:B5FB C1 - - - pop bc + 90 D1:B5FC ED 32 03 - lea ix, ix+3 + 91 D1:B5FF 10 ED - - djnz vxClipLoop + 92 D1:B601 FD E1 - - pop iy + 93 D1:B603 F1 - - - pop af + 94 D1:B604 - - - - vxClipDraw=$+1 + 95 D1:B604 C3 00 00 00 jp $000000 + 96 D1:B608 - - - - vxClipDistance: + 97 D1:B608 - - - - CALL=$+1 + 98 D1:B608 C3 00 00 00 jp $000000 + 99 D1:B60C - - - - vxClipPlanePolygon: + 100 D1:B60C - - - - ; don't destroy bc + 101 D1:B60C - - - - ; input : iy list, b:size,ix:dcall, a:mask + 102 D1:B60C - - - - ; ouput : iy newlist, b:newsize + 103 D1:B60C 32 48 B6 D1 ld (vxMM0), a + 104 D1:B610 32 50 B6 D1 ld (vxMM1), a + 105 D1:B614 32 73 B6 D1 ld (vxMM2), a + 106 D1:B618 AF - - - xor a + 107 D1:B619 32 50 B5 D1 ld (vxNewSize), a + 108 D1:B61D 78 - - - ld a, b + 109 D1:B61E B7 - - - or a, a + 110 D1:B61F C8 - - - ret z + 111 D1:B620 DD 22 09 B6 D1 - - - ld (CALL), ix - 112 D1:B692 - - - - - 113 D1:B692 04 - - - inc b - 114 D1:B693 0E 03 - - ld c, 3 - 115 D1:B695 ED 4C - - mlt bc ; size of copy - 116 D1:B697 ED 23 00 - lea hl, iy - 117 D1:B69A 11 BD B4 D1 ld de, VX_PATCH_INPUT - 118 D1:B69E ED B0 - - ldir - 119 D1:B6A0 - - - - ; parse through VX_PATCH_INPUT, output is VX_PATCH_OUTPUT - 120 D1:B6A0 47 - - - ld b, a - 121 D1:B6A1 FD 21 BD B4 + 112 D1:B625 - - - - + 113 D1:B625 04 - - - inc b + 114 D1:B626 0E 03 - - ld c, 3 + 115 D1:B628 ED 4C - - mlt bc ; size of copy + 116 D1:B62A ED 23 00 - lea hl, iy + 117 D1:B62D 11 50 B4 D1 ld de, VX_PATCH_INPUT + 118 D1:B631 ED B0 - - ldir + 119 D1:B633 - - - - ; parse through VX_PATCH_INPUT, output is VX_PATCH_OUTPUT + 120 D1:B633 47 - - - ld b, a + 121 D1:B634 FD 21 50 B4 D1 - - - ld iy, VX_PATCH_INPUT - 122 D1:B6A6 DD 21 FD B4 + 122 D1:B639 DD 21 90 B4 D1 - - - ld ix, VX_PATCH_OUTPUT - 123 D1:B6AB - - - - vxClipSutherHodgmanLoop: - 124 D1:B6AB C5 - - - push bc - 125 D1:B6AC FD 27 00 - ld hl, (iy+0) - 126 D1:B6AF FD 17 03 - ld de, (iy+3) - 127 D1:B6B2 1A - - - ld a, (de) - 128 D1:B6B3 A6 - - - and (hl) - 129 D1:B6B4 - - - - vxMM0=$+1 - 130 D1:B6B4 E6 00 - - and 0 - 131 D1:B6B6 C2 D0 B7 D1 jp nz, vxClipContinueX - 132 D1:B6BA 1A - - - ld a, (de) - 133 D1:B6BB B6 - - - or (hl) - 134 D1:B6BC - - - - vxMM1=$+1 - 135 D1:B6BC E6 00 - - and 0 - 136 D1:B6BE 20 13 - - jr nz, vxClipCheck0 - 137 D1:B6C0 DD 2F 00 - ld (ix+0), hl ; both point out, copy v0 - 138 D1:B6C3 ED 32 03 - lea ix, ix+3 - 139 D1:B6C6 3A BD B5 D1 ld a, (vxNewSize) - 140 D1:B6CA 3C - - - inc a - 141 D1:B6CB 32 BD B5 D1 ld (vxNewSize), a - 142 D1:B6CF C3 D0 B7 D1 jp vxClipContinueX - 143 D1:B6D3 - - - - vxClipCheck0: - 144 D1:B6D3 7E - - - ld a, (hl) - 145 D1:B6D4 DD E5 - - push ix - 146 D1:B6D6 CD 75 B6 D1 call vxClipDistance - 147 D1:B6DA EB - - - ex de, hl ; distance 0 - 148 D1:B6DB CD 75 B6 D1 call vxClipDistance - 149 D1:B6DF - - - - vxMM2=$+1 - 150 D1:B6DF E6 00 - - and 0 - 151 D1:B6E1 F5 - - - push af ; is edge leaving - 152 D1:B6E2 - - - - - 153 D1:B6E2 E5 - - - push hl - 154 D1:B6E3 B7 - - - or a, a - 155 D1:B6E4 ED 52 - - sbc hl, de ; d0/(d0-d1) - 156 D1:B6E6 D1 - - - pop de - 157 D1:B6E7 EB - - - ex de, hl - 158 D1:B6E8 CD 8C B8 D1 call vxClipFactor - 159 D1:B6EC - - - - - 160 D1:B6EC FD 31 03 - ld ix, (iy+3) - 161 D1:B6EF DD 17 0D - ld de, (ix+VX_VERTEX_RZ) - 162 D1:B6F2 FD 31 00 - ld ix, (iy+0) - 163 D1:B6F5 DD 27 0D - ld hl, (ix+VX_VERTEX_RZ) - 164 D1:B6F8 CD 45 B8 D1 call vxClipMixWord - 165 D1:B6FC 22 CE B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_RZ), hl - 166 D1:B700 - - - - - 167 D1:B700 FD 31 03 - ld ix, (iy+3) - 168 D1:B703 DD 17 07 - ld de, (ix+VX_VERTEX_RX) - 169 D1:B706 FD 31 00 - ld ix, (iy+0) - 170 D1:B709 DD 27 07 - ld hl, (ix+VX_VERTEX_RX) - 171 D1:B70C CD 45 B8 D1 call vxClipMixWord - 172 D1:B710 22 C8 B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_RX), hl - 173 D1:B714 - - - - - 174 D1:B714 FD 31 03 - ld ix, (iy+3) - 175 D1:B717 DD 17 0A - ld de, (ix+VX_VERTEX_RY) - 176 D1:B71A FD 31 00 - ld ix, (iy+0) - 177 D1:B71D DD 27 0A - ld hl, (ix+VX_VERTEX_RY) - 178 D1:B720 CD 45 B8 D1 call vxClipMixWord - 179 D1:B724 22 CB B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_RY), hl - 180 D1:B728 - - - - - 181 D1:B728 11 00 00 00 ld de, 0 - 182 D1:B72C FD 31 03 - ld ix, (iy+3) - 183 D1:B72F DD 5E 04 - ld e, (ix+VX_VERTEX_GPR0) - 184 D1:B732 FD 31 00 - ld ix, (iy+0) - 185 D1:B735 DD 56 04 - ld d, (ix+VX_VERTEX_GPR0) - 186 D1:B738 - - - - ;;call vxClipMixByte - 187 D1:B738 7A - - - ld a, d - 188 D1:B739 93 - - - sub e - 189 D1:B73A 6F - - - ld l, a - 190 D1:B73B 60 - - - ld h, b - 191 D1:B73C ED 6C - - mlt hl - 192 D1:B73E 30 03 - - jr nc, $+5 - 193 D1:B740 7C - - - ld a, h - 194 D1:B741 90 - - - sub b - 195 D1:B742 67 - - - ld h, a - 196 D1:B743 53 - - - ld d, e - 197 D1:B744 1E 00 - - ld e, 0 - 198 D1:B746 19 - - - add hl, de - 199 D1:B747 7C - - - ld a, h - 200 D1:B748 - - - - - 201 D1:B748 32 C5 B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_GPR0), a - 202 D1:B74C - - - - - 203 D1:B74C FD 31 03 - ld ix, (iy+3) - 204 D1:B74F DD 5E 05 - ld e, (ix+VX_VERTEX_GPR1) - 205 D1:B752 FD 31 00 - ld ix, (iy+0) - 206 D1:B755 DD 56 05 - ld d, (ix+VX_VERTEX_GPR1) - 207 D1:B758 - - - - ;call vxClipMixByte - 208 D1:B758 - - - - - 209 D1:B758 7A - - - ld a, d - 210 D1:B759 93 - - - sub e - 211 D1:B75A 6F - - - ld l, a - 212 D1:B75B 60 - - - ld h, b - 213 D1:B75C ED 6C - - mlt hl - 214 D1:B75E 30 03 - - jr nc, $+5 - 215 D1:B760 7C - - - ld a, h - 216 D1:B761 90 - - - sub b - 217 D1:B762 67 - - - ld h, a - 218 D1:B763 53 - - - ld d, e - 219 D1:B764 1E 00 - - ld e, 0 - 220 D1:B766 19 - - - add hl, de - 221 D1:B767 7C - - - ld a, h - 222 D1:B768 - - - - - 223 D1:B768 32 C6 B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_GPR1), a - 224 D1:B76C - - - - - 225 D1:B76C DD 21 C1 B5 + 123 D1:B63E - - - - vxClipSutherHodgmanLoop: + 124 D1:B63E C5 - - - push bc + 125 D1:B63F FD 27 00 - ld hl, (iy+0) + 126 D1:B642 FD 17 03 - ld de, (iy+3) + 127 D1:B645 1A - - - ld a, (de) + 128 D1:B646 A6 - - - and (hl) + 129 D1:B647 - - - - vxMM0=$+1 + 130 D1:B647 E6 00 - - and 0 + 131 D1:B649 C2 63 B7 D1 jp nz, vxClipContinueX + 132 D1:B64D 1A - - - ld a, (de) + 133 D1:B64E B6 - - - or (hl) + 134 D1:B64F - - - - vxMM1=$+1 + 135 D1:B64F E6 00 - - and 0 + 136 D1:B651 20 13 - - jr nz, vxClipCheck0 + 137 D1:B653 DD 2F 00 - ld (ix+0), hl ; both point out, copy v0 + 138 D1:B656 ED 32 03 - lea ix, ix+3 + 139 D1:B659 3A 50 B5 D1 ld a, (vxNewSize) + 140 D1:B65D 3C - - - inc a + 141 D1:B65E 32 50 B5 D1 ld (vxNewSize), a + 142 D1:B662 C3 63 B7 D1 jp vxClipContinueX + 143 D1:B666 - - - - vxClipCheck0: + 144 D1:B666 7E - - - ld a, (hl) + 145 D1:B667 DD E5 - - push ix + 146 D1:B669 CD 08 B6 D1 call vxClipDistance + 147 D1:B66D EB - - - ex de, hl ; distance 0 + 148 D1:B66E CD 08 B6 D1 call vxClipDistance + 149 D1:B672 - - - - vxMM2=$+1 + 150 D1:B672 E6 00 - - and 0 + 151 D1:B674 F5 - - - push af ; is edge leaving + 152 D1:B675 - - - - + 153 D1:B675 E5 - - - push hl + 154 D1:B676 B7 - - - or a, a + 155 D1:B677 ED 52 - - sbc hl, de ; d0/(d0-d1) + 156 D1:B679 D1 - - - pop de + 157 D1:B67A EB - - - ex de, hl + 158 D1:B67B CD 1F B8 D1 call vxClipFactor + 159 D1:B67F - - - - + 160 D1:B67F FD 31 03 - ld ix, (iy+3) + 161 D1:B682 DD 17 0D - ld de, (ix+VX_VERTEX_RZ) + 162 D1:B685 FD 31 00 - ld ix, (iy+0) + 163 D1:B688 DD 27 0D - ld hl, (ix+VX_VERTEX_RZ) + 164 D1:B68B CD D8 B7 D1 call vxClipMixWord + 165 D1:B68F 22 61 B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_RZ), hl + 166 D1:B693 - - - - + 167 D1:B693 FD 31 03 - ld ix, (iy+3) + 168 D1:B696 DD 17 07 - ld de, (ix+VX_VERTEX_RX) + 169 D1:B699 FD 31 00 - ld ix, (iy+0) + 170 D1:B69C DD 27 07 - ld hl, (ix+VX_VERTEX_RX) + 171 D1:B69F CD D8 B7 D1 call vxClipMixWord + 172 D1:B6A3 22 5B B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_RX), hl + 173 D1:B6A7 - - - - + 174 D1:B6A7 FD 31 03 - ld ix, (iy+3) + 175 D1:B6AA DD 17 0A - ld de, (ix+VX_VERTEX_RY) + 176 D1:B6AD FD 31 00 - ld ix, (iy+0) + 177 D1:B6B0 DD 27 0A - ld hl, (ix+VX_VERTEX_RY) + 178 D1:B6B3 CD D8 B7 D1 call vxClipMixWord + 179 D1:B6B7 22 5E B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_RY), hl + 180 D1:B6BB - - - - + 181 D1:B6BB 11 00 00 00 ld de, 0 + 182 D1:B6BF FD 31 03 - ld ix, (iy+3) + 183 D1:B6C2 DD 5E 04 - ld e, (ix+VX_VERTEX_GPR0) + 184 D1:B6C5 FD 31 00 - ld ix, (iy+0) + 185 D1:B6C8 DD 56 04 - ld d, (ix+VX_VERTEX_GPR0) + 186 D1:B6CB - - - - ;;call vxClipMixByte + 187 D1:B6CB 7A - - - ld a, d + 188 D1:B6CC 93 - - - sub e + 189 D1:B6CD 6F - - - ld l, a + 190 D1:B6CE 60 - - - ld h, b + 191 D1:B6CF ED 6C - - mlt hl + 192 D1:B6D1 30 03 - - jr nc, $+5 + 193 D1:B6D3 7C - - - ld a, h + 194 D1:B6D4 90 - - - sub b + 195 D1:B6D5 67 - - - ld h, a + 196 D1:B6D6 53 - - - ld d, e + 197 D1:B6D7 1E 00 - - ld e, 0 + 198 D1:B6D9 19 - - - add hl, de + 199 D1:B6DA 7C - - - ld a, h + 200 D1:B6DB - - - - + 201 D1:B6DB 32 58 B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_GPR0), a + 202 D1:B6DF - - - - + 203 D1:B6DF FD 31 03 - ld ix, (iy+3) + 204 D1:B6E2 DD 5E 05 - ld e, (ix+VX_VERTEX_GPR1) + 205 D1:B6E5 FD 31 00 - ld ix, (iy+0) + 206 D1:B6E8 DD 56 05 - ld d, (ix+VX_VERTEX_GPR1) + 207 D1:B6EB - - - - ;call vxClipMixByte + 208 D1:B6EB - - - - + 209 D1:B6EB 7A - - - ld a, d + 210 D1:B6EC 93 - - - sub e + 211 D1:B6ED 6F - - - ld l, a + 212 D1:B6EE 60 - - - ld h, b + 213 D1:B6EF ED 6C - - mlt hl + 214 D1:B6F1 30 03 - - jr nc, $+5 + 215 D1:B6F3 7C - - - ld a, h + 216 D1:B6F4 90 - - - sub b + 217 D1:B6F5 67 - - - ld h, a + 218 D1:B6F6 53 - - - ld d, e + 219 D1:B6F7 1E 00 - - ld e, 0 + 220 D1:B6F9 19 - - - add hl, de + 221 D1:B6FA 7C - - - ld a, h + 222 D1:B6FB - - - - + 223 D1:B6FB 32 59 B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_GPR1), a + 224 D1:B6FF - - - - + 225 D1:B6FF DD 21 54 B5 D1 - - - ld ix, VX_CLIP_VERTEX0+0 - 226 D1:B771 CD F2 B9 D1 call vxClipFrustrumCode - 227 D1:B775 F6 01 - - or a, $01 - 228 D1:B777 DD 77 00 - ld (ix+0), a - 229 D1:B77A - - - - - 230 D1:B77A - - - - ; do specific edge shift here - 231 D1:B77A F1 - - - pop af - 232 D1:B77B DD E1 - - pop ix - 233 D1:B77D - - - - - 234 D1:B77D C2 AD B7 D1 jp nz, vxEdgeRentring - 235 D1:B781 - - - - ; edge leaving - 236 D1:B781 - - - - ; copy clip vertex, output both v0 and intersection - 237 D1:B781 FD 27 00 - ld hl, (iy+0) - 238 D1:B784 DD 2F 00 - ld (ix+0), hl - 239 D1:B787 21 C1 B5 D1 ld hl, VX_CLIP_VERTEX0 - 240 D1:B78B ED 5B BE B5 + 226 D1:B704 CD 85 B9 D1 call vxClipFrustrumCode + 227 D1:B708 F6 01 - - or a, $01 + 228 D1:B70A DD 77 00 - ld (ix+0), a + 229 D1:B70D - - - - + 230 D1:B70D - - - - ; do specific edge shift here + 231 D1:B70D F1 - - - pop af + 232 D1:B70E DD E1 - - pop ix + 233 D1:B710 - - - - + 234 D1:B710 C2 40 B7 D1 jp nz, vxEdgeRentring + 235 D1:B714 - - - - ; edge leaving + 236 D1:B714 - - - - ; copy clip vertex, output both v0 and intersection + 237 D1:B714 FD 27 00 - ld hl, (iy+0) + 238 D1:B717 DD 2F 00 - ld (ix+0), hl + 239 D1:B71A 21 54 B5 D1 ld hl, VX_CLIP_VERTEX0 + 240 D1:B71E ED 5B 51 B5 D1 - - - ld de, (vxVertexAdress) - 241 D1:B790 DD 1F 03 - ld (ix+3), de - 242 D1:B793 01 10 00 00 ld bc, 16 - 243 D1:B797 ED B0 - - ldir - 244 D1:B799 ED 53 BE B5 + 241 D1:B723 DD 1F 03 - ld (ix+3), de + 242 D1:B726 01 10 00 00 ld bc, 16 + 243 D1:B72A ED B0 - - ldir + 244 D1:B72C ED 53 51 B5 D1 - - - ld (vxVertexAdress), de - 245 D1:B79E ED 32 06 - lea ix, ix+6 - 246 D1:B7A1 3A BD B5 D1 ld a, (vxNewSize) - 247 D1:B7A5 C6 02 - - add a, 2 - 248 D1:B7A7 32 BD B5 D1 ld (vxNewSize), a - 249 D1:B7AB 18 23 - - jr vxClipContinueX - 250 D1:B7AD - - - - vxEdgeRentring: - 251 D1:B7AD - - - - ; copy clip vertex, output intersection - 252 D1:B7AD 21 C1 B5 D1 ld hl, VX_CLIP_VERTEX0 - 253 D1:B7B1 ED 5B BE B5 + 245 D1:B731 ED 32 06 - lea ix, ix+6 + 246 D1:B734 3A 50 B5 D1 ld a, (vxNewSize) + 247 D1:B738 C6 02 - - add a, 2 + 248 D1:B73A 32 50 B5 D1 ld (vxNewSize), a + 249 D1:B73E 18 23 - - jr vxClipContinueX + 250 D1:B740 - - - - vxEdgeRentring: + 251 D1:B740 - - - - ; copy clip vertex, output intersection + 252 D1:B740 21 54 B5 D1 ld hl, VX_CLIP_VERTEX0 + 253 D1:B744 ED 5B 51 B5 D1 - - - ld de, (vxVertexAdress) - 254 D1:B7B6 DD 1F 00 - ld (ix+0), de - 255 D1:B7B9 01 10 00 00 ld bc, 16 - 256 D1:B7BD ED B0 - - ldir - 257 D1:B7BF ED 53 BE B5 + 254 D1:B749 DD 1F 00 - ld (ix+0), de + 255 D1:B74C 01 10 00 00 ld bc, 16 + 256 D1:B750 ED B0 - - ldir + 257 D1:B752 ED 53 51 B5 D1 - - - ld (vxVertexAdress), de - 258 D1:B7C4 ED 32 03 - lea ix, ix+3 - 259 D1:B7C7 3A BD B5 D1 ld a, (vxNewSize) - 260 D1:B7CB 3C - - - inc a - 261 D1:B7CC 32 BD B5 D1 ld (vxNewSize), a - 262 D1:B7D0 - - - - vxClipContinueX: - 263 D1:B7D0 ED 33 03 - lea iy, iy+3 - 264 D1:B7D3 C1 - - - pop bc - 265 D1:B7D4 05 - - - dec b - 266 D1:B7D5 C2 AB B6 D1 jp nz, vxClipSutherHodgmanLoop - 267 D1:B7D9 3A BD B5 D1 ld a, (vxNewSize) - 268 D1:B7DD 47 - - - ld b, a - 269 D1:B7DE FD 21 FD B4 + 258 D1:B757 ED 32 03 - lea ix, ix+3 + 259 D1:B75A 3A 50 B5 D1 ld a, (vxNewSize) + 260 D1:B75E 3C - - - inc a + 261 D1:B75F 32 50 B5 D1 ld (vxNewSize), a + 262 D1:B763 - - - - vxClipContinueX: + 263 D1:B763 ED 33 03 - lea iy, iy+3 + 264 D1:B766 C1 - - - pop bc + 265 D1:B767 05 - - - dec b + 266 D1:B768 C2 3E B6 D1 jp nz, vxClipSutherHodgmanLoop + 267 D1:B76C 3A 50 B5 D1 ld a, (vxNewSize) + 268 D1:B770 47 - - - ld b, a + 269 D1:B771 FD 21 90 B4 D1 - - - ld iy, VX_PATCH_OUTPUT - 270 D1:B7E3 - - - - ; make output cyclic - 271 D1:B7E3 FD 27 00 - ld hl, (iy+0) - 272 D1:B7E6 DD 2F 00 - ld (ix+0), hl - 273 D1:B7E9 - - - - ; important is iy = new patch - 274 D1:B7E9 C9 - - - ret - 275 D1:B7EA - - - - vxZDistance: - 276 D1:B7EA 01 0D 00 00 ld bc, VX_VERTEX_RZ - 277 D1:B7EE 09 - - - add hl, bc - 278 D1:B7EF ED 27 - - ld hl, (hl) - 279 D1:B7F1 2B - - - dec hl - 280 D1:B7F2 C9 - - - ret - 281 D1:B7F3 - - - - vxRightDistance: - 282 D1:B7F3 - - - - tRT: - 283 D1:B7F3 - - - - ;1000 - 284 D1:B7F3 - - - - ; input hl, test for X>Z - 285 D1:B7F3 01 07 00 00 ld bc, VX_VERTEX_RX - 286 D1:B7F7 09 - - - add hl, bc - 287 D1:B7F8 ED 07 - - ld bc, (hl) - 288 D1:B7FA 23 23 23 - inc hl \ inc hl \ inc hl - 289 D1:B7FD 23 23 23 - inc hl \ inc hl \ inc hl - 290 D1:B800 ED 27 - - ld hl, (hl) - 291 D1:B802 B7 - - - or a, a - 292 D1:B803 ED 42 - - sbc hl, bc ;Z-X, if > ; R<0 - 293 D1:B805 C9 - - - ret - 294 D1:B806 - - - - vxLeftDistance: - 295 D1:B806 - - - - ttLT: - 296 D1:B806 - - - - ; 0100 - 297 D1:B806 01 07 00 00 ld bc, VX_VERTEX_RX - 298 D1:B80A 09 - - - add hl, bc - 299 D1:B80B ED 07 - - ld bc, (hl) - 300 D1:B80D 23 23 23 - inc hl \ inc hl \ inc hl - 301 D1:B810 23 23 23 - inc hl \ inc hl \ inc hl - 302 D1:B813 ED 27 - - ld hl, (hl) - 303 D1:B815 09 - - - add hl, bc - 304 D1:B816 C9 - - - ret - 305 D1:B817 - - - - vxDownDistance: - 306 D1:B817 - - - - tDWP: - 307 D1:B817 01 0A 00 00 ld bc, VX_VERTEX_RY - 308 D1:B81B 09 - - - add hl, bc - 309 D1:B81C ED 07 - - ld bc, (hl) - 310 D1:B81E 23 23 23 - inc hl \ inc hl \ inc hl - 311 D1:B821 ED 27 - - ld hl, (hl) - 312 D1:B823 B7 - - - or a, a - 313 D1:B824 ED 42 - - sbc hl, bc - 314 D1:B826 C9 - - - ret - 315 D1:B827 - - - - vxUpDistance: - 316 D1:B827 - - - - tUPP: - 317 D1:B827 01 0A 00 00 ld bc, VX_VERTEX_RY - 318 D1:B82B 09 - - - add hl, bc - 319 D1:B82C ED 07 - - ld bc, (hl) - 320 D1:B82E 23 23 23 - inc hl \ inc hl \ inc hl - 321 D1:B831 ED 27 - - ld hl, (hl) - 322 D1:B833 09 - - - add hl, bc - 323 D1:B834 C9 - - - ret - 324 D1:B835 - - - - - 325 D1:B835 - - - - vxClipMixByte: - 326 D1:B835 - - - - ; a = (d-e)*bc/65536+e - 327 D1:B835 7A - - - ld a, d - 328 D1:B836 93 - - - sub e - 329 D1:B837 6F - - - ld l, a - 330 D1:B838 60 - - - ld h, b - 331 D1:B839 ED 6C - - mlt hl - 332 D1:B83B 30 03 - - jr nc, $+5 - 333 D1:B83D B7 - - - or a, a - 334 D1:B83E ED 42 - - sbc hl, bc - 335 D1:B840 53 - - - ld d, e - 336 D1:B841 1E 00 - - ld e, 0 - 337 D1:B843 19 - - - add hl, de - 338 D1:B844 C9 - - - ret - 339 D1:B845 - - - - - 340 D1:B845 - - - - vxClipMixWord: - 341 D1:B845 - - - - ; (hl-de)*bc/65536+de - 342 D1:B845 D5 - - - push de - 343 D1:B846 B7 - - - or a, a - 344 D1:B847 ED 52 - - sbc hl, de - 345 D1:B849 22 E5 B5 D1 ld (vxMixWrite), hl - 346 D1:B84D DD 21 E5 B5 + 270 D1:B776 - - - - ; make output cyclic + 271 D1:B776 FD 27 00 - ld hl, (iy+0) + 272 D1:B779 DD 2F 00 - ld (ix+0), hl + 273 D1:B77C - - - - ; important is iy = new patch + 274 D1:B77C C9 - - - ret + 275 D1:B77D - - - - vxZDistance: + 276 D1:B77D 01 0D 00 00 ld bc, VX_VERTEX_RZ + 277 D1:B781 09 - - - add hl, bc + 278 D1:B782 ED 27 - - ld hl, (hl) + 279 D1:B784 2B - - - dec hl + 280 D1:B785 C9 - - - ret + 281 D1:B786 - - - - vxRightDistance: + 282 D1:B786 - - - - tRT: + 283 D1:B786 - - - - ;1000 + 284 D1:B786 - - - - ; input hl, test for X>Z + 285 D1:B786 01 07 00 00 ld bc, VX_VERTEX_RX + 286 D1:B78A 09 - - - add hl, bc + 287 D1:B78B ED 07 - - ld bc, (hl) + 288 D1:B78D 23 23 23 - inc hl \ inc hl \ inc hl + 289 D1:B790 23 23 23 - inc hl \ inc hl \ inc hl + 290 D1:B793 ED 27 - - ld hl, (hl) + 291 D1:B795 B7 - - - or a, a + 292 D1:B796 ED 42 - - sbc hl, bc ;Z-X, if > ; R<0 + 293 D1:B798 C9 - - - ret + 294 D1:B799 - - - - vxLeftDistance: + 295 D1:B799 - - - - ttLT: + 296 D1:B799 - - - - ; 0100 + 297 D1:B799 01 07 00 00 ld bc, VX_VERTEX_RX + 298 D1:B79D 09 - - - add hl, bc + 299 D1:B79E ED 07 - - ld bc, (hl) + 300 D1:B7A0 23 23 23 - inc hl \ inc hl \ inc hl + 301 D1:B7A3 23 23 23 - inc hl \ inc hl \ inc hl + 302 D1:B7A6 ED 27 - - ld hl, (hl) + 303 D1:B7A8 09 - - - add hl, bc + 304 D1:B7A9 C9 - - - ret + 305 D1:B7AA - - - - vxDownDistance: + 306 D1:B7AA - - - - tDWP: + 307 D1:B7AA 01 0A 00 00 ld bc, VX_VERTEX_RY + 308 D1:B7AE 09 - - - add hl, bc + 309 D1:B7AF ED 07 - - ld bc, (hl) + 310 D1:B7B1 23 23 23 - inc hl \ inc hl \ inc hl + 311 D1:B7B4 ED 27 - - ld hl, (hl) + 312 D1:B7B6 B7 - - - or a, a + 313 D1:B7B7 ED 42 - - sbc hl, bc + 314 D1:B7B9 C9 - - - ret + 315 D1:B7BA - - - - vxUpDistance: + 316 D1:B7BA - - - - tUPP: + 317 D1:B7BA 01 0A 00 00 ld bc, VX_VERTEX_RY + 318 D1:B7BE 09 - - - add hl, bc + 319 D1:B7BF ED 07 - - ld bc, (hl) + 320 D1:B7C1 23 23 23 - inc hl \ inc hl \ inc hl + 321 D1:B7C4 ED 27 - - ld hl, (hl) + 322 D1:B7C6 09 - - - add hl, bc + 323 D1:B7C7 C9 - - - ret + 324 D1:B7C8 - - - - + 325 D1:B7C8 - - - - vxClipMixByte: + 326 D1:B7C8 - - - - ; a = (d-e)*bc/65536+e + 327 D1:B7C8 7A - - - ld a, d + 328 D1:B7C9 93 - - - sub e + 329 D1:B7CA 6F - - - ld l, a + 330 D1:B7CB 60 - - - ld h, b + 331 D1:B7CC ED 6C - - mlt hl + 332 D1:B7CE 30 03 - - jr nc, $+5 + 333 D1:B7D0 B7 - - - or a, a + 334 D1:B7D1 ED 42 - - sbc hl, bc + 335 D1:B7D3 53 - - - ld d, e + 336 D1:B7D4 1E 00 - - ld e, 0 + 337 D1:B7D6 19 - - - add hl, de + 338 D1:B7D7 C9 - - - ret + 339 D1:B7D8 - - - - + 340 D1:B7D8 - - - - vxClipMixWord: + 341 D1:B7D8 - - - - ; (hl-de)*bc/65536+de + 342 D1:B7D8 D5 - - - push de + 343 D1:B7D9 B7 - - - or a, a + 344 D1:B7DA ED 52 - - sbc hl, de + 345 D1:B7DC 22 78 B5 D1 ld (vxMixWrite), hl + 346 D1:B7E0 DD 21 78 B5 D1 - - - ld ix, vxMixWrite - 347 D1:B852 - - - - - 348 D1:B852 DD 66 02 - ld h, (ix+2) - 349 D1:B855 CB 7C - - bit 7, h - 350 D1:B857 68 - - - ld l, b - 351 D1:B858 ED 6C - - mlt hl - 352 D1:B85A 28 03 - - jr z, $+5 - 353 D1:B85C B7 - - - or a, a - 354 D1:B85D ED 42 - - sbc hl, bc - 355 D1:B85F - - - - - 356 D1:B85F 29 29 29 29 + 347 D1:B7E5 - - - - + 348 D1:B7E5 DD 66 02 - ld h, (ix+2) + 349 D1:B7E8 CB 7C - - bit 7, h + 350 D1:B7EA 68 - - - ld l, b + 351 D1:B7EB ED 6C - - mlt hl + 352 D1:B7ED 28 03 - - jr z, $+5 + 353 D1:B7EF B7 - - - or a, a + 354 D1:B7F0 ED 42 - - sbc hl, bc + 355 D1:B7F2 - - - - + 356 D1:B7F2 29 29 29 29 29 29 29 29 slhl Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxClipping.ez80" - 357 D1:B867 - - - - - 358 D1:B867 DD 56 01 - ld d, (ix+1) - 359 D1:B86A 58 - - - ld e, b - 360 D1:B86B ED 5C - - mlt de - 361 D1:B86D 19 - - - add hl, de - 362 D1:B86E - - - - - 363 D1:B86E DD 56 00 - ld d, (ix+0) - 364 D1:B871 58 - - - ld e, b - 365 D1:B872 ED 5C - - mlt de - 366 D1:B874 5A - - - ld e, d - 367 D1:B875 16 00 - - ld d, 0 - 368 D1:B877 19 - - - add hl, de - 369 D1:B878 - - - - - 370 D1:B878 DD 56 02 - ld d, (ix+2) - 371 D1:B87B 59 - - - ld e, c - 372 D1:B87C ED 5C - - mlt de - 373 D1:B87E 19 - - - add hl, de - 374 D1:B87F - - - - - 375 D1:B87F DD 56 01 - ld d, (ix+1) - 376 D1:B882 59 - - - ld e, c - 377 D1:B883 ED 5C - - mlt de - 378 D1:B885 5A - - - ld e, d - 379 D1:B886 16 00 - - ld d, 0 - 380 D1:B888 19 - - - add hl, de - 381 D1:B889 - - - - - 382 D1:B889 D1 - - - pop de - 383 D1:B88A 19 - - - add hl, de - 384 D1:B88B - - - - - 385 D1:B88B C9 - - - ret - 386 D1:B88C - - - - - 387 D1:B88C - - - - vxClipFactor: - 388 D1:B88C - - - - ; hl*65536/de, nz = do 65536-bc, z = bc - 389 D1:B88C - - - - ; 467 TStates - 390 D1:B88C 52 03 - - inc.s bc - 391 D1:B88E 29 - - - add hl,hl - 392 D1:B88F 30 10 - - jr nc, vxx - 393 D1:B891 D5 - - - push de - 394 D1:B892 EB - - - ex de, hl - 395 D1:B893 B7 - - - or a, a - 396 D1:B894 ED 62 - - sbc hl, hl - 397 D1:B896 ED 52 - - sbc hl, de - 398 D1:B898 D1 - - - pop de - 399 D1:B899 - - - - - 400 D1:B899 E5 - - - push hl - 401 D1:B89A B7 - - - or a, a - 402 D1:B89B ED 62 - - sbc hl, hl - 403 D1:B89D ED 52 - - sbc hl, de - 404 D1:B89F EB - - - ex de, hl - 405 D1:B8A0 E1 - - - pop hl - 406 D1:B8A1 - - - - - 407 D1:B8A1 - - - - vxx: - 408 D1:B8A1 ED 52 30 01 + 357 D1:B7FA - - - - + 358 D1:B7FA DD 56 01 - ld d, (ix+1) + 359 D1:B7FD 58 - - - ld e, b + 360 D1:B7FE ED 5C - - mlt de + 361 D1:B800 19 - - - add hl, de + 362 D1:B801 - - - - + 363 D1:B801 DD 56 00 - ld d, (ix+0) + 364 D1:B804 58 - - - ld e, b + 365 D1:B805 ED 5C - - mlt de + 366 D1:B807 5A - - - ld e, d + 367 D1:B808 16 00 - - ld d, 0 + 368 D1:B80A 19 - - - add hl, de + 369 D1:B80B - - - - + 370 D1:B80B DD 56 02 - ld d, (ix+2) + 371 D1:B80E 59 - - - ld e, c + 372 D1:B80F ED 5C - - mlt de + 373 D1:B811 19 - - - add hl, de + 374 D1:B812 - - - - + 375 D1:B812 DD 56 01 - ld d, (ix+1) + 376 D1:B815 59 - - - ld e, c + 377 D1:B816 ED 5C - - mlt de + 378 D1:B818 5A - - - ld e, d + 379 D1:B819 16 00 - - ld d, 0 + 380 D1:B81B 19 - - - add hl, de + 381 D1:B81C - - - - + 382 D1:B81C D1 - - - pop de + 383 D1:B81D 19 - - - add hl, de + 384 D1:B81E - - - - + 385 D1:B81E C9 - - - ret + 386 D1:B81F - - - - + 387 D1:B81F - - - - vxClipFactor: + 388 D1:B81F - - - - ; hl*65536/de, nz = do 65536-bc, z = bc + 389 D1:B81F - - - - ; 467 TStates + 390 D1:B81F 52 03 - - inc.s bc + 391 D1:B821 29 - - - add hl,hl + 392 D1:B822 30 10 - - jr nc, vxx + 393 D1:B824 D5 - - - push de + 394 D1:B825 EB - - - ex de, hl + 395 D1:B826 B7 - - - or a, a + 396 D1:B827 ED 62 - - sbc hl, hl + 397 D1:B829 ED 52 - - sbc hl, de + 398 D1:B82B D1 - - - pop de + 399 D1:B82C - - - - + 400 D1:B82C E5 - - - push hl + 401 D1:B82D B7 - - - or a, a + 402 D1:B82E ED 62 - - sbc hl, hl + 403 D1:B830 ED 52 - - sbc hl, de + 404 D1:B832 EB - - - ex de, hl + 405 D1:B833 E1 - - - pop hl + 406 D1:B834 - - - - + 407 D1:B834 - - - - vxx: + 408 D1:B834 ED 52 30 01 19 8F - - sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 409 D1:B8A7 29 ED 52 30 + 409 D1:B83A 29 ED 52 30 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 410 D1:B8AE 29 ED 52 30 + 410 D1:B841 29 ED 52 30 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 411 D1:B8B5 29 ED 52 30 + 411 D1:B848 29 ED 52 30 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 412 D1:B8BC 29 ED 52 30 + 412 D1:B84F 29 ED 52 30 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 413 D1:B8C3 29 ED 52 30 + 413 D1:B856 29 ED 52 30 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 414 D1:B8CA 29 ED 52 30 + 414 D1:B85D 29 ED 52 30 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 415 D1:B8D1 29 ED 52 30 + 415 D1:B864 29 ED 52 30 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 416 D1:B8D8 2F - - - cpl - 417 D1:B8D9 47 - - - ld b, a - 418 D1:B8DA 29 ED 52 30 + 416 D1:B86B 2F - - - cpl + 417 D1:B86C 47 - - - ld b, a + 418 D1:B86D 29 ED 52 30 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 419 D1:B8E1 29 ED 52 30 + 419 D1:B874 29 ED 52 30 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 420 D1:B8E8 29 ED 52 30 + 420 D1:B87B 29 ED 52 30 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 421 D1:B8EF 29 ED 52 30 + 421 D1:B882 29 ED 52 30 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 422 D1:B8F6 29 ED 52 30 + 422 D1:B889 29 ED 52 30 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 423 D1:B8FD 29 ED 52 30 + 423 D1:B890 29 ED 52 30 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 424 D1:B904 29 ED 52 30 + 424 D1:B897 29 ED 52 30 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a - 425 D1:B90B 29 ED 52 8F add hl,hl \ sbc hl,de \ adc a,a - 426 D1:B90F 2F - - - cpl - 427 D1:B910 4F - - - ld c, a - 428 D1:B911 C9 - - - ret - 429 D1:B912 - - - - - 430 D1:B912 - - - - vxClipDivide: - 431 D1:B912 FD 07 0D - ld bc, (iy+VX_VERTEX_RZ) - 432 D1:B915 FD CB 0F 7E bit 7, (iy+VX_VERTEX_RZ+2) - 433 D1:B919 28 04 - - jr z, vxClampZ - 434 D1:B91B 01 02 00 00 ld bc, 2 - 435 D1:B91F - - - - vxClampZ: - 436 D1:B91F FD 27 0A - ld hl, (iy+VX_VERTEX_RY) - 437 D1:B922 AF - - - xor a, a - 438 D1:B923 29 - - - add hl, hl - 439 D1:B924 30 06 - - jr nc, $+8 - 440 D1:B926 17 - - - rla - 441 D1:B927 EB - - - ex de, hl - 442 D1:B928 ED 62 - - sbc hl, hl - 443 D1:B92A ED 52 - - sbc hl, de - 444 D1:B92C - - - - - 445 D1:B92C ED 42 FA 43 - B9 D1 - - sbc hl, bc \ jp m, vxClipNextY - 446 D1:B932 B7 - - - or a, a - 447 D1:B933 - - - - ; potential clipping issue - 448 D1:B933 ED 42 - - sbc hl, bc - 449 D1:B935 FA 42 B9 D1 jp m, vxClipNextYCarry - 450 D1:B939 1F - - - rra - 451 D1:B93A 3E 00 - - ld a, VX_SCREEN_HCENTER-(VX_SCREEN_HEIGHT/2) - 452 D1:B93C 30 3B - - jr nc, vxClipWriteY - 453 D1:B93E 3E F0 - - ld a, VX_SCREEN_HCENTER+(VX_SCREEN_HEIGHT/2) - 454 D1:B940 18 37 - - jr vxClipWriteY - 455 D1:B942 - - - - vxClipNextYCarry: - 456 D1:B942 B7 - - - or a, a - 457 D1:B943 - - - - vxClipNextY: - 458 D1:B943 8F 09 - - adc a,a \ add hl,bc - 459 D1:B945 29 ED 42 30 + 425 D1:B89E 29 ED 52 8F add hl,hl \ sbc hl,de \ adc a,a + 426 D1:B8A2 2F - - - cpl + 427 D1:B8A3 4F - - - ld c, a + 428 D1:B8A4 C9 - - - ret + 429 D1:B8A5 - - - - + 430 D1:B8A5 - - - - vxClipDivide: + 431 D1:B8A5 FD 07 0D - ld bc, (iy+VX_VERTEX_RZ) + 432 D1:B8A8 FD CB 0F 7E bit 7, (iy+VX_VERTEX_RZ+2) + 433 D1:B8AC 28 04 - - jr z, vxClampZ + 434 D1:B8AE 01 02 00 00 ld bc, 2 + 435 D1:B8B2 - - - - vxClampZ: + 436 D1:B8B2 FD 27 0A - ld hl, (iy+VX_VERTEX_RY) + 437 D1:B8B5 AF - - - xor a, a + 438 D1:B8B6 29 - - - add hl, hl + 439 D1:B8B7 30 06 - - jr nc, $+8 + 440 D1:B8B9 17 - - - rla + 441 D1:B8BA EB - - - ex de, hl + 442 D1:B8BB ED 62 - - sbc hl, hl + 443 D1:B8BD ED 52 - - sbc hl, de + 444 D1:B8BF - - - - + 445 D1:B8BF ED 42 FA D6 + B8 D1 - - sbc hl, bc \ jp m, vxClipNextY + 446 D1:B8C5 B7 - - - or a, a + 447 D1:B8C6 - - - - ; potential clipping issue + 448 D1:B8C6 ED 42 - - sbc hl, bc + 449 D1:B8C8 FA D5 B8 D1 jp m, vxClipNextYCarry + 450 D1:B8CC 1F - - - rra + 451 D1:B8CD 3E 00 - - ld a, VX_SCREEN_HCENTER-(VX_SCREEN_HEIGHT/2) + 452 D1:B8CF 30 3B - - jr nc, vxClipWriteY + 453 D1:B8D1 3E F0 - - ld a, VX_SCREEN_HCENTER+(VX_SCREEN_HEIGHT/2) + 454 D1:B8D3 18 37 - - jr vxClipWriteY + 455 D1:B8D5 - - - - vxClipNextYCarry: + 456 D1:B8D5 B7 - - - or a, a + 457 D1:B8D6 - - - - vxClipNextY: + 458 D1:B8D6 8F 09 - - adc a,a \ add hl,bc + 459 D1:B8D8 29 ED 42 30 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 460 D1:B94C 29 ED 42 30 + 460 D1:B8DF 29 ED 42 30 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 461 D1:B953 29 ED 42 30 + 461 D1:B8E6 29 ED 42 30 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 462 D1:B95A 29 ED 42 30 + 462 D1:B8ED 29 ED 42 30 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 463 D1:B961 29 ED 42 30 + 463 D1:B8F4 29 ED 42 30 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 464 D1:B968 29 ED 42 8F add hl,hl \ sbc hl,bc \ adc a,a - 465 D1:B96C 2F - - - cpl - 466 D1:B96D - - - - - 467 D1:B96D 87 - - - add a, a - 468 D1:B96E 2E 79 - - ld l, VX_SCREEN_HEIGHT/2+1 ;precision stuffs - 469 D1:B970 67 - - - ld h, a - 470 D1:B971 ED 6C - - mlt hl - 471 D1:B973 7C - - - ld a, h - 472 D1:B974 30 01 - - jr nc, $+3 - 473 D1:B976 2F - - - cpl - 474 D1:B977 CE 78 - - adc a, VX_SCREEN_HCENTER - 475 D1:B979 - - - - vxClipWriteY: - 476 D1:B979 FD 77 01 - ld (iy+VX_VERTEX_SY), a - 477 D1:B97C - - - - - 478 D1:B97C FD 27 07 - ld hl, (iy+VX_VERTEX_RX) - 479 D1:B97F AF - - - xor a, a - 480 D1:B980 29 - - - add hl, hl - 481 D1:B981 30 06 - - jr nc, $+8 - 482 D1:B983 17 - - - rla - 483 D1:B984 EB - - - ex de, hl - 484 D1:B985 ED 62 - - sbc hl, hl - 485 D1:B987 ED 52 - - sbc hl, de - 486 D1:B989 - - - - - 487 D1:B989 ED 42 FA A4 + 464 D1:B8FB 29 ED 42 8F add hl,hl \ sbc hl,bc \ adc a,a + 465 D1:B8FF 2F - - - cpl + 466 D1:B900 - - - - + 467 D1:B900 87 - - - add a, a + 468 D1:B901 2E 79 - - ld l, VX_SCREEN_HEIGHT/2+1 ;precision stuffs + 469 D1:B903 67 - - - ld h, a + 470 D1:B904 ED 6C - - mlt hl + 471 D1:B906 7C - - - ld a, h + 472 D1:B907 30 01 - - jr nc, $+3 + 473 D1:B909 2F - - - cpl + 474 D1:B90A CE 78 - - adc a, VX_SCREEN_HCENTER + 475 D1:B90C - - - - vxClipWriteY: + 476 D1:B90C FD 77 01 - ld (iy+VX_VERTEX_SY), a + 477 D1:B90F - - - - + 478 D1:B90F FD 27 07 - ld hl, (iy+VX_VERTEX_RX) + 479 D1:B912 AF - - - xor a, a + 480 D1:B913 29 - - - add hl, hl + 481 D1:B914 30 06 - - jr nc, $+8 + 482 D1:B916 17 - - - rla + 483 D1:B917 EB - - - ex de, hl + 484 D1:B918 ED 62 - - sbc hl, hl + 485 D1:B91A ED 52 - - sbc hl, de + 486 D1:B91C - - - - + 487 D1:B91C ED 42 FA 37 B9 D1 - - sbc hl, bc \ jp m, vxClipNextX - 488 D1:B98F B7 - - - or a, a - 489 D1:B990 - - - - ; potential clipping issue - 490 D1:B990 ED 42 - - sbc hl, bc - 491 D1:B992 FA A3 B9 D1 jp m, vxClipNextXCarry - 492 D1:B996 1F - - - rra - 493 D1:B997 21 00 00 00 ld hl, VX_SCREEN_WCENTER-(VX_SCREEN_WIDTH/2) - 494 D1:B99B 38 4A - - jr c, vxClipWriteX - 495 D1:B99D 21 40 01 00 ld hl, VX_SCREEN_WCENTER+(VX_SCREEN_WIDTH/2) - 496 D1:B9A1 18 44 - - jr vxClipWriteX - 497 D1:B9A3 - - - - vxClipNextXCarry: - 498 D1:B9A3 B7 - - - or a, a - 499 D1:B9A4 - - - - vxClipNextX: - 500 D1:B9A4 8F 09 - - adc a,a \ add hl,bc - 501 D1:B9A6 29 ED 42 30 + 488 D1:B922 B7 - - - or a, a + 489 D1:B923 - - - - ; potential clipping issue + 490 D1:B923 ED 42 - - sbc hl, bc + 491 D1:B925 FA 36 B9 D1 jp m, vxClipNextXCarry + 492 D1:B929 1F - - - rra + 493 D1:B92A 21 00 00 00 ld hl, VX_SCREEN_WCENTER-(VX_SCREEN_WIDTH/2) + 494 D1:B92E 38 4A - - jr c, vxClipWriteX + 495 D1:B930 21 40 01 00 ld hl, VX_SCREEN_WCENTER+(VX_SCREEN_WIDTH/2) + 496 D1:B934 18 44 - - jr vxClipWriteX + 497 D1:B936 - - - - vxClipNextXCarry: + 498 D1:B936 B7 - - - or a, a + 499 D1:B937 - - - - vxClipNextX: + 500 D1:B937 8F 09 - - adc a,a \ add hl,bc + 501 D1:B939 29 ED 42 30 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 502 D1:B9AD 29 ED 42 30 + 502 D1:B940 29 ED 42 30 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 503 D1:B9B4 29 ED 42 30 + 503 D1:B947 29 ED 42 30 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 504 D1:B9BB 29 ED 42 30 + 504 D1:B94E 29 ED 42 30 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 505 D1:B9C2 29 ED 42 30 + 505 D1:B955 29 ED 42 30 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 506 D1:B9C9 29 ED 42 30 + 506 D1:B95C 29 ED 42 30 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 507 D1:B9D0 29 ED 42 8F add hl,hl \ sbc hl,bc \ adc a,a - 508 D1:B9D4 2F - - - cpl - 509 D1:B9D5 5F - - - ld e, a - 510 D1:B9D6 16 A1 - - ld d, VX_SCREEN_WIDTH/2+1 - 511 D1:B9D8 ED 5C - - mlt de - 512 D1:B9DA 7A - - - ld a, d - 513 D1:B9DB ED 62 - - sbc hl, hl - 514 D1:B9DD 30 01 - - jr nc, $+3 - 515 D1:B9DF 2F - - - cpl - 516 D1:B9E0 6F - - - ld l, a - 517 D1:B9E1 11 A0 00 00 ld de, VX_SCREEN_WCENTER - 518 D1:B9E5 ED 5A - - adc hl, de - 519 D1:B9E7 - - - - vxClipWriteX: - 520 D1:B9E7 FD 75 02 - ld (iy+VX_VERTEX_SX), l - 521 D1:B9EA FD 74 03 - ld (iy+VX_VERTEX_SX+1), h - 522 D1:B9ED AF - - - xor a, a - 523 D1:B9EE FD 77 00 - ld (iy+VX_VERTEX_CODE), a - 524 D1:B9F1 C9 - - - ret - 525 D1:B9F2 - - - - - 526 D1:B9F2 - - - - vxClipFrustrumCode: - 527 D1:B9F2 DD 27 0A - ld hl, (ix+VX_VERTEX_RY) - 528 D1:B9F5 DD 17 07 - ld de, (ix+VX_VERTEX_RX) - 529 D1:B9F8 DD 07 0D - ld bc, (ix+VX_VERTEX_RZ) - 530 D1:B9FB AF - - - xor a, a - 531 D1:B9FC ED 42 - - sbc hl, bc - 532 D1:B9FE FA 04 BA D1 jp m, vxClipError0 - 533 D1:BA02 F6 20 - - or %00100000 - 534 D1:BA04 - - - - vxClipError0: - 535 D1:BA04 09 - - - add hl, bc - 536 D1:BA05 B7 - - - or a, a - 537 D1:BA06 ED 4A - - adc hl, bc - 538 D1:BA08 F2 0E BA D1 jp p, vxClipError1 - 539 D1:BA0C F6 10 - - or %00010000 - 540 D1:BA0E - - - - vxClipError1: - 541 D1:BA0E - - - - ; y cliping was handled - 542 D1:BA0E EB - - - ex de, hl - 543 D1:BA0F ED 42 - - sbc hl, bc - 544 D1:BA11 FA 17 BA D1 jp m, vxClipError2 - 545 D1:BA15 F6 80 - - or a, %10000000 - 546 D1:BA17 - - - - vxClipError2: - 547 D1:BA17 09 - - - add hl, bc - 548 D1:BA18 B7 - - - or a, a - 549 D1:BA19 ED 4A - - adc hl, bc - 550 D1:BA1B F2 21 BA D1 jp p, vxClipError3 - 551 D1:BA1F F6 40 - - or a, %01000000 - 552 D1:BA21 - - - - vxClipError3: - 553 D1:BA21 - - - - ; x clipping handled - 554 D1:BA21 DD CB 0F 7E bit 7, (ix+VX_VERTEX_RZ+2) - 555 D1:BA25 C8 - - - ret z - 556 D1:BA26 F6 08 - - or %00001000 - 557 D1:BA28 C9 - - - ret + 507 D1:B963 29 ED 42 8F add hl,hl \ sbc hl,bc \ adc a,a + 508 D1:B967 2F - - - cpl + 509 D1:B968 5F - - - ld e, a + 510 D1:B969 16 A1 - - ld d, VX_SCREEN_WIDTH/2+1 + 511 D1:B96B ED 5C - - mlt de + 512 D1:B96D 7A - - - ld a, d + 513 D1:B96E ED 62 - - sbc hl, hl + 514 D1:B970 30 01 - - jr nc, $+3 + 515 D1:B972 2F - - - cpl + 516 D1:B973 6F - - - ld l, a + 517 D1:B974 11 A0 00 00 ld de, VX_SCREEN_WCENTER + 518 D1:B978 ED 5A - - adc hl, de + 519 D1:B97A - - - - vxClipWriteX: + 520 D1:B97A FD 75 02 - ld (iy+VX_VERTEX_SX), l + 521 D1:B97D FD 74 03 - ld (iy+VX_VERTEX_SX+1), h + 522 D1:B980 AF - - - xor a, a + 523 D1:B981 FD 77 00 - ld (iy+VX_VERTEX_CODE), a + 524 D1:B984 C9 - - - ret + 525 D1:B985 - - - - + 526 D1:B985 - - - - vxClipFrustrumCode: + 527 D1:B985 DD 27 0A - ld hl, (ix+VX_VERTEX_RY) + 528 D1:B988 DD 17 07 - ld de, (ix+VX_VERTEX_RX) + 529 D1:B98B DD 07 0D - ld bc, (ix+VX_VERTEX_RZ) + 530 D1:B98E AF - - - xor a, a + 531 D1:B98F ED 42 - - sbc hl, bc + 532 D1:B991 FA 97 B9 D1 jp m, vxClipError0 + 533 D1:B995 F6 20 - - or %00100000 + 534 D1:B997 - - - - vxClipError0: + 535 D1:B997 09 - - - add hl, bc + 536 D1:B998 B7 - - - or a, a + 537 D1:B999 ED 4A - - adc hl, bc + 538 D1:B99B F2 A1 B9 D1 jp p, vxClipError1 + 539 D1:B99F F6 10 - - or %00010000 + 540 D1:B9A1 - - - - vxClipError1: + 541 D1:B9A1 - - - - ; y cliping was handled + 542 D1:B9A1 EB - - - ex de, hl + 543 D1:B9A2 ED 42 - - sbc hl, bc + 544 D1:B9A4 FA AA B9 D1 jp m, vxClipError2 + 545 D1:B9A8 F6 80 - - or a, %10000000 + 546 D1:B9AA - - - - vxClipError2: + 547 D1:B9AA 09 - - - add hl, bc + 548 D1:B9AB B7 - - - or a, a + 549 D1:B9AC ED 4A - - adc hl, bc + 550 D1:B9AE F2 B4 B9 D1 jp p, vxClipError3 + 551 D1:B9B2 F6 40 - - or a, %01000000 + 552 D1:B9B4 - - - - vxClipError3: + 553 D1:B9B4 - - - - ; x clipping handled + 554 D1:B9B4 DD CB 0F 7E bit 7, (ix+VX_VERTEX_RZ+2) + 555 D1:B9B8 C8 - - - ret z + 556 D1:B9B9 F6 08 - - or %00001000 + 557 D1:B9BB C9 - - - ret Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" - 8 D1:BA29 - - - - #include "vxPipeline.ez80" + 8 D1:B9BC - - - - #include "vxPipeline.ez80" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" - 1 D1:BA29 - - - - - 2 D1:BA29 - - - - #include "vxVertexShader.inc" + 1 D1:B9BC - - - - + 2 D1:B9BC - - - - #include "vxVertexShader.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxVertexShader.inc" - 1 D1:BA29 - - - - ; cache data register (de) ; - 2 D1:BA29 - - - - - 3 D1:BA29 - - - - #define VX_VERTEX_CODE 0 - 4 D1:BA29 - - - - #define VX_VERTEX_SY 1 - 5 D1:BA29 - - - - #define VX_VERTEX_SX 2 - 6 D1:BA29 - - - - #define VX_VERTEX_GPR0 4 - 7 D1:BA29 - - - - #define VX_VERTEX_GPR1 5 - 8 D1:BA29 - - - - #define VX_VERTEX_UNIFORM 6 - 9 D1:BA29 - - - - #define VX_VERTEX_RX 7 - 10 D1:BA29 - - - - #define VX_VERTEX_RY 10 - 11 D1:BA29 - - - - #define VX_VERTEX_RZ 13 - 12 D1:BA29 - - - - - 13 D1:BA29 - - - - ; vertex input register (iy) ; - 14 D1:BA29 - - - - - 15 D1:BA29 - - - - #define VX_VERTEX_POSITION 0 - 16 D1:BA29 - - - - #define VX_VERTEX_VX 0 - 17 D1:BA29 - - - - #define VX_VERTEX_VY 2 - 18 D1:BA29 - - - - #define VX_VERTEX_VZ 4 - 19 D1:BA29 - - - - #define VX_VERTEX_NORMAL 6 - 20 D1:BA29 - - - - #define VX_VERTEX_NX 6 - 21 D1:BA29 - - - - #define VX_VERTEX_NY 7 - 22 D1:BA29 - - - - #define VX_VERTEX_NZ 8 - 23 D1:BA29 - - - - - 24 D1:BA29 - - - - ; global data input register (ix) ; - 25 D1:BA29 - - - - - 26 D1:BA29 - - - - #define VX_MATRIX0 0 - 27 D1:BA29 - - - - #define VX_MATRIX0_C0 0 - 28 D1:BA29 - - - - #define VX_MATRIX0_C1 1 - 29 D1:BA29 - - - - #define VX_MATRIX0_C2 2 - 30 D1:BA29 - - - - #define VX_MATRIX0_C3 3 - 31 D1:BA29 - - - - #define VX_MATRIX0_C4 4 - 32 D1:BA29 - - - - #define VX_MATRIX0_C5 5 - 33 D1:BA29 - - - - #define VX_MATRIX0_C6 6 - 34 D1:BA29 - - - - #define VX_MATRIX0_C7 7 - 35 D1:BA29 - - - - #define VX_MATRIX0_C8 8 - 36 D1:BA29 - - - - #define VX_MATRIX0_TX 9 - 37 D1:BA29 - - - - #define VX_MATRIX0_TY 12 - 38 D1:BA29 - - - - #define VX_MATRIX0_TZ 15 - 39 D1:BA29 - - - - - 40 D1:BA29 - - - - #define VX_LIGHT0_VECTOR 18 - 41 D1:BA29 - - - - #define VX_LIGHT0_AMBIANT 21 - 42 D1:BA29 - - - - #define VX_LIGHT0_POSITION 22 - 43 D1:BA29 - - - - - 44 D1:BA29 - - - - ; constant ; - 45 D1:BA29 - - - - - 46 D1:BA29 - - - - #define VX_MATRIX_SIZE 18 - 47 D1:BA29 - - - - #define VX_MATRIX_C0 0 - 48 D1:BA29 - - - - #define VX_MATRIX_C1 1 - 49 D1:BA29 - - - - #define VX_MATRIX_C2 2 - 50 D1:BA29 - - - - #define VX_MATRIX_C3 3 - 51 D1:BA29 - - - - #define VX_MATRIX_C4 4 - 52 D1:BA29 - - - - #define VX_MATRIX_C5 5 - 53 D1:BA29 - - - - #define VX_MATRIX_C6 6 - 54 D1:BA29 - - - - #define VX_MATRIX_C7 7 - 55 D1:BA29 - - - - #define VX_MATRIX_C8 8 - 56 D1:BA29 - - - - #define VX_MATRIX_TX 9 - 57 D1:BA29 - - - - #define VX_MATRIX_TY 12 - 58 D1:BA29 - - - - #define VX_MATRIX_TZ 15 - 59 D1:BA29 - - - - - 60 D1:BA29 - - - - #define VX_LIGHT_SIZE 10 - 61 D1:BA29 - - - - #define VX_LIGHT_VECTOR 0 - 62 D1:BA29 - - - - #define VX_LIGHT_AMBIANT 3 - 63 D1:BA29 - - - - #define VX_LIGHT_POSITION 4 - 64 D1:BA29 - - - - - 65 D1:BA29 - - - - #define VX_SHADER_VERTEX_SIZE 16 ; per vertex data in pipeline - 66 D1:BA29 - - - - #define VX_DATA_VERTEX_SIZE 9 ; this should be changed if you suppress vertex normal data - 67 D1:BA29 - - - - - 68 D1:BA29 - - - - #define VX_VERTEX_SHADER_SIZE 1024 ; allowed shader size - 69 D1:BA29 - - - - #define VX_VERTEX_SHADER_DATA $E30800 - 70 D1:BA29 - - - - #define VX_VERTEX_SHADER_CODE $E30800 - 71 D1:BA29 - - - - - 72 D1:BA29 - - - - ; return shader ; - 73 D1:BA29 - - - - - 74 D1:BA29 - - - - ; shader will copy 1024 bytes from global_data to VX_VRAM. This load occurs at begin of stream instruction, to ensure maximum vertex throughput. About 2200 cycles per vertex are needed. - 75 D1:BA29 - - - - - 76 D1:BA29 - - - - VX_VERTEX_SHADER_COPY: - 77 D1:BA29 - - - - - 78 D1:BA29 - - - - ; relocate the shader to fast VRAM ($E30800) - 79 D1:BA29 - - - - - 80 D1:BA29 - - - - .relocate VX_VERTEX_SHADER_CODE + 1 D1:B9BC - - - - ; cache data register (de) ; + 2 D1:B9BC - - - - + 3 D1:B9BC - - - - #define VX_VERTEX_CODE 0 + 4 D1:B9BC - - - - #define VX_VERTEX_SY 1 + 5 D1:B9BC - - - - #define VX_VERTEX_SX 2 + 6 D1:B9BC - - - - #define VX_VERTEX_GPR0 4 + 7 D1:B9BC - - - - #define VX_VERTEX_GPR1 5 + 8 D1:B9BC - - - - #define VX_VERTEX_UNIFORM 6 + 9 D1:B9BC - - - - #define VX_VERTEX_RX 7 + 10 D1:B9BC - - - - #define VX_VERTEX_RY 10 + 11 D1:B9BC - - - - #define VX_VERTEX_RZ 13 + 12 D1:B9BC - - - - + 13 D1:B9BC - - - - ; vertex input register (iy) ; + 14 D1:B9BC - - - - + 15 D1:B9BC - - - - #define VX_VERTEX_POSITION 0 + 16 D1:B9BC - - - - #define VX_VERTEX_VX 0 + 17 D1:B9BC - - - - #define VX_VERTEX_VY 2 + 18 D1:B9BC - - - - #define VX_VERTEX_VZ 4 + 19 D1:B9BC - - - - #define VX_VERTEX_NORMAL 6 + 20 D1:B9BC - - - - #define VX_VERTEX_NX 6 + 21 D1:B9BC - - - - #define VX_VERTEX_NY 7 + 22 D1:B9BC - - - - #define VX_VERTEX_NZ 8 + 23 D1:B9BC - - - - + 24 D1:B9BC - - - - ; global data input register (ix) ; + 25 D1:B9BC - - - - + 26 D1:B9BC - - - - #define VX_MATRIX0 0 + 27 D1:B9BC - - - - #define VX_MATRIX0_C0 0 + 28 D1:B9BC - - - - #define VX_MATRIX0_C1 1 + 29 D1:B9BC - - - - #define VX_MATRIX0_C2 2 + 30 D1:B9BC - - - - #define VX_MATRIX0_C3 3 + 31 D1:B9BC - - - - #define VX_MATRIX0_C4 4 + 32 D1:B9BC - - - - #define VX_MATRIX0_C5 5 + 33 D1:B9BC - - - - #define VX_MATRIX0_C6 6 + 34 D1:B9BC - - - - #define VX_MATRIX0_C7 7 + 35 D1:B9BC - - - - #define VX_MATRIX0_C8 8 + 36 D1:B9BC - - - - #define VX_MATRIX0_TX 9 + 37 D1:B9BC - - - - #define VX_MATRIX0_TY 12 + 38 D1:B9BC - - - - #define VX_MATRIX0_TZ 15 + 39 D1:B9BC - - - - + 40 D1:B9BC - - - - #define VX_LIGHT0_VECTOR 18 + 41 D1:B9BC - - - - #define VX_LIGHT0_AMBIANT 21 + 42 D1:B9BC - - - - #define VX_LIGHT0_POSITION 22 + 43 D1:B9BC - - - - + 44 D1:B9BC - - - - ; constant ; + 45 D1:B9BC - - - - + 46 D1:B9BC - - - - #define VX_MATRIX_SIZE 18 + 47 D1:B9BC - - - - #define VX_MATRIX_C0 0 + 48 D1:B9BC - - - - #define VX_MATRIX_C1 1 + 49 D1:B9BC - - - - #define VX_MATRIX_C2 2 + 50 D1:B9BC - - - - #define VX_MATRIX_C3 3 + 51 D1:B9BC - - - - #define VX_MATRIX_C4 4 + 52 D1:B9BC - - - - #define VX_MATRIX_C5 5 + 53 D1:B9BC - - - - #define VX_MATRIX_C6 6 + 54 D1:B9BC - - - - #define VX_MATRIX_C7 7 + 55 D1:B9BC - - - - #define VX_MATRIX_C8 8 + 56 D1:B9BC - - - - #define VX_MATRIX_TX 9 + 57 D1:B9BC - - - - #define VX_MATRIX_TY 12 + 58 D1:B9BC - - - - #define VX_MATRIX_TZ 15 + 59 D1:B9BC - - - - + 60 D1:B9BC - - - - #define VX_LIGHT_SIZE 10 + 61 D1:B9BC - - - - #define VX_LIGHT_VECTOR 0 + 62 D1:B9BC - - - - #define VX_LIGHT_AMBIANT 3 + 63 D1:B9BC - - - - #define VX_LIGHT_POSITION 4 + 64 D1:B9BC - - - - + 65 D1:B9BC - - - - #define VX_SHADER_VERTEX_SIZE 16 ; per vertex data in pipeline + 66 D1:B9BC - - - - #define VX_DATA_VERTEX_SIZE 9 ; this should be changed if you suppress vertex normal data + 67 D1:B9BC - - - - + 68 D1:B9BC - - - - #define VX_VERTEX_SHADER_SIZE 1024 ; allowed shader size + 69 D1:B9BC - - - - #define VX_VERTEX_SHADER_DATA $E30800 + 70 D1:B9BC - - - - #define VX_VERTEX_SHADER_CODE $E30800 + 71 D1:B9BC - - - - + 72 D1:B9BC - - - - ; return shader ; + 73 D1:B9BC - - - - + 74 D1:B9BC - - - - ; shader will copy 1024 bytes from global_data to VX_VRAM. This load occurs at begin of stream instruction, to ensure maximum vertex throughput. About 2200 cycles per vertex are needed. + 75 D1:B9BC - - - - + 76 D1:B9BC - - - - VX_VERTEX_SHADER_COPY: + 77 D1:B9BC - - - - + 78 D1:B9BC - - - - ; relocate the shader to fast VRAM ($E30800) + 79 D1:B9BC - - - - + 80 D1:B9BC - - - - .relocate VX_VERTEX_SHADER_CODE Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxVertexShader.inc" 81 E3:0800 - - - - 82 E3:0800 - - - - vxModelView: @@ -2861,7 +2781,7 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxVertexShader.inc 00 00 00 00 00 - - - .dl 0,0,0 87 E3:0812 - - - - vxLight0: - 88 E3:0812 00 00 40 - .db 0,0,64 + 88 E3:0812 00 00 C0 - .db 0,0,-64 89 E3:0815 00 - - - .db 0 90 E3:0816 00 00 00 00 00 00 - - .dw 0,0,0 @@ -3291,256 +3211,283 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxVertexShader.inc Listing for file "include\\relocate.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxVertexShader.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" - 3 D1:BCEC - - - - #include "vxGeometryShader.inc" + 3 D1:BC7F - - - - #include "vxGeometryShader.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxGeometryShader.inc" - 1 D1:BCEC - - - - #define VX_INDEX0 0 - 2 D1:BCEC - - - - #define VX_INDEX1 3 - 3 D1:BCEC - - - - #define VX_INDEX2 6 - 4 D1:BCEC - - - - - 5 D1:BCEC - - - - #define VX_GEOMETRY_DEPTH 0 - 6 D1:BCEC - - - - #define VX_GEOMETRY_INDEX 3 - 7 D1:BCEC - - - - #define VX_GEOMETRY_ID 6 - 8 D1:BCEC - - - - - 9 D1:BCEC - - - - #define VX_GEOMETRY_SHADER_DATA $E30800 - 10 D1:BCEC - - - - #define VX_GEOMETRY_SHADER_CODE $E30800 - 11 D1:BCEC - - - - - 12 D1:BCEC - - - - vxGeometryShader: - 13 D1:BCEC C5 - - - push bc - 14 D1:BCED - - - - vxBufferOffset=$+1 - 15 D1:BCED 11 00 00 00 ld de, $000000 - 16 D1:BCF1 - - - - - 17 D1:BCF1 FD 27 06 - ld hl, (iy+VX_INDEX2) - 18 D1:BCF4 19 - - - add hl, de - 19 D1:BCF5 E5 - - - push hl - 20 D1:BCF6 FD 27 03 - ld hl, (iy+VX_INDEX1) - 21 D1:BCF9 19 - - - add hl, de - 22 D1:BCFA EB - - - ex de, hl - 23 D1:BCFB FD 07 00 - ld bc, (iy+VX_INDEX0) - 24 D1:BCFE 09 - - - add hl, bc - 25 D1:BCFF C1 - - - pop bc - 26 D1:BD00 - - - - - 27 D1:BD00 0A - - - ld a, (bc) - 28 D1:BD01 A6 - - - and (hl) - 29 D1:BD02 EB - - - ex de, hl - 30 D1:BD03 A6 - - - and (hl) - 31 D1:BD04 20 45 - - jr nz, vxGeometryDiscard - 32 D1:BD06 0A - - - ld a, (bc) - 33 D1:BD07 B6 - - - or (hl) - 34 D1:BD08 EB - - - ex de, hl - 35 D1:BD09 B6 - - - or (hl) - 36 D1:BD0A 20 06 - - jr nz, vxGeometryPass - 37 D1:BD0C CD 55 BD D1 call vxNClip - 38 D1:BD10 38 39 - - jr c, vxGeometryDiscard - 39 D1:BD12 - - - - vxGeometryPass: - 40 D1:BD12 - - - - ; compute depth and submit polygon to list (ix) - 41 D1:BD12 - - - - vxBufferOffsetAddRZ: - 42 D1:BD12 01 00 00 00 ld bc, $000000 - 43 D1:BD16 - - - - ; index 0 - rz - 44 D1:BD16 FD 27 00 - ld hl, (iy+VX_INDEX0) - 45 D1:BD19 09 - - - add hl, bc - 46 D1:BD1A ED 17 - - ld de, (hl) - 47 D1:BD1C - - - - ; index 1 - rz - 48 D1:BD1C FD 27 03 - ld hl, (iy+VX_INDEX1) - 49 D1:BD1F 09 - - - add hl, bc - 50 D1:BD20 ED 27 - - ld hl, (hl) - 51 D1:BD22 19 - - - add hl, de - 52 D1:BD23 EB - - - ex de, hl - 53 D1:BD24 - - - - ; index 2 - re - 54 D1:BD24 FD 27 06 - ld hl, (iy+VX_INDEX2) - 55 D1:BD27 09 - - - add hl, bc - 56 D1:BD28 ED 27 - - ld hl, (hl) - 57 D1:BD2A ED 5A - - adc hl, de - 58 D1:BD2C - - - - ; no div - way too slow ! - 59 D1:BD2C F2 33 BD D1 jp p, vxGeometryDepthClamp - 60 D1:BD30 B7 - - - or a, a - 61 D1:BD31 ED 62 - - sbc hl, hl - 62 D1:BD33 - - - - vxGeometryDepthClamp: - 63 D1:BD33 - - - - ; write everything to tmp buffer - 64 D1:BD33 DD 2F 00 - ld (ix+VX_GEOMETRY_DEPTH), hl - 65 D1:BD36 - - - - ; fill depth bucket - 66 D1:BD36 EB - - - ex de, hl - 67 D1:BD37 21 07 32 D0 ld hl, VX_DEPTH_BUCKET+7 - 68 D1:BD3B 7D - - - ld a, l - 69 D1:BD3C 6B - - - ld l, e - 70 D1:BD3D 86 - - - add a, (hl) - 71 D1:BD3E 77 - - - ld (hl), a - 72 D1:BD3F 30 02 - - jr nc, vxGeometryBucket - 73 D1:BD41 24 - - - inc h - 74 D1:BD42 34 - - - inc (hl) - 75 D1:BD43 - - - - vxGeometryBucket: - 76 D1:BD43 DD 3E 03 - ld (ix+VX_GEOMETRY_INDEX), iy - 77 D1:BD46 - - - - vxBatchOffset=$+1 - 78 D1:BD46 3E 00 - - ld a, $00 - 79 D1:BD48 DD 77 06 - ld (ix+VX_GEOMETRY_ID), a - 80 D1:BD4B - - - - vxGeometryDiscard: - 81 D1:BD4B - - - - vxFormatOffset=$+2 - 82 D1:BD4B ED 33 10 - lea iy, iy+16 - 83 D1:BD4E C1 - - - pop bc - 84 D1:BD4F 10 9B - - djnz vxGeometryShader - 85 D1:BD51 0D - - - dec c - 86 D1:BD52 20 98 - - jr nz, vxGeometryShader - 87 D1:BD54 C9 - - - ret - 88 D1:BD55 - - - - - 89 D1:BD55 - - - - - 90 D1:BD55 - - - - vxNClip: - 91 D1:BD55 - - - - ; vec e0 = v1 - v0; - 92 D1:BD55 - - - - ; vec e1 = v2 - v0; - 93 D1:BD55 - - - - ; return e0.x * e1.y - e0.y * e1.x > 0 ? 1 : 0; - 94 D1:BD55 - - - - ; - 95 D1:BD55 - - - - ; (x1-x0)*(y2-y1) - (y1-y0)*(x2-x1) - 96 D1:BD55 - - - - ; - 97 D1:BD55 - - - - ; we'll compute (y1-y0)*(x2-x1)+(y2-y1)*(x0-x1) - 98 D1:BD55 23 03 13 - inc hl \ inc bc \ inc de - 99 D1:BD58 - - - - - 100 D1:BD58 E5 - - - push hl - 101 D1:BD59 C5 - - - push bc - 102 D1:BD5A - - - - - 103 D1:BD5A 0A - - - ld a, (bc) - 104 D1:BD5B 23 - - - inc hl - 105 D1:BD5C ED 27 - - ld hl, (hl) - 106 D1:BD5E EB - - - ex de, hl - 107 D1:BD5F 23 - - - inc hl - 108 D1:BD60 ED 07 - - ld bc, (hl) - 109 D1:BD62 EB - - - ex de, hl - 110 D1:BD63 - - - - ; hl-bc is x0-x1 - 111 D1:BD63 B7 - - - or a, a - 112 D1:BD64 ED 42 - - sbc hl, bc - 113 D1:BD66 CB 2C CB 1D sra h \ rr l - 114 D1:BD6A 4C - - - ld c, h - 115 D1:BD6B EB - - - ex de, hl - 116 D1:BD6C 2B - - - dec hl - 117 D1:BD6D 96 - - - sub a, (hl) - 118 D1:BD6E 57 - - - ld d, a - 119 D1:BD6F 3E 00 - - ld a, 0 - 120 D1:BD71 30 01 93 - jr nc, $+3 \ sub a, e - 121 D1:BD74 CB 79 28 01 + 1 D1:BC7F - - - - #define VX_INDEX0 0 + 2 D1:BC7F - - - - #define VX_INDEX1 3 + 3 D1:BC7F - - - - #define VX_INDEX2 6 + 4 D1:BC7F - - - - + 5 D1:BC7F - - - - #define VX_GEOMETRY_DEPTH 0 + 6 D1:BC7F - - - - #define VX_GEOMETRY_INDEX 3 + 7 D1:BC7F - - - - #define VX_GEOMETRY_ID 6 + 8 D1:BC7F - - - - + 9 D1:BC7F - - - - #define VX_GEOMETRY_SHADER_DATA $E30800 + 10 D1:BC7F - - - - #define VX_GEOMETRY_SHADER_CODE $E30800 + 11 D1:BC7F - - - - + 12 D1:BC7F - - - - vxGeometryShader: + 13 D1:BC7F C5 - - - push bc + 14 D1:BC80 - - - - vxBufferOffset=$+1 + 15 D1:BC80 11 00 00 00 ld de, $000000 + 16 D1:BC84 - - - - + 17 D1:BC84 FD 27 06 - ld hl, (iy+VX_INDEX2) + 18 D1:BC87 19 - - - add hl, de + 19 D1:BC88 E5 - - - push hl + 20 D1:BC89 FD 27 03 - ld hl, (iy+VX_INDEX1) + 21 D1:BC8C 19 - - - add hl, de + 22 D1:BC8D EB - - - ex de, hl + 23 D1:BC8E FD 07 00 - ld bc, (iy+VX_INDEX0) + 24 D1:BC91 09 - - - add hl, bc + 25 D1:BC92 C1 - - - pop bc + 26 D1:BC93 - - - - + 27 D1:BC93 0A - - - ld a, (bc) + 28 D1:BC94 A6 - - - and (hl) + 29 D1:BC95 EB - - - ex de, hl + 30 D1:BC96 A6 - - - and (hl) + 31 D1:BC97 20 45 - - jr nz, vxGeometryDiscard + 32 D1:BC99 0A - - - ld a, (bc) + 33 D1:BC9A B6 - - - or (hl) + 34 D1:BC9B EB - - - ex de, hl + 35 D1:BC9C B6 - - - or (hl) + 36 D1:BC9D 20 06 - - jr nz, vxGeometryPass + 37 D1:BC9F CD E8 BC D1 call vxNClip + 38 D1:BCA3 38 39 - - jr c, vxGeometryDiscard + 39 D1:BCA5 - - - - vxGeometryPass: + 40 D1:BCA5 - - - - ; compute depth and submit polygon to list (ix) + 41 D1:BCA5 - - - - vxBufferOffsetAddRZ: + 42 D1:BCA5 01 00 00 00 ld bc, $000000 + 43 D1:BCA9 - - - - ; index 0 - rz + 44 D1:BCA9 FD 27 00 - ld hl, (iy+VX_INDEX0) + 45 D1:BCAC 09 - - - add hl, bc + 46 D1:BCAD ED 17 - - ld de, (hl) + 47 D1:BCAF - - - - ; index 1 - rz + 48 D1:BCAF FD 27 03 - ld hl, (iy+VX_INDEX1) + 49 D1:BCB2 09 - - - add hl, bc + 50 D1:BCB3 ED 27 - - ld hl, (hl) + 51 D1:BCB5 19 - - - add hl, de + 52 D1:BCB6 EB - - - ex de, hl + 53 D1:BCB7 - - - - ; index 2 - re + 54 D1:BCB7 FD 27 06 - ld hl, (iy+VX_INDEX2) + 55 D1:BCBA 09 - - - add hl, bc + 56 D1:BCBB ED 27 - - ld hl, (hl) + 57 D1:BCBD ED 5A - - adc hl, de + 58 D1:BCBF - - - - ; no div - way too slow ! + 59 D1:BCBF F2 C6 BC D1 jp p, vxGeometryDepthClamp + 60 D1:BCC3 B7 - - - or a, a + 61 D1:BCC4 ED 62 - - sbc hl, hl + 62 D1:BCC6 - - - - vxGeometryDepthClamp: + 63 D1:BCC6 - - - - ; write everything to tmp buffer + 64 D1:BCC6 DD 2F 00 - ld (ix+VX_GEOMETRY_DEPTH), hl + 65 D1:BCC9 - - - - ; fill depth bucket + 66 D1:BCC9 EB - - - ex de, hl + 67 D1:BCCA 21 07 32 D0 ld hl, VX_DEPTH_BUCKET+7 + 68 D1:BCCE 7D - - - ld a, l + 69 D1:BCCF 6B - - - ld l, e + 70 D1:BCD0 86 - - - add a, (hl) + 71 D1:BCD1 77 - - - ld (hl), a + 72 D1:BCD2 30 02 - - jr nc, vxGeometryBucket + 73 D1:BCD4 24 - - - inc h + 74 D1:BCD5 34 - - - inc (hl) + 75 D1:BCD6 - - - - vxGeometryBucket: + 76 D1:BCD6 DD 3E 03 - ld (ix+VX_GEOMETRY_INDEX), iy + 77 D1:BCD9 - - - - vxBatchOffset=$+1 + 78 D1:BCD9 3E 00 - - ld a, $00 + 79 D1:BCDB DD 77 06 - ld (ix+VX_GEOMETRY_ID), a + 80 D1:BCDE - - - - vxGeometryDiscard: + 81 D1:BCDE - - - - vxFormatOffset=$+2 + 82 D1:BCDE ED 33 10 - lea iy, iy+16 + 83 D1:BCE1 C1 - - - pop bc + 84 D1:BCE2 10 9B - - djnz vxGeometryShader + 85 D1:BCE4 0D - - - dec c + 86 D1:BCE5 20 98 - - jr nz, vxGeometryShader + 87 D1:BCE7 C9 - - - ret + 88 D1:BCE8 - - - - + 89 D1:BCE8 - - - - + 90 D1:BCE8 - - - - vxNClip: + 91 D1:BCE8 - - - - ; vec e0 = v1 - v0; + 92 D1:BCE8 - - - - ; vec e1 = v2 - v0; + 93 D1:BCE8 - - - - ; return e0.x * e1.y - e0.y * e1.x > 0 ? 1 : 0; + 94 D1:BCE8 - - - - ; + 95 D1:BCE8 - - - - ; (x1-x0)*(y2-y1) - (y1-y0)*(x2-x1) + 96 D1:BCE8 - - - - ; + 97 D1:BCE8 - - - - ; we'll compute (y1-y0)*(x2-x1)+(y2-y1)*(x0-x1) + 98 D1:BCE8 23 03 13 - inc hl \ inc bc \ inc de + 99 D1:BCEB - - - - + 100 D1:BCEB E5 - - - push hl + 101 D1:BCEC C5 - - - push bc + 102 D1:BCED - - - - + 103 D1:BCED 0A - - - ld a, (bc) + 104 D1:BCEE 23 - - - inc hl + 105 D1:BCEF ED 27 - - ld hl, (hl) + 106 D1:BCF1 EB - - - ex de, hl + 107 D1:BCF2 23 - - - inc hl + 108 D1:BCF3 ED 07 - - ld bc, (hl) + 109 D1:BCF5 EB - - - ex de, hl + 110 D1:BCF6 - - - - ; hl-bc is x0-x1 + 111 D1:BCF6 B7 - - - or a, a + 112 D1:BCF7 ED 42 - - sbc hl, bc + 113 D1:BCF9 CB 2C CB 1D sra h \ rr l + 114 D1:BCFD 4C - - - ld c, h + 115 D1:BCFE EB - - - ex de, hl + 116 D1:BCFF 2B - - - dec hl + 117 D1:BD00 96 - - - sub a, (hl) + 118 D1:BD01 57 - - - ld d, a + 119 D1:BD02 3E 00 - - ld a, 0 + 120 D1:BD04 30 01 93 - jr nc, $+3 \ sub a, e + 121 D1:BD07 CB 79 28 01 92 - - - bit 7, c \ jr z, $+3 \ sub a, d - 122 D1:BD79 ED 5C - - mlt de - 123 D1:BD7B 82 - - - add a, d - 124 D1:BD7C 57 - - - ld d, a - 125 D1:BD7D - - - - ; bc and hl need a restore - 126 D1:BD7D - - - - ; (y1-y0)*(x2-x1) - 127 D1:BD7D - - - - ; a - (hl)*hl-bc - 128 D1:BD7D 7E - - - ld a, (hl) - 129 D1:BD7E 23 - - - inc hl - 130 D1:BD7F - - - - ; ld bc, (hl) - 131 D1:BD7F 4E - - - ld c, (hl) ; b still hold correct value - 132 D1:BD80 E1 - - - pop hl ; pop bc - 133 D1:BD81 23 - - - inc hl - 134 D1:BD82 ED 27 - - ld hl, (hl) - 135 D1:BD84 B7 - - - or a, a - 136 D1:BD85 ED 42 - - sbc hl, bc - 137 D1:BD87 CB 2C CB 1D sra h \ rr l - 138 D1:BD8B 4C - - - ld c, h - 139 D1:BD8C EB - - - ex de, hl - 140 D1:BD8D E3 - - - ex (sp), hl ; save previous de - 141 D1:BD8E 96 - - - sub a, (hl) - 142 D1:BD8F 57 - - - ld d, a - 143 D1:BD90 3E 00 - - ld a, 0 - 144 D1:BD92 30 01 93 - jr nc, $+3 \ sub a, e - 145 D1:BD95 CB 79 28 01 + 122 D1:BD0C ED 5C - - mlt de + 123 D1:BD0E 82 - - - add a, d + 124 D1:BD0F 57 - - - ld d, a + 125 D1:BD10 - - - - ; bc and hl need a restore + 126 D1:BD10 - - - - ; (y1-y0)*(x2-x1) + 127 D1:BD10 - - - - ; a - (hl)*hl-bc + 128 D1:BD10 7E - - - ld a, (hl) + 129 D1:BD11 23 - - - inc hl + 130 D1:BD12 - - - - ; ld bc, (hl) + 131 D1:BD12 4E - - - ld c, (hl) ; b still hold correct value + 132 D1:BD13 E1 - - - pop hl ; pop bc + 133 D1:BD14 23 - - - inc hl + 134 D1:BD15 ED 27 - - ld hl, (hl) + 135 D1:BD17 B7 - - - or a, a + 136 D1:BD18 ED 42 - - sbc hl, bc + 137 D1:BD1A CB 2C CB 1D sra h \ rr l + 138 D1:BD1E 4C - - - ld c, h + 139 D1:BD1F EB - - - ex de, hl + 140 D1:BD20 E3 - - - ex (sp), hl ; save previous de + 141 D1:BD21 96 - - - sub a, (hl) + 142 D1:BD22 57 - - - ld d, a + 143 D1:BD23 3E 00 - - ld a, 0 + 144 D1:BD25 30 01 93 - jr nc, $+3 \ sub a, e + 145 D1:BD28 CB 79 28 01 92 - - - bit 7, c \ jr z, $+3 \ sub a, d - 146 D1:BD9A ED 5C - - mlt de - 147 D1:BD9C 82 - - - add a, d - 148 D1:BD9D 57 - - - ld d, a - 149 D1:BD9E - - - - ; do de + temp_value - 150 D1:BD9E E1 - - - pop hl - 151 D1:BD9F 19 - - - add hl, de - 152 D1:BDA0 2B - - - dec hl - 153 D1:BDA1 CB 14 - - rl h - 154 D1:BDA3 C9 - - - ret - 155 D1:BDA4 - - - - - 156 D1:BDA4 - - - - - 157 D1:BDA4 - - - - - 158 D1:BDA4 - - - - #comment - 159 D1:BDA4 ld ix, (iy+VX_INDEX0) - 160 D1:BDA4 add ix, bc - 161 D1:BDA4 ld hl, (ix+VX_VERTEX_RZ) - 162 D1:BDA4 ld ix, (iy+VX_INDEX1) - 163 D1:BDA4 add ix, bc - 164 D1:BDA4 ld de, (ix+VX_VERTEX_RZ) - 165 D1:BDA4 add hl, de - 166 D1:BDA4 ld ix, (iy+VX_INDEX2) - 167 D1:BDA4 add ix, bc ; shouldn't carry - 168 D1:BDA4 ld de, (ix+VX_VERTEX_RZ) - 169 D1:BDA4 adc hl, de - 170 D1:BDA4 jp p, vxAvgDepthPositive - 171 D1:BDA4 or a, a - 172 D1:BDA4 sbc hl, hl - 173 D1:BDA4 vxAvgDepthPositive: - 174 D1:BDA4 - 175 D1:BDA4 #endcomment + 146 D1:BD2D ED 5C - - mlt de + 147 D1:BD2F 82 - - - add a, d + 148 D1:BD30 57 - - - ld d, a + 149 D1:BD31 - - - - ; do de + temp_value + 150 D1:BD31 E1 - - - pop hl + 151 D1:BD32 19 - - - add hl, de + 152 D1:BD33 2B - - - dec hl + 153 D1:BD34 CB 14 - - rl h + 154 D1:BD36 C9 - - - ret + 155 D1:BD37 - - - - + 156 D1:BD37 - - - - + 157 D1:BD37 - - - - + 158 D1:BD37 - - - - #comment + 159 D1:BD37 ld ix, (iy+VX_INDEX0) + 160 D1:BD37 add ix, bc + 161 D1:BD37 ld hl, (ix+VX_VERTEX_RZ) + 162 D1:BD37 ld ix, (iy+VX_INDEX1) + 163 D1:BD37 add ix, bc + 164 D1:BD37 ld de, (ix+VX_VERTEX_RZ) + 165 D1:BD37 add hl, de + 166 D1:BD37 ld ix, (iy+VX_INDEX2) + 167 D1:BD37 add ix, bc ; shouldn't carry + 168 D1:BD37 ld de, (ix+VX_VERTEX_RZ) + 169 D1:BD37 adc hl, de + 170 D1:BD37 jp p, vxAvgDepthPositive + 171 D1:BD37 or a, a + 172 D1:BD37 sbc hl, hl + 173 D1:BD37 vxAvgDepthPositive: + 174 D1:BD37 + 175 D1:BD37 #endcomment Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" - 4 D1:BDA4 - - - - - 5 D1:BDA4 - - - - - 6 D1:BDA4 - - - - #define VX_GEOMETRY_N3TI9 %00010011 ; 19 - 7 D1:BDA4 - - - - #define VX_GEOMETRY_TI9 %00010000 ; 16 - 8 D1:BDA4 - - - - #define VX_GEOMETRY_N3CI9 %00001101 ; 13 ; in theory not needed anymore - 9 D1:BDA4 - - - - #define VX_GEOMETRY_CI9 %00001010 ; 10 - 10 D1:BDA4 - - - - - 11 D1:BDA4 - - - - #define VX_GEOMETRY_COLOR %00001010 - 12 D1:BDA4 - - - - #define VX_GEOMETRY_TEXTURE %00010000 - 13 D1:BDA4 - - - - - 14 D1:BDA4 - - - - #define VX_ANIMATION_MATRIX_SIZE 15 - 15 D1:BDA4 - - - - #define VX_ANIMATION_BONE 32768 - 16 D1:BDA4 - - - - - 17 D1:BDA4 - - - - #define VX_GEOMETRY_QUEUE $D10000 ; 4*4096 (16K) - 18 D1:BDA4 - - - - #define VX_VERTEX_BUFFER $D08000 ; 16*2048 (32K) - 19 D1:BDA4 - - - - #define VX_MAX_TRIANGLE 4096 - 20 D1:BDA4 - - - - #define VX_MAX_VERTEX 2048 - 21 D1:BDA4 - - - - #define VX_MAX_BATCH 64 - 22 D1:BDA4 - - - - - 23 D1:BDA4 - - - - #define VX_VERTEX_BOX 8 - 24 D1:BDA4 - - - - - 25 D1:BDA4 - - - - #define vxPosition $D03406 - 26 D1:BDA4 - - - - #define VX_DEPTH_BUCKET $D03200 - 27 D1:BDA4 - - - - #define vxDepthSortTemp $E30014 - 28 D1:BDA4 - - - - - 29 D1:BDA4 - - - - ; TODO : create geometry shader in submission - 30 D1:BDA4 - - - - ; Better vertex shader with decoupled projection - 31 D1:BDA4 - - - - ; Put all the code in fast ram, use sha256 - 32 D1:BDA4 - - - - - 33 D1:BDA4 - - - - vxSubmissionQueue: - 34 D1:BDA4 00 00 00 - .dl 0 - 35 D1:BDA7 - - - - vxGeometrySize: - 36 D1:BDA7 00 00 00 - .dl 0 - 37 D1:BDAA - - - - vxBatchData: - 38 D1:BDAA 00 00 00 - .dl 0 - 39 D1:BDAD - - - - vxVertexCacheFill: - 40 D1:BDAD 00 00 00 - .dl 0 - 41 D1:BDB0 - - - - vxModelViewCache: - 42 D1:BDB0 00 00 00 - .db 0,0,0 - 43 D1:BDB3 00 00 00 - .db 0,0,0 - 44 D1:BDB6 00 00 00 - .db 0,0,0 - 45 D1:BDB9 00 00 00 00 + 4 D1:BD37 - - - - + 5 D1:BD37 - - - - + 6 D1:BD37 - - - - #define VX_GEOMETRY_N3TI9 %00010011 ; 19 + 7 D1:BD37 - - - - #define VX_GEOMETRY_TI9 %00010000 ; 16 + 8 D1:BD37 - - - - #define VX_GEOMETRY_N3CI9 %00001101 ; 13 ; in theory not needed anymore + 9 D1:BD37 - - - - #define VX_GEOMETRY_CI9 %00001010 ; 10 + 10 D1:BD37 - - - - + 11 D1:BD37 - - - - #define VX_GEOMETRY_COLOR %00001010 + 12 D1:BD37 - - - - #define VX_GEOMETRY_TEXTURE %00010000 + 13 D1:BD37 - - - - + 14 D1:BD37 - - - - #define VX_ANIMATION_MATRIX_SIZE 15 + 15 D1:BD37 - - - - #define VX_ANIMATION_BONE 32768 + 16 D1:BD37 - - - - + 17 D1:BD37 - - - - #define VX_GEOMETRY_QUEUE $D10000 ; 4*4096 (16K) + 18 D1:BD37 - - - - #define VX_VERTEX_BUFFER $D08000 ; 16*2048 (32K) + 19 D1:BD37 - - - - #define VX_MAX_TRIANGLE 4096 + 20 D1:BD37 - - - - #define VX_MAX_VERTEX 2048 + 21 D1:BD37 - - - - #define VX_MAX_BATCH 64 + 22 D1:BD37 - - - - + 23 D1:BD37 - - - - #define VX_VERTEX_BOX 8 + 24 D1:BD37 - - - - + 25 D1:BD37 - - - - #define vxPosition $D03406 + 26 D1:BD37 - - - - #define VX_DEPTH_BUCKET $D03200 + 27 D1:BD37 - - - - #define vxDepthSortTemp $E30014 + 28 D1:BD37 - - - - + 29 D1:BD37 - - - - ; TODO : create geometry shader in submission + 30 D1:BD37 - - - - ; Better vertex shader with decoupled projection + 31 D1:BD37 - - - - ; Put all the code in fast ram, use sha256 + 32 D1:BD37 - - - - + 33 D1:BD37 - - - - vxSubmissionQueue: + 34 D1:BD37 00 00 00 - .dl 0 + 35 D1:BD3A - - - - vxGeometrySize: + 36 D1:BD3A 00 00 00 - .dl 0 + 37 D1:BD3D - - - - vxBatchData: + 38 D1:BD3D 00 00 00 - .dl 0 + 39 D1:BD40 - - - - vxVertexCacheFill: + 40 D1:BD40 00 00 00 - .dl 0 + 41 D1:BD43 - - - - vxModelViewCache: + 42 D1:BD43 00 00 00 - .db 0,0,0 + 43 D1:BD46 00 00 00 - .db 0,0,0 + 44 D1:BD49 00 00 00 - .db 0,0,0 + 45 D1:BD4C 00 00 00 00 00 00 00 00 00 - - - .dl 0,0,0 - 46 D1:BDC2 - - - - vxModelWorld: - 47 D1:BDC2 00 00 00 - .db 0,0,0 - 48 D1:BDC5 00 00 00 - .db 0,0,0 - 49 D1:BDC8 00 00 00 - .db 0,0,0 - 50 D1:BDCB 00 00 00 00 + 46 D1:BD55 - - - - vxModelWorld: + 47 D1:BD55 00 00 00 - .db 0,0,0 + 48 D1:BD58 00 00 00 - .db 0,0,0 + 49 D1:BD5B 00 00 00 - .db 0,0,0 + 50 D1:BD5E 00 00 00 00 00 00 00 00 00 - - - .dl 0,0,0 - 51 D1:BDD4 - - - - vxTModelWorld: - 52 D1:BDD4 00 00 00 - .db 0,0,0 - 53 D1:BDD7 00 00 00 - .db 0,0,0 - 54 D1:BDDA 00 00 00 - .db 0,0,0 - 55 D1:BDDD 00 00 00 00 + 51 D1:BD67 - - - - vxTModelWorld: + 52 D1:BD67 00 00 00 - .db 0,0,0 + 53 D1:BD6A 00 00 00 - .db 0,0,0 + 54 D1:BD6D 00 00 00 - .db 0,0,0 + 55 D1:BD70 00 00 00 00 00 00 00 00 00 - - - .dl 0,0,0 - 56 D1:BDE6 - - - - vxLight0Cache: - 57 D1:BDE6 00 00 00 - .db 0,0,0 - 58 D1:BDE9 00 - - - .db 0 - 59 D1:BDEA 00 00 00 00 + 56 D1:BD79 - - - - vxLight0Cache: + 57 D1:BD79 00 00 00 - .db 0,0,0 + 58 D1:BD7C 00 - - - .db 0 + 59 D1:BD7D 00 00 00 00 00 00 - - .dw 0,0,0 - 60 D1:BDF0 - - - - vxKeyAnimation: - 61 D1:BDF0 00 - - - .db 0 - 62 D1:BDF1 - - - - - 63 D1:BDF1 00 00 00 00 + 60 D1:BD83 - - - - vxKeyAnimation: + 61 D1:BD83 00 - - - .db 0 + 62 D1:BD84 - - - - + 63 D1:BD84 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 - 00 00 00 - .align 256 + 00 00 00 00 .align 256 Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" 64 D1:BE00 - - - - VX_BATCH_DATA: 65 D1:BE00 00 00 00 00 @@ -3611,25 +3558,25 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" 67 D1:BF00 - - - - vxCmdExecute: 68 D1:BF00 FD 21 00 00 D1 - - - ld iy, VX_GEOMETRY_QUEUE - 69 D1:BF05 FD 22 A4 BD + 69 D1:BF05 FD 22 37 BD D1 - - - ld (vxSubmissionQueue), iy 70 D1:BF0A 21 00 BE D1 ld hl, VX_BATCH_DATA - 71 D1:BF0E 22 AA BD D1 ld (vxBatchData), hl + 71 D1:BF0E 22 3D BD D1 ld (vxBatchData), hl 72 D1:BF12 - - - - ; various reset blahblah 73 D1:BF12 - - - - - 74 D1:BF12 21 03 D4 D1 ld hl, VX_SHADER_INTERPOLATION_COPY + 74 D1:BF12 21 1F D4 D1 ld hl, VX_SHADER_INTERPOLATION_COPY 75 D1:BF16 11 00 08 E3 ld de, VX_SHADER_INTERPOLATION_CODE 76 D1:BF1A 01 00 04 00 ld bc, 1024 77 D1:BF1E ED B0 - - ldir - 78 D1:BF20 21 63 D7 D1 ld hl, VX_PIXEL_SHADER_COPY + 78 D1:BF20 21 7F D7 D1 ld hl, VX_PIXEL_SHADER_COPY 79 D1:BF24 11 10 00 E1 ld de, VX_PIXEL_SHADER_CODE 80 D1:BF28 01 40 00 00 ld bc, 64 81 D1:BF2C ED B0 - - ldir 82 D1:BF2E - - - - - 83 D1:BF2E ED 4B A7 BD + 83 D1:BF2E ED 4B 3A BD D1 - - - ld bc, (vxGeometrySize) 84 D1:BF33 21 00 00 00 ld hl, 0 - 85 D1:BF37 22 A7 BD D1 ld (vxGeometrySize), hl + 85 D1:BF37 22 3A BD D1 ld (vxGeometrySize), hl 86 D1:BF3B 78 - - - ld a, b 87 D1:BF3C B1 - - - or c 88 D1:BF3D - - - - ; jp z, vxResetCache @@ -3651,1723 +3598,1734 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" 104 D1:BF52 FD 37 01 - ld iy, (iy+1) ; read triangle data 105 D1:BF55 - - - - ; switch(format) 106 D1:BF55 FE 10 - - cp VX_GEOMETRY_TI9 - 107 D1:BF57 30 23 - - jr nc, vxCmdFormatTex + 107 D1:BF57 30 3F - - jr nc, vxCmdFormatTex 108 D1:BF59 - - - - vxCmdFormatCol: - 109 D1:BF59 FD 7E 09 - ld a, (iy+9) ; color - 110 D1:BF5C FD 27 00 - ld hl, (iy+0) - 111 D1:BF5F 09 - - - add hl, bc - 112 D1:BF60 EB - - - ex de, hl - 113 D1:BF61 FD 27 03 - ld hl, (iy+3) - 114 D1:BF64 09 - - - add hl, bc - 115 D1:BF65 FD 31 06 - ld ix, (iy+6) - 116 D1:BF68 DD 09 - - add ix, bc - 117 D1:BF6A ED 02 00 - lea bc, ix+0 - 118 D1:BF6D CD 97 AA D1 call vxFlatTriangle - 119 D1:BF71 FD E1 - - pop iy - 120 D1:BF73 C1 - - - pop bc - 121 D1:BF74 10 CD - - djnz vxCmdExeLoop - 122 D1:BF76 0D - - - dec c - 123 D1:BF77 C2 43 BF D1 jp nz, vxCmdExeLoop - 124 D1:BF7B C9 - - - ret - 125 D1:BF7C - - - - vxCmdFormatTex: - 126 D1:BF7C - - - - - 127 D1:BF7C - - - - ;; push bc - 128 D1:BF7C - - - - ;;; ;ld ix, vxWorldView+6 - 129 D1:BF7C - - - - ;; ld ix, LIGHT - 130 D1:BF7C - - - - - 131 D1:BF7C - - - - #comment - 132 D1:BF7C call vxDotProduct - 133 D1:BF7C or a, a - 134 D1:BF7C ex de, hl - 135 D1:BF7C sbc hl, hl - 136 D1:BF7C sbc hl, de - 137 D1:BF7C bit 7, h - 138 D1:BF7C jr z, _InRange - 139 D1:BF7C ld hl, 0 - 140 D1:BF7C _InRange: - 141 D1:BF7C add hl, hl - 142 D1:BF7C ld a, 12 - 143 D1:BF7C add a, h - 144 D1:BF7C cp 32 - 145 D1:BF7C jr c, $+4 - 146 D1:BF7C ld a, 31 - 147 D1:BF7C ld (INCREMENT), a - 148 D1:BF7C #endcomment - 149 D1:BF7C - - - - #comment - 150 D1:BF7C xor a, a - 151 D1:BF7C ld c, (iy+16) - 152 D1:BF7C ld b, (ix+0) - 153 D1:BF7C bit 7, c \ jr z, $+3 \ sub a,b - 154 D1:BF7C bit 7, b \ jr z, $+3 \ sub a,c - 155 D1:BF7C mlt bc - 156 D1:BF7C add a, b - 157 D1:BF7C ld c, (iy+17) - 158 D1:BF7C ld b, (ix+1) - 159 D1:BF7C bit 7, c \ jr z, $+3 \ sub a,b - 160 D1:BF7C bit 7, b \ jr z, $+3 \ sub a,c - 161 D1:BF7C mlt bc - 162 D1:BF7C add a, b - 163 D1:BF7C ld c, (iy+18) - 164 D1:BF7C ld b, (ix+2) - 165 D1:BF7C bit 7, c \ jr z, $+3 \ sub a,b - 166 D1:BF7C bit 7, b \ jr z, $+3 \ sub a,c - 167 D1:BF7C mlt bc - 168 D1:BF7C add a, b - 169 D1:BF7C ; max(a,0) - 170 D1:BF7C jp p, $+4+1 - 171 D1:BF7C xor a, a - 172 D1:BF7C ; lightning model is here, infinite directionnal light, no pow=1 - 173 D1:BF7C ; ambiant lightning=12 - 174 D1:BF7C ;; add a, 8 - 175 D1:BF7C add a, 12 - 176 D1:BF7C ; min(a,31) - 177 D1:BF7C cp 32 - 178 D1:BF7C jr c, $+4 - 179 D1:BF7C ld a, 31 - 180 D1:BF7C ld (INCREMENT), a - 181 D1:BF7C pop bc - 182 D1:BF7C - 183 D1:BF7C ld de, (iy+12) - 184 D1:BF7C ld ix, (iy+3) - 185 D1:BF7C add ix, bc - 186 D1:BF7C ld (ix+5), e - 187 D1:BF7C ld (ix+6), d - 188 D1:BF7C lea de, ix+0 - 189 D1:BF7C - 190 D1:BF7C ld hl, (iy+10) - 191 D1:BF7C ld ix, (iy+0) - 192 D1:BF7C add ix, bc - 193 D1:BF7C ld (ix+5), l - 194 D1:BF7C ld (ix+6), h - 195 D1:BF7C ;; lea hl, ix+0 - 196 D1:BF7C - 197 D1:BF7C ld hl, (iy+14) - 198 D1:BF7C ld iy, (iy+6) - 199 D1:BF7C add iy, bc - 200 D1:BF7C ld (iy+5), l - 201 D1:BF7C ld (iy+6), h - 202 D1:BF7C lea bc, iy+0 - 203 D1:BF7C - 204 D1:BF7C lea hl, ix+0 - 205 D1:BF7C - 206 D1:BF7C ld ix, (iy+3) - 207 D1:BF7C add ix, bc - 208 D1:BF7C ld a, (ix+5) - 209 D1:BF7C lea de, ix+0 - 210 D1:BF7C - 211 D1:BF7C ld ix, (iy+0) - 212 D1:BF7C add ix, bc - 213 D1:BF7C add a, (ix+5) - 214 D1:BF7C lea hl, ix+0 - 215 D1:BF7C - 216 D1:BF7C ld ix, (iy+6) - 217 D1:BF7C add ix, bc - 218 D1:BF7C add a, (ix+5) - 219 D1:BF7C lea bc, ix+0 - 220 D1:BF7C - 221 D1:BF7C lea ix, iy+10 - 222 D1:BF7C #endcomment - 223 D1:BF7C - - - - - 224 D1:BF7C FD 31 00 - ld ix, (iy+0) - 225 D1:BF7F DD 09 - - add ix, bc - 226 D1:BF81 FD 17 0A - ld de, (iy+10) - 227 D1:BF84 DD 73 04 - ld (ix+VX_VERTEX_GPR0), e - 228 D1:BF87 DD 72 05 - ld (ix+VX_VERTEX_GPR1), d - 229 D1:BF8A DD 7E 06 - ld a, (ix+VX_VERTEX_UNIFORM) - 230 D1:BF8D ED 12 00 - lea de, ix+0 - 231 D1:BF90 - - - - - 232 D1:BF90 FD 31 03 - ld ix, (iy+3) - 233 D1:BF93 DD 09 - - add ix, bc - 234 D1:BF95 FD 27 0C - ld hl, (iy+12) - 235 D1:BF98 DD 75 04 - ld (ix+VX_VERTEX_GPR0), l - 236 D1:BF9B DD 74 05 - ld (ix+VX_VERTEX_GPR1), h - 237 D1:BF9E DD 86 06 - add a, (ix+VX_VERTEX_UNIFORM) - 238 D1:BFA1 ED 22 00 - lea hl, ix+0 - 239 D1:BFA4 - - - - - 240 D1:BFA4 FD 31 06 - ld ix, (iy+6) - 241 D1:BFA7 DD 09 - - add ix, bc - 242 D1:BFA9 FD 07 0E - ld bc, (iy+14) - 243 D1:BFAC DD 71 04 - ld (ix+VX_VERTEX_GPR0), c - 244 D1:BFAF DD 70 05 - ld (ix+VX_VERTEX_GPR1), b - 245 D1:BFB2 DD 86 06 - add a, (ix+VX_VERTEX_UNIFORM) - 246 D1:BFB5 - - - - ; compute uniform value - 247 D1:BFB5 47 - - - ld b, a - 248 D1:BFB6 0E 53 - - ld c, 83 - 249 D1:BFB8 ED 4C - - mlt bc - 250 D1:BFBA 78 - - - ld a, b - 251 D1:BFBB 32 4D 0B E3 ld (vxShaderUniform0+1), a - 252 D1:BFBF ED 02 00 - lea bc, ix+0 - 253 D1:BFC2 - - - - - 254 D1:BFC2 CD 00 08 E3 call vxTextureTriangle - 255 D1:BFC6 FD E1 - - pop iy - 256 D1:BFC8 C1 - - - pop bc - 257 D1:BFC9 05 - - - dec b - 258 D1:BFCA C2 43 BF D1 jp nz, vxCmdExeLoop - 259 D1:BFCE 0D - - - dec c - 260 D1:BFCF C2 43 BF D1 jp nz, vxCmdExeLoop - 261 D1:BFD3 C9 - - - ret - 262 D1:BFD4 - - - - ;; jp vxResetCache - 263 D1:BFD4 - - - - - 264 D1:BFD4 - - - - vxCmdDraw: - 265 D1:BFD4 - - - - ; hl - vertex source bc - cache area : de - triangle source : ix - matrix world matrix followed with iy model matrix - 266 D1:BFD4 - - - - ; format : a - 267 D1:BFD4 - - - - ; now write batch id, batch data (format, cache) - 268 D1:BFD4 E5 - - - push hl - 269 D1:BFD5 2A AA BD D1 ld hl, (vxBatchData) - 270 D1:BFD9 77 - - - ld (hl), a ; format - 271 D1:BFDA 32 38 C0 D1 ld (vxFormatOffset0), a - 272 D1:BFDE 7D - - - ld a, l - 273 D1:BFDF 23 - - - inc hl - 274 D1:BFE0 ED 0F - - ld (hl), bc - 275 D1:BFE2 23 23 23 - inc hl \ inc hl \ inc hl - 276 D1:BFE5 22 AA BD D1 ld (vxBatchData), hl - 277 D1:BFE9 32 2C C0 D1 ld (vxBatchOffset0), a - 278 D1:BFED E1 - - - pop hl - 279 D1:BFEE - - - - - 280 D1:BFEE C5 - - - push bc - 281 D1:BFEF D5 - - - push de - 282 D1:BFF0 CD 62 C0 D1 call vxCmdStream ; stream vertex data to cache - 283 D1:BFF4 FD E1 - - pop iy ; polygon list - 284 D1:BFF6 D1 - - - pop de - 285 D1:BFF7 D8 - - - ret c - 286 D1:BFF8 FD 07 01 - ld bc, (iy+1) - 287 D1:BFFB 79 - - - ld a, c - 288 D1:BFFC 0B - - - dec bc - 289 D1:BFFD 04 - - - inc b - 290 D1:BFFE 48 - - - ld c, b - 291 D1:BFFF 47 - - - ld b, a - 292 D1:C000 ED 33 03 - lea iy, iy+3 - 293 D1:C003 DD 2A A4 BD + 109 D1:BF59 FD 31 00 - ld ix, (iy+0) + 110 D1:BF5C DD 09 - - add ix, bc + 111 D1:BF5E DD 7E 06 - ld a, (ix+VX_VERTEX_UNIFORM) + 112 D1:BF61 ED 22 00 - lea hl, ix+0 + 113 D1:BF64 FD 31 03 - ld ix, (iy+3) + 114 D1:BF67 DD 09 - - add ix, bc + 115 D1:BF69 DD 86 06 - add a, (ix+VX_VERTEX_UNIFORM) + 116 D1:BF6C ED 12 00 - lea de, ix+0 + 117 D1:BF6F FD 31 06 - ld ix, (iy+6) + 118 D1:BF72 DD 09 - - add ix, bc + 119 D1:BF74 DD 86 06 - add a, (ix+VX_VERTEX_UNIFORM) + 120 D1:BF77 47 - - - ld b, a + 121 D1:BF78 0E 53 - - ld c, 83 + 122 D1:BF7A ED 4C - - mlt bc + 123 D1:BF7C 78 - - - ld a, b + 124 D1:BF7D 01 00 00 D0 ld bc, $D00000 + 125 D1:BF81 FD 4E 09 - ld c, (iy+9) + 126 D1:BF84 47 - - - ld b, a + 127 D1:BF85 0A - - - ld a, (bc) + 128 D1:BF86 ED 02 00 - lea bc, ix+0 + 129 D1:BF89 CD 2A AA D1 call vxFlatTriangle + 130 D1:BF8D FD E1 - - pop iy + 131 D1:BF8F C1 - - - pop bc + 132 D1:BF90 10 B1 - - djnz vxCmdExeLoop + 133 D1:BF92 0D - - - dec c + 134 D1:BF93 C2 43 BF D1 jp nz, vxCmdExeLoop + 135 D1:BF97 C9 - - - ret + 136 D1:BF98 - - - - vxCmdFormatTex: + 137 D1:BF98 - - - - + 138 D1:BF98 - - - - ;; push bc + 139 D1:BF98 - - - - ;;; ;ld ix, vxWorldView+6 + 140 D1:BF98 - - - - ;; ld ix, LIGHT + 141 D1:BF98 - - - - + 142 D1:BF98 - - - - #comment + 143 D1:BF98 call vxDotProduct + 144 D1:BF98 or a, a + 145 D1:BF98 ex de, hl + 146 D1:BF98 sbc hl, hl + 147 D1:BF98 sbc hl, de + 148 D1:BF98 bit 7, h + 149 D1:BF98 jr z, _InRange + 150 D1:BF98 ld hl, 0 + 151 D1:BF98 _InRange: + 152 D1:BF98 add hl, hl + 153 D1:BF98 ld a, 12 + 154 D1:BF98 add a, h + 155 D1:BF98 cp 32 + 156 D1:BF98 jr c, $+4 + 157 D1:BF98 ld a, 31 + 158 D1:BF98 ld (INCREMENT), a + 159 D1:BF98 #endcomment + 160 D1:BF98 - - - - #comment + 161 D1:BF98 xor a, a + 162 D1:BF98 ld c, (iy+16) + 163 D1:BF98 ld b, (ix+0) + 164 D1:BF98 bit 7, c \ jr z, $+3 \ sub a,b + 165 D1:BF98 bit 7, b \ jr z, $+3 \ sub a,c + 166 D1:BF98 mlt bc + 167 D1:BF98 add a, b + 168 D1:BF98 ld c, (iy+17) + 169 D1:BF98 ld b, (ix+1) + 170 D1:BF98 bit 7, c \ jr z, $+3 \ sub a,b + 171 D1:BF98 bit 7, b \ jr z, $+3 \ sub a,c + 172 D1:BF98 mlt bc + 173 D1:BF98 add a, b + 174 D1:BF98 ld c, (iy+18) + 175 D1:BF98 ld b, (ix+2) + 176 D1:BF98 bit 7, c \ jr z, $+3 \ sub a,b + 177 D1:BF98 bit 7, b \ jr z, $+3 \ sub a,c + 178 D1:BF98 mlt bc + 179 D1:BF98 add a, b + 180 D1:BF98 ; max(a,0) + 181 D1:BF98 jp p, $+4+1 + 182 D1:BF98 xor a, a + 183 D1:BF98 ; lightning model is here, infinite directionnal light, no pow=1 + 184 D1:BF98 ; ambiant lightning=12 + 185 D1:BF98 ;; add a, 8 + 186 D1:BF98 add a, 12 + 187 D1:BF98 ; min(a,31) + 188 D1:BF98 cp 32 + 189 D1:BF98 jr c, $+4 + 190 D1:BF98 ld a, 31 + 191 D1:BF98 ld (INCREMENT), a + 192 D1:BF98 pop bc + 193 D1:BF98 + 194 D1:BF98 ld de, (iy+12) + 195 D1:BF98 ld ix, (iy+3) + 196 D1:BF98 add ix, bc + 197 D1:BF98 ld (ix+5), e + 198 D1:BF98 ld (ix+6), d + 199 D1:BF98 lea de, ix+0 + 200 D1:BF98 + 201 D1:BF98 ld hl, (iy+10) + 202 D1:BF98 ld ix, (iy+0) + 203 D1:BF98 add ix, bc + 204 D1:BF98 ld (ix+5), l + 205 D1:BF98 ld (ix+6), h + 206 D1:BF98 ;; lea hl, ix+0 + 207 D1:BF98 + 208 D1:BF98 ld hl, (iy+14) + 209 D1:BF98 ld iy, (iy+6) + 210 D1:BF98 add iy, bc + 211 D1:BF98 ld (iy+5), l + 212 D1:BF98 ld (iy+6), h + 213 D1:BF98 lea bc, iy+0 + 214 D1:BF98 + 215 D1:BF98 lea hl, ix+0 + 216 D1:BF98 + 217 D1:BF98 ld ix, (iy+3) + 218 D1:BF98 add ix, bc + 219 D1:BF98 ld a, (ix+5) + 220 D1:BF98 lea de, ix+0 + 221 D1:BF98 + 222 D1:BF98 ld ix, (iy+0) + 223 D1:BF98 add ix, bc + 224 D1:BF98 add a, (ix+5) + 225 D1:BF98 lea hl, ix+0 + 226 D1:BF98 + 227 D1:BF98 ld ix, (iy+6) + 228 D1:BF98 add ix, bc + 229 D1:BF98 add a, (ix+5) + 230 D1:BF98 lea bc, ix+0 + 231 D1:BF98 + 232 D1:BF98 lea ix, iy+10 + 233 D1:BF98 #endcomment + 234 D1:BF98 - - - - + 235 D1:BF98 FD 31 00 - ld ix, (iy+0) + 236 D1:BF9B DD 09 - - add ix, bc + 237 D1:BF9D FD 27 0A - ld hl, (iy+10) + 238 D1:BFA0 DD 75 04 - ld (ix+VX_VERTEX_GPR0), l + 239 D1:BFA3 DD 74 05 - ld (ix+VX_VERTEX_GPR1), h + 240 D1:BFA6 DD 7E 06 - ld a, (ix+VX_VERTEX_UNIFORM) + 241 D1:BFA9 ED 22 00 - lea hl, ix+0 + 242 D1:BFAC - - - - + 243 D1:BFAC FD 31 03 - ld ix, (iy+3) + 244 D1:BFAF DD 09 - - add ix, bc + 245 D1:BFB1 FD 17 0C - ld de, (iy+12) + 246 D1:BFB4 DD 73 04 - ld (ix+VX_VERTEX_GPR0), e + 247 D1:BFB7 DD 72 05 - ld (ix+VX_VERTEX_GPR1), d + 248 D1:BFBA DD 86 06 - add a, (ix+VX_VERTEX_UNIFORM) + 249 D1:BFBD ED 12 00 - lea de, ix+0 + 250 D1:BFC0 - - - - + 251 D1:BFC0 FD 31 06 - ld ix, (iy+6) + 252 D1:BFC3 DD 09 - - add ix, bc + 253 D1:BFC5 FD 07 0E - ld bc, (iy+14) + 254 D1:BFC8 DD 71 04 - ld (ix+VX_VERTEX_GPR0), c + 255 D1:BFCB DD 70 05 - ld (ix+VX_VERTEX_GPR1), b + 256 D1:BFCE DD 86 06 - add a, (ix+VX_VERTEX_UNIFORM) + 257 D1:BFD1 - - - - ; compute uniform value + 258 D1:BFD1 47 - - - ld b, a + 259 D1:BFD2 0E 53 - - ld c, 83 + 260 D1:BFD4 ED 4C - - mlt bc + 261 D1:BFD6 78 - - - ld a, b + 262 D1:BFD7 32 4D 0B E3 ld (vxShaderUniform0+1), a + 263 D1:BFDB ED 02 00 - lea bc, ix+0 + 264 D1:BFDE - - - - + 265 D1:BFDE CD 00 08 E3 call vxTextureTriangle + 266 D1:BFE2 FD E1 - - pop iy + 267 D1:BFE4 C1 - - - pop bc + 268 D1:BFE5 05 - - - dec b + 269 D1:BFE6 C2 43 BF D1 jp nz, vxCmdExeLoop + 270 D1:BFEA 0D - - - dec c + 271 D1:BFEB C2 43 BF D1 jp nz, vxCmdExeLoop + 272 D1:BFEF C9 - - - ret + 273 D1:BFF0 - - - - ;; jp vxResetCache + 274 D1:BFF0 - - - - + 275 D1:BFF0 - - - - vxCmdDraw: + 276 D1:BFF0 - - - - ; hl - vertex source bc - cache area : de - triangle source : ix - matrix world matrix followed with iy model matrix + 277 D1:BFF0 - - - - ; format : a + 278 D1:BFF0 - - - - ; now write batch id, batch data (format, cache) + 279 D1:BFF0 E5 - - - push hl + 280 D1:BFF1 2A 3D BD D1 ld hl, (vxBatchData) + 281 D1:BFF5 77 - - - ld (hl), a ; format + 282 D1:BFF6 32 54 C0 D1 ld (vxFormatOffset0), a + 283 D1:BFFA 7D - - - ld a, l + 284 D1:BFFB 23 - - - inc hl + 285 D1:BFFC ED 0F - - ld (hl), bc + 286 D1:BFFE 23 23 23 - inc hl \ inc hl \ inc hl + 287 D1:C001 22 3D BD D1 ld (vxBatchData), hl + 288 D1:C005 32 48 C0 D1 ld (vxBatchOffset0), a + 289 D1:C009 E1 - - - pop hl + 290 D1:C00A - - - - + 291 D1:C00A C5 - - - push bc + 292 D1:C00B D5 - - - push de + 293 D1:C00C CD 7E C0 D1 call vxCmdStream ; stream vertex data to cache + 294 D1:C010 FD E1 - - pop iy ; polygon list + 295 D1:C012 D1 - - - pop de + 296 D1:C013 D8 - - - ret c + 297 D1:C014 FD 07 01 - ld bc, (iy+1) + 298 D1:C017 79 - - - ld a, c + 299 D1:C018 0B - - - dec bc + 300 D1:C019 04 - - - inc b + 301 D1:C01A 48 - - - ld c, b + 302 D1:C01B 47 - - - ld b, a + 303 D1:C01C ED 33 03 - lea iy, iy+3 + 304 D1:C01F DD 2A 37 BD D1 - - - ld ix, (vxSubmissionQueue) - 294 D1:C008 - - - - - 295 D1:C008 - - - - #comment - 296 D1:C008 vxSubmission0: - 297 D1:C008 ld hl, (iy+0) - 298 D1:C008 add hl, de - 299 D1:C008 ld a, (hl) - 300 D1:C008 ld hl, (iy+3) - 301 D1:C008 add hl, de - 302 D1:C008 and (hl) - 303 D1:C008 ld hl, (iy+6) - 304 D1:C008 add hl, de - 305 D1:C008 and (hl) - 306 D1:C008 jr nz, vxDiscard1 - 307 D1:C008 - 308 D1:C008 ld hl, (iy+0) - 309 D1:C008 add hl, de - 310 D1:C008 ld a, (hl) - 311 D1:C008 ld hl, (iy+3) - 312 D1:C008 add hl, de - 313 D1:C008 or (hl) - 314 D1:C008 ld hl, (iy+6) - 315 D1:C008 add hl, de - 316 D1:C008 or (hl) - 317 D1:C008 jr nz, +_ - 318 D1:C008 ; try for bfc - 319 D1:C008 push bc - 320 D1:C008 - 321 D1:C008 call vxCmdBFC - 322 D1:C008 - 323 D1:C008 pop bc - 324 D1:C008 jp p, vxDiscard1 - 325 D1:C008 _: - 326 D1:C008 ; compute depth and submit polygon to list (ix) - 327 D1:C008 vxBatchOffset0=$+1 - 328 D1:C008 ld a, $00 - 329 D1:C008 ld (ix+0), a - 330 D1:C008 ld (ix+1), iy - 331 D1:C008 lea ix, ix+4 - 332 D1:C008 vxDiscard1: - 333 D1:C008 vxFormatOffset0=$+2 - 334 D1:C008 lea iy, iy+16 - 335 D1:C008 djnz vxSubmission0 - 336 D1:C008 dec c - 337 D1:C008 jr nz, vxSubmission0 - 338 D1:C008 #endcomment - 339 D1:C008 - - - - - 340 D1:C008 - - - - vxSubmission0: - 341 D1:C008 D5 - - - push de - 342 D1:C009 C5 - - - push bc - 343 D1:C00A - - - - - 344 D1:C00A FD 27 06 - ld hl, (iy+6) - 345 D1:C00D 19 - - - add hl, de - 346 D1:C00E E5 - - - push hl - 347 D1:C00F FD 27 03 - ld hl, (iy+3) - 348 D1:C012 19 - - - add hl, de - 349 D1:C013 EB - - - ex de, hl - 350 D1:C014 FD 07 00 - ld bc, (iy+0) - 351 D1:C017 09 - - - add hl, bc - 352 D1:C018 C1 - - - pop bc - 353 D1:C019 - - - - ; bc = 2 , de = 1, hl =0 - 354 D1:C019 - - - - - 355 D1:C019 0A - - - ld a, (bc) - 356 D1:C01A A6 - - - and (hl) - 357 D1:C01B EB - - - ex de, hl - 358 D1:C01C A6 - - - and (hl) - 359 D1:C01D 20 17 - - jr nz, vxDiscard - 360 D1:C01F 0A - - - ld a, (bc) - 361 D1:C020 B6 - - - or (hl) - 362 D1:C021 EB - - - ex de, hl - 363 D1:C022 B6 - - - or (hl) - 364 D1:C023 20 06 - - jr nz, vxPass - 365 D1:C025 - - - - ; try for bfc - 366 D1:C025 - - - - ;; call HELLO - 367 D1:C025 CD 55 BD D1 call vxNClip - 368 D1:C029 - - - - ;; jp p, vxDiscard - 369 D1:C029 38 0B - - jr c, vxDiscard - 370 D1:C02B - - - - vxPass: - 371 D1:C02B - - - - ; compute depth and submit polygon to list (ix) - 372 D1:C02B - - - - vxBatchOffset0=$+1 - 373 D1:C02B 3E 00 - - ld a, $00 - 374 D1:C02D DD 77 00 - ld (ix+0), a - 375 D1:C030 DD 3E 01 - ld (ix+1), iy - 376 D1:C033 ED 32 04 - lea ix, ix+4 - 377 D1:C036 - - - - vxDiscard: - 378 D1:C036 - - - - vxFormatOffset0=$+2 - 379 D1:C036 ED 33 10 - lea iy, iy+16 - 380 D1:C039 - - - - - 381 D1:C039 C1 - - - pop bc - 382 D1:C03A D1 - - - pop de - 383 D1:C03B 10 CB - - djnz vxSubmission0 - 384 D1:C03D 0D - - - dec c - 385 D1:C03E 20 C8 - - jr nz, vxSubmission0 - 386 D1:C040 - - - - - 387 D1:C040 - - - - ; need to update count & queue position - 388 D1:C040 - - - - ; simple : new-previous / 4 - 389 D1:C040 ED 5B A4 BD + 305 D1:C024 - - - - + 306 D1:C024 - - - - #comment + 307 D1:C024 vxSubmission0: + 308 D1:C024 ld hl, (iy+0) + 309 D1:C024 add hl, de + 310 D1:C024 ld a, (hl) + 311 D1:C024 ld hl, (iy+3) + 312 D1:C024 add hl, de + 313 D1:C024 and (hl) + 314 D1:C024 ld hl, (iy+6) + 315 D1:C024 add hl, de + 316 D1:C024 and (hl) + 317 D1:C024 jr nz, vxDiscard1 + 318 D1:C024 + 319 D1:C024 ld hl, (iy+0) + 320 D1:C024 add hl, de + 321 D1:C024 ld a, (hl) + 322 D1:C024 ld hl, (iy+3) + 323 D1:C024 add hl, de + 324 D1:C024 or (hl) + 325 D1:C024 ld hl, (iy+6) + 326 D1:C024 add hl, de + 327 D1:C024 or (hl) + 328 D1:C024 jr nz, +_ + 329 D1:C024 ; try for bfc + 330 D1:C024 push bc + 331 D1:C024 + 332 D1:C024 call vxCmdBFC + 333 D1:C024 + 334 D1:C024 pop bc + 335 D1:C024 jp p, vxDiscard1 + 336 D1:C024 _: + 337 D1:C024 ; compute depth and submit polygon to list (ix) + 338 D1:C024 vxBatchOffset0=$+1 + 339 D1:C024 ld a, $00 + 340 D1:C024 ld (ix+0), a + 341 D1:C024 ld (ix+1), iy + 342 D1:C024 lea ix, ix+4 + 343 D1:C024 vxDiscard1: + 344 D1:C024 vxFormatOffset0=$+2 + 345 D1:C024 lea iy, iy+16 + 346 D1:C024 djnz vxSubmission0 + 347 D1:C024 dec c + 348 D1:C024 jr nz, vxSubmission0 + 349 D1:C024 #endcomment + 350 D1:C024 - - - - + 351 D1:C024 - - - - vxSubmission0: + 352 D1:C024 D5 - - - push de + 353 D1:C025 C5 - - - push bc + 354 D1:C026 - - - - + 355 D1:C026 FD 27 06 - ld hl, (iy+6) + 356 D1:C029 19 - - - add hl, de + 357 D1:C02A E5 - - - push hl + 358 D1:C02B FD 27 03 - ld hl, (iy+3) + 359 D1:C02E 19 - - - add hl, de + 360 D1:C02F EB - - - ex de, hl + 361 D1:C030 FD 07 00 - ld bc, (iy+0) + 362 D1:C033 09 - - - add hl, bc + 363 D1:C034 C1 - - - pop bc + 364 D1:C035 - - - - ; bc = 2 , de = 1, hl =0 + 365 D1:C035 - - - - + 366 D1:C035 0A - - - ld a, (bc) + 367 D1:C036 A6 - - - and (hl) + 368 D1:C037 EB - - - ex de, hl + 369 D1:C038 A6 - - - and (hl) + 370 D1:C039 20 17 - - jr nz, vxDiscard + 371 D1:C03B 0A - - - ld a, (bc) + 372 D1:C03C B6 - - - or (hl) + 373 D1:C03D EB - - - ex de, hl + 374 D1:C03E B6 - - - or (hl) + 375 D1:C03F 20 06 - - jr nz, vxPass + 376 D1:C041 - - - - ; try for bfc + 377 D1:C041 - - - - ;; call HELLO + 378 D1:C041 CD E8 BC D1 call vxNClip + 379 D1:C045 - - - - ;; jp p, vxDiscard + 380 D1:C045 38 0B - - jr c, vxDiscard + 381 D1:C047 - - - - vxPass: + 382 D1:C047 - - - - ; compute depth and submit polygon to list (ix) + 383 D1:C047 - - - - vxBatchOffset0=$+1 + 384 D1:C047 3E 00 - - ld a, $00 + 385 D1:C049 DD 77 00 - ld (ix+0), a + 386 D1:C04C DD 3E 01 - ld (ix+1), iy + 387 D1:C04F ED 32 04 - lea ix, ix+4 + 388 D1:C052 - - - - vxDiscard: + 389 D1:C052 - - - - vxFormatOffset0=$+2 + 390 D1:C052 ED 33 10 - lea iy, iy+16 + 391 D1:C055 - - - - + 392 D1:C055 C1 - - - pop bc + 393 D1:C056 D1 - - - pop de + 394 D1:C057 10 CB - - djnz vxSubmission0 + 395 D1:C059 0D - - - dec c + 396 D1:C05A 20 C8 - - jr nz, vxSubmission0 + 397 D1:C05C - - - - + 398 D1:C05C - - - - ; need to update count & queue position + 399 D1:C05C - - - - ; simple : new-previous / 4 + 400 D1:C05C ED 5B 37 BD D1 - - - ld de, (vxSubmissionQueue) - 390 D1:C045 ED 22 00 - lea hl, ix+0 - 391 D1:C048 22 A4 BD D1 ld (vxSubmissionQueue), hl - 392 D1:C04C B7 - - - or a, a - 393 D1:C04D ED 52 - - sbc hl, de - 394 D1:C04F CB 2C CB 1D sra h \ rr l - 395 D1:C053 CB 2C CB 1D sra h \ rr l - 396 D1:C057 ED 4B A7 BD + 401 D1:C061 ED 22 00 - lea hl, ix+0 + 402 D1:C064 22 37 BD D1 ld (vxSubmissionQueue), hl + 403 D1:C068 B7 - - - or a, a + 404 D1:C069 ED 52 - - sbc hl, de + 405 D1:C06B CB 2C CB 1D sra h \ rr l + 406 D1:C06F CB 2C CB 1D sra h \ rr l + 407 D1:C073 ED 4B 3A BD D1 - - - ld bc, (vxGeometrySize) - 397 D1:C05C 09 - - - add hl, bc - 398 D1:C05D 22 A7 BD D1 ld (vxGeometrySize), hl - 399 D1:C061 - - - - - 400 D1:C061 C9 - - - ret - 401 D1:C062 - - - - - 402 D1:C062 - - - - ;vxResetCache: - 403 D1:C062 - - - - ; ld hl, VX_VERTEX_BUFFER - 404 D1:C062 - - - - ; ld de, 16 - 405 D1:C062 - - - - ; ld b, 0 - 406 D1:C062 - - - - ; ld a, $FF - 407 D1:C062 - - - - ;vxResetCacheLoop: - 408 D1:C062 - - - - ; ld (hl), a - 409 D1:C062 - - - - ; add hl, de - 410 D1:C062 - - - - ; ld (hl), a - 411 D1:C062 - - - - ; add hl, de - 412 D1:C062 - - - - ; ld (hl), a - 413 D1:C062 - - - - ; add hl, de - 414 D1:C062 - - - - ; ld (hl), a - 415 D1:C062 - - - - ; add hl, de - 416 D1:C062 - - - - ; ld (hl), a - 417 D1:C062 - - - - ; add hl, de - 418 D1:C062 - - - - ; ld (hl), a - 419 D1:C062 - - - - ; add hl, de - 420 D1:C062 - - - - ; ld (hl), a - 421 D1:C062 - - - - ; add hl, de - 422 D1:C062 - - - - ; ld (hl), a - 423 D1:C062 - - - - ; add hl, de - 424 D1:C062 - - - - ; djnz vxResetCacheLoop - 425 D1:C062 - - - - ; ret - 426 D1:C062 - - - - - 427 D1:C062 - - - - vxCmdStream: - 428 D1:C062 - - - - ; hl - vertex source, bc - vertex cache, ix worldview matrix, iy modelworld matrix (should be an model matrix) - 429 D1:C062 - - - - ; vertex source have size at the begining - 430 D1:C062 - - - - ; support animation - 431 D1:C062 C5 - - - push bc - 432 D1:C063 E5 - - - push hl - 433 D1:C064 - - - - ; load shader first - 434 D1:C064 21 29 BA D1 ld hl, VX_VERTEX_SHADER_COPY - 435 D1:C068 11 00 08 E3 ld de, VX_VRAM - 436 D1:C06C 01 00 04 00 ld bc, VX_VERTEX_SHADER_SIZE - 437 D1:C070 ED B0 - - ldir - 438 D1:C072 - - - - ; transform the worldview with the modelworld matrix to have the global modelview matrix - 439 D1:C072 - - - - ; modelviewcache = modelworld * worldview - 440 D1:C072 21 B0 BD D1 ld hl, vxModelViewCache - 441 D1:C076 CD 3C AD D1 call vxMatrixTransform ; (hl) = (iy)*(ix) - 442 D1:C07A - - - - ; modelview=modelviewcache - 443 D1:C07A 11 00 08 E3 ld de, vxModelView - 444 D1:C07E 01 12 00 00 ld bc, VX_MATRIX_SIZE - 445 D1:C082 ED B0 - - ldir - 446 D1:C084 - - - - ; modelworld=modelworld - 447 D1:C084 - - - - ; tmodelworld=transpose(modelworld) - 448 D1:C084 ED 23 00 - lea hl, iy+0 - 449 D1:C087 11 C2 BD D1 ld de, vxModelWorld - 450 D1:C08B 01 12 00 00 ld bc, VX_MATRIX_SIZE - 451 D1:C08F ED B0 - - ldir - 452 D1:C091 ED 23 00 - lea hl, iy+0 - 453 D1:C094 01 12 00 00 ld bc, VX_MATRIX_SIZE - 454 D1:C098 ED B0 - - ldir - 455 D1:C09A DD 21 D4 BD + 408 D1:C078 09 - - - add hl, bc + 409 D1:C079 22 3A BD D1 ld (vxGeometrySize), hl + 410 D1:C07D - - - - + 411 D1:C07D C9 - - - ret + 412 D1:C07E - - - - + 413 D1:C07E - - - - ;vxResetCache: + 414 D1:C07E - - - - ; ld hl, VX_VERTEX_BUFFER + 415 D1:C07E - - - - ; ld de, 16 + 416 D1:C07E - - - - ; ld b, 0 + 417 D1:C07E - - - - ; ld a, $FF + 418 D1:C07E - - - - ;vxResetCacheLoop: + 419 D1:C07E - - - - ; ld (hl), a + 420 D1:C07E - - - - ; add hl, de + 421 D1:C07E - - - - ; ld (hl), a + 422 D1:C07E - - - - ; add hl, de + 423 D1:C07E - - - - ; ld (hl), a + 424 D1:C07E - - - - ; add hl, de + 425 D1:C07E - - - - ; ld (hl), a + 426 D1:C07E - - - - ; add hl, de + 427 D1:C07E - - - - ; ld (hl), a + 428 D1:C07E - - - - ; add hl, de + 429 D1:C07E - - - - ; ld (hl), a + 430 D1:C07E - - - - ; add hl, de + 431 D1:C07E - - - - ; ld (hl), a + 432 D1:C07E - - - - ; add hl, de + 433 D1:C07E - - - - ; ld (hl), a + 434 D1:C07E - - - - ; add hl, de + 435 D1:C07E - - - - ; djnz vxResetCacheLoop + 436 D1:C07E - - - - ; ret + 437 D1:C07E - - - - + 438 D1:C07E - - - - vxCmdStream: + 439 D1:C07E - - - - ; hl - vertex source, bc - vertex cache, ix worldview matrix, iy modelworld matrix (should be an model matrix) + 440 D1:C07E - - - - ; vertex source have size at the begining + 441 D1:C07E - - - - ; support animation + 442 D1:C07E C5 - - - push bc + 443 D1:C07F E5 - - - push hl + 444 D1:C080 - - - - ; load shader first + 445 D1:C080 21 BC B9 D1 ld hl, VX_VERTEX_SHADER_COPY + 446 D1:C084 11 00 08 E3 ld de, VX_VRAM + 447 D1:C088 01 00 04 00 ld bc, VX_VERTEX_SHADER_SIZE + 448 D1:C08C ED B0 - - ldir + 449 D1:C08E - - - - ; transform the worldview with the modelworld matrix to have the global modelview matrix + 450 D1:C08E - - - - ; modelviewcache = modelworld * worldview + 451 D1:C08E 21 43 BD D1 ld hl, vxModelViewCache + 452 D1:C092 CD CF AC D1 call vxMatrixTransform ; (hl) = (iy)*(ix) + 453 D1:C096 - - - - ; modelview=modelviewcache + 454 D1:C096 11 00 08 E3 ld de, vxModelView + 455 D1:C09A 01 12 00 00 ld bc, VX_MATRIX_SIZE + 456 D1:C09E ED B0 - - ldir + 457 D1:C0A0 - - - - ; modelworld=modelworld + 458 D1:C0A0 - - - - ; tmodelworld=transpose(modelworld) + 459 D1:C0A0 ED 23 00 - lea hl, iy+0 + 460 D1:C0A3 11 55 BD D1 ld de, vxModelWorld + 461 D1:C0A7 01 12 00 00 ld bc, VX_MATRIX_SIZE + 462 D1:C0AB ED B0 - - ldir + 463 D1:C0AD ED 23 00 - lea hl, iy+0 + 464 D1:C0B0 01 12 00 00 ld bc, VX_MATRIX_SIZE + 465 D1:C0B4 ED B0 - - ldir + 466 D1:C0B6 DD 21 67 BD D1 - - - ld ix, vxTModelWorld - 456 D1:C09F CD 5F AD D1 call vxMatrixTranspose - 457 D1:C0A3 - - - - ; light0cache=light0 - 458 D1:C0A3 - - - - ; light0=light0*transpose(modelworld) - 459 D1:C0A3 21 12 08 E3 ld hl, vxLight0 - 460 D1:C0A7 11 E6 BD D1 ld de, vxLight0Cache - 461 D1:C0AB 01 0A 00 00 ld bc, VX_LIGHT_SIZE - 462 D1:C0AF ED B0 - - ldir - 463 D1:C0B1 - - - - ; do light*matrix (hl) = (iy)*(ix) - 464 D1:C0B1 21 12 08 E3 ld hl, vxLight0 - 465 D1:C0B5 FD 21 E6 BD + 467 D1:C0BB CD F2 AC D1 call vxMatrixTranspose + 468 D1:C0BF - - - - ; light0cache=light0 + 469 D1:C0BF - - - - ; light0=light0*transpose(modelworld) + 470 D1:C0BF 21 12 08 E3 ld hl, vxLight0 + 471 D1:C0C3 11 79 BD D1 ld de, vxLight0Cache + 472 D1:C0C7 01 0A 00 00 ld bc, VX_LIGHT_SIZE + 473 D1:C0CB ED B0 - - ldir + 474 D1:C0CD - - - - ; do light*matrix (hl) = (iy)*(ix) + 475 D1:C0CD 21 12 08 E3 ld hl, vxLight0 + 476 D1:C0D1 FD 21 79 BD D1 - - - ld iy, vxLight0Cache - 466 D1:C0BA CD 84 AD D1 call vxMatrixLightning - 467 D1:C0BE - - - - ; load up shader data - 468 D1:C0BE DD 21 00 08 + 477 D1:C0D6 CD 17 AD D1 call vxMatrixLightning + 478 D1:C0DA - - - - ; load up shader data + 479 D1:C0DA DD 21 00 08 E3 - - - ld ix, VX_VERTEX_SHADER_DATA - 469 D1:C0C3 FD E1 - - pop iy - 470 D1:C0C5 - - - - ; iy = source, ix = matrix - 471 D1:C0C5 FD 7E 00 - ld a, (iy+0) - 472 D1:C0C8 FD 07 01 - ld bc, (iy+1) - 473 D1:C0CB ED 33 03 - lea iy, iy+3 - 474 D1:C0CE E6 08 - - and VX_VERTEX_BOX - 475 D1:C0D0 C4 45 C1 D1 call nz, vxVertexStreamBox - 476 D1:C0D4 D1 - - - pop de - 477 D1:C0D5 D8 - - - ret c - 478 D1:C0D6 - - - - ; iy+0 are options, so check those. Here, only bounding box is interesting. - 479 D1:C0D6 79 - - - ld a, c - 480 D1:C0D7 0B - - - dec bc - 481 D1:C0D8 04 - - - inc b - 482 D1:C0D9 48 - - - ld c, b - 483 D1:C0DA 47 - - - ld b, a - 484 D1:C0DB - - - - ; de = cache, iy = source, ix = matrix, bc = size - 485 D1:C0DB - - - - vxCmdStreamLoop: - 486 D1:C0DB C5 - - - push bc - 487 D1:C0DC - - - - ; read first source value, if value=32768, then compute bone - 488 D1:C0DC FD 07 00 - ld bc, (iy+0) - 489 D1:C0DF 78 - - - ld a, b - 490 D1:C0E0 EE 80 - - xor VX_ANIMATION_BONE/256 - 491 D1:C0E2 B1 - - - or a, c - 492 D1:C0E3 28 0C - - jr z, vxCmdComputeBone - 493 D1:C0E5 - - - - ; wasn't a bone in source, so read vertex - 494 D1:C0E5 - - - - ; call vertex shader - 495 D1:C0E5 CD 1C 08 E3 call vxVertexShader - 496 D1:C0E9 - - - - vxCmdStreamLoopBack: - 497 D1:C0E9 C1 - - - pop bc - 498 D1:C0EA 10 EF - - djnz vxCmdStreamLoop - 499 D1:C0EC 0D - - - dec c - 500 D1:C0ED 20 EC - - jr nz, vxCmdStreamLoop - 501 D1:C0EF B7 - - - or a, a - 502 D1:C0F0 C9 - - - ret - 503 D1:C0F1 - - - - vxCmdComputeBone: - 504 D1:C0F1 - - - - ; more complex stuff here. Need to restore initial matrix & do a multiplication with the correct bone key matrix - 505 D1:C0F1 - - - - ; once done, only advance in the source, not the cache - 506 D1:C0F1 D5 - - - push de - 507 D1:C0F2 ED 33 03 - lea iy, iy+3 - 508 D1:C0F5 FD E5 - - push iy - 509 D1:C0F7 3A F0 BD D1 ld a, (vxKeyAnimation) - 510 D1:C0FB 5F - - - ld e, a - 511 D1:C0FC 16 0F - - ld d, VX_ANIMATION_MATRIX_SIZE - 512 D1:C0FE ED 5C - - mlt de - 513 D1:C100 FD 19 - - add iy, de ; correct animation matrix - 514 D1:C102 - - - - ; modelview = bonemodel*modelview - 515 D1:C102 21 00 08 E3 ld hl, vxModelView - 516 D1:C106 DD 21 B0 BD + 480 D1:C0DF FD E1 - - pop iy + 481 D1:C0E1 - - - - ; iy = source, ix = matrix + 482 D1:C0E1 FD 7E 00 - ld a, (iy+0) + 483 D1:C0E4 FD 07 01 - ld bc, (iy+1) + 484 D1:C0E7 ED 33 03 - lea iy, iy+3 + 485 D1:C0EA E6 08 - - and VX_VERTEX_BOX + 486 D1:C0EC C4 61 C1 D1 call nz, vxVertexStreamBox + 487 D1:C0F0 D1 - - - pop de + 488 D1:C0F1 D8 - - - ret c + 489 D1:C0F2 - - - - ; iy+0 are options, so check those. Here, only bounding box is interesting. + 490 D1:C0F2 79 - - - ld a, c + 491 D1:C0F3 0B - - - dec bc + 492 D1:C0F4 04 - - - inc b + 493 D1:C0F5 48 - - - ld c, b + 494 D1:C0F6 47 - - - ld b, a + 495 D1:C0F7 - - - - ; de = cache, iy = source, ix = matrix, bc = size + 496 D1:C0F7 - - - - vxCmdStreamLoop: + 497 D1:C0F7 C5 - - - push bc + 498 D1:C0F8 - - - - ; read first source value, if value=32768, then compute bone + 499 D1:C0F8 FD 07 00 - ld bc, (iy+0) + 500 D1:C0FB 78 - - - ld a, b + 501 D1:C0FC EE 80 - - xor VX_ANIMATION_BONE/256 + 502 D1:C0FE B1 - - - or a, c + 503 D1:C0FF 28 0C - - jr z, vxCmdComputeBone + 504 D1:C101 - - - - ; wasn't a bone in source, so read vertex + 505 D1:C101 - - - - ; call vertex shader + 506 D1:C101 CD 1C 08 E3 call vxVertexShader + 507 D1:C105 - - - - vxCmdStreamLoopBack: + 508 D1:C105 C1 - - - pop bc + 509 D1:C106 10 EF - - djnz vxCmdStreamLoop + 510 D1:C108 0D - - - dec c + 511 D1:C109 20 EC - - jr nz, vxCmdStreamLoop + 512 D1:C10B B7 - - - or a, a + 513 D1:C10C C9 - - - ret + 514 D1:C10D - - - - vxCmdComputeBone: + 515 D1:C10D - - - - ; more complex stuff here. Need to restore initial matrix & do a multiplication with the correct bone key matrix + 516 D1:C10D - - - - ; once done, only advance in the source, not the cache + 517 D1:C10D D5 - - - push de + 518 D1:C10E ED 33 03 - lea iy, iy+3 + 519 D1:C111 FD E5 - - push iy + 520 D1:C113 3A 83 BD D1 ld a, (vxKeyAnimation) + 521 D1:C117 5F - - - ld e, a + 522 D1:C118 16 0F - - ld d, VX_ANIMATION_MATRIX_SIZE + 523 D1:C11A ED 5C - - mlt de + 524 D1:C11C FD 19 - - add iy, de ; correct animation matrix + 525 D1:C11E - - - - ; modelview = bonemodel*modelview + 526 D1:C11E 21 00 08 E3 ld hl, vxModelView + 527 D1:C122 DD 21 43 BD D1 - - - ld ix, vxModelViewCache - 517 D1:C10B CD 3C AD D1 call vxMatrixTransform ; (hl)=(iy)*(ix) - 518 D1:C10F - - - - ; I have the correct modelview matrix in shader cache area - 519 D1:C10F - - - - ; next one is reduced matrix without translation, since it will only be a direction vector mlt. However, the light vector position also need to be transformed by the transposed matrix - 520 D1:C10F - - - - ; light0 = light0cache*transpose(bonemodel*modelworld) - 521 D1:C10F DD 21 C2 BD + 528 D1:C127 CD CF AC D1 call vxMatrixTransform ; (hl)=(iy)*(ix) + 529 D1:C12B - - - - ; I have the correct modelview matrix in shader cache area + 530 D1:C12B - - - - ; next one is reduced matrix without translation, since it will only be a direction vector mlt. However, the light vector position also need to be transformed by the transposed matrix + 531 D1:C12B - - - - ; light0 = light0cache*transpose(bonemodel*modelworld) + 532 D1:C12B DD 21 55 BD D1 - - - ld ix, vxModelWorld - 522 D1:C114 ED 22 12 - lea hl, ix+VX_MATRIX_SIZE - 523 D1:C117 CD D9 AC D1 call vxMatrixMlt - 524 D1:C11B ED 32 12 - lea ix, ix+VX_MATRIX_SIZE - 525 D1:C11E CD 5F AD D1 call vxMatrixTranspose - 526 D1:C122 21 12 08 E3 ld hl, vxLight0 - 527 D1:C126 FD 21 E6 BD + 533 D1:C130 ED 22 12 - lea hl, ix+VX_MATRIX_SIZE + 534 D1:C133 CD 6C AC D1 call vxMatrixMlt + 535 D1:C137 ED 32 12 - lea ix, ix+VX_MATRIX_SIZE + 536 D1:C13A CD F2 AC D1 call vxMatrixTranspose + 537 D1:C13E 21 12 08 E3 ld hl, vxLight0 + 538 D1:C142 FD 21 79 BD D1 - - - ld iy, vxLight0Cache - 528 D1:C12B CD 84 AD D1 call vxMatrixLightning - 529 D1:C12F FD E1 - - pop iy - 530 D1:C131 FD 7E FF - ld a, (iy-1) - 531 D1:C134 5F - - - ld e, a - 532 D1:C135 16 0F - - ld d, VX_ANIMATION_MATRIX_SIZE - 533 D1:C137 ED 5C - - mlt de - 534 D1:C139 FD 19 - - add iy, de - 535 D1:C13B D1 - - - pop de - 536 D1:C13C C1 - - - pop bc - 537 D1:C13D DD 21 00 08 + 539 D1:C147 CD 17 AD D1 call vxMatrixLightning + 540 D1:C14B FD E1 - - pop iy + 541 D1:C14D FD 7E FF - ld a, (iy-1) + 542 D1:C150 5F - - - ld e, a + 543 D1:C151 16 0F - - ld d, VX_ANIMATION_MATRIX_SIZE + 544 D1:C153 ED 5C - - mlt de + 545 D1:C155 FD 19 - - add iy, de + 546 D1:C157 D1 - - - pop de + 547 D1:C158 C1 - - - pop bc + 548 D1:C159 DD 21 00 08 E3 - - - ld ix, VX_VERTEX_SHADER_DATA - 538 D1:C142 18 97 - - jr vxCmdStreamLoop - 539 D1:C144 - - - - vxVertexBoxCode: - 540 D1:C144 00 - - - .db 0 - 541 D1:C145 - - - - vxVertexStreamBox: - 542 D1:C145 C5 - - - push bc - 543 D1:C146 - - - - ; check the bounding box - 544 D1:C146 11 3D B5 D1 ld de, VX_VERTEX_POOL - 545 D1:C14A 3E FF - - ld a, $FF - 546 D1:C14C 32 44 C1 D1 ld (vxVertexBoxCode), a - 547 D1:C150 06 08 - - ld b, 8 - 548 D1:C152 - - - - vxVertexBoxLoop: - 549 D1:C152 C5 - - - push bc - 550 D1:C153 FD 07 00 - ld bc, (iy+0) - 551 D1:C156 CD 1C 08 E3 call vxVertexShader - 552 D1:C15A ED 33 FD - lea iy, iy-3 - 553 D1:C15D 21 F0 FF FF ld hl, -16 - 554 D1:C161 19 - - - add hl, de - 555 D1:C162 3A 44 C1 D1 ld a, (vxVertexBoxCode) - 556 D1:C166 A6 - - - and a, (hl) - 557 D1:C167 32 44 C1 D1 ld (vxVertexBoxCode), a - 558 D1:C16B C1 - - - pop bc - 559 D1:C16C 10 E4 - - djnz vxVertexBoxLoop - 560 D1:C16E C1 - - - pop bc - 561 D1:C16F B7 - - - or a, a - 562 D1:C170 C8 - - - ret z - 563 D1:C171 37 - - - scf - 564 D1:C172 C9 - - - ret - 565 D1:C173 - - - - - 566 D1:C173 - - - - #comment - 567 D1:C173 vxCmdStream: - 568 D1:C173 ; hl - vertex source, de - vertex cache, ix matrix, support animation, if animation : use vxKeyAnimation - 569 D1:C173 ; vertex source have size at the begining - 570 D1:C173 ; copy matrix into vxWorldView matrix & ModelView matrix - 571 D1:C173 push de - 572 D1:C173 push hl - 573 D1:C173 - 574 D1:C173 ; load shader first - 575 D1:C173 - 576 D1:C173 ld hl, VX_GLOBAL_SHADER_COPY - 577 D1:C173 ld de, VX_VRAM - 578 D1:C173 ld bc, VX_GLOBAL_SHADER_SIZE - 579 D1:C173 ldir - 580 D1:C173 - 581 D1:C173 lea hl, ix+0 - 582 D1:C173 ld de, vxWorldView - 583 D1:C173 ld bc, VX_MATRIX_SIZE - 584 D1:C173 ldir - 585 D1:C173 - 586 D1:C173 lea hl, ix+0 - 587 D1:C173 ld de, vxModelView - 588 D1:C173 ld bc, VX_MATRIX_SIZE - 589 D1:C173 ldir - 590 D1:C173 ;; ld ix, vxModelView - 591 D1:C173 ; - 592 D1:C173 ld ix, VX_GLOBAL_SHADER_DATA - 593 D1:C173 ; compute transpose - 594 D1:C173 - 595 D1:C173 pop hl - 596 D1:C173 pop de - 597 D1:C173 - 598 D1:C173 ld bc, (hl) - 599 D1:C173 inc hl \ inc hl \ inc hl - 600 D1:C173 push hl - 601 D1:C173 pop iy - 602 D1:C173 ld a, c - 603 D1:C173 dec bc - 604 D1:C173 inc b - 605 D1:C173 ld c, b - 606 D1:C173 ld b, a - 607 D1:C173 - 608 D1:C173 ; de = cache, iy = source, ix = matrix, bc = size - 609 D1:C173 vxCmdStreamLoop0: - 610 D1:C173 push bc - 611 D1:C173 ; read first source value, if value=32768, then compute bone - 612 D1:C173 ld bc, (iy+0) - 613 D1:C173 ;; ld hl, VX_ANIMATION_BONE - 614 D1:C173 ;; or a, a - 615 D1:C173 ;; sbc.s hl, bc - 616 D1:C173 - 617 D1:C173 ld a, b - 618 D1:C173 xor VX_ANIMATION_BONE/256 - 619 D1:C173 or a, c - 620 D1:C173 - 621 D1:C173 jr z, vxCmdStreamBone - 622 D1:C173 ; wasn't a bone in source, so read vertex - 623 D1:C173 ; transform vertex ! Take source iy*ix then copy value to cache - 624 D1:C173 call vxVertexShader - 625 D1:C173 vxCmdStreamLoopBack: - 626 D1:C173 pop bc - 627 D1:C173 djnz vxCmdStreamLoop0 - 628 D1:C173 dec c - 629 D1:C173 jr nz, vxCmdStreamLoop0 - 630 D1:C173 ret - 631 D1:C173 vxCmdStreamBone: - 632 D1:C173 ; more complex stuff here. Need to restore initial matrix & do a multiplication with the correct bone key matrix - 633 D1:C173 ; once done, only advance in the source, not the cache - 634 D1:C173 push de - 635 D1:C173 ; matrix: - 636 D1:C173 lea ix, iy+3 - 637 D1:C173 ld a, (vxKeyAnimation) - 638 D1:C173 ld e, a - 639 D1:C173 ld d, VX_ANIMATION_MATRIX_SIZE - 640 D1:C173 mlt de - 641 D1:C173 add ix, de ; correct animation matrix - 642 D1:C173 ; todo : do current matrix * this matrix - 643 D1:C173 push iy - 644 D1:C173 ; first transform the translation by the world matrix - 645 D1:C173 push ix - 646 D1:C173 lea iy, ix+9 ; load translation part - 647 D1:C173 ld ix, vxWorldView - 648 D1:C173 call vxCmdTransform - 649 D1:C173 ; copy back data - 650 D1:C173 ld hl, vxPosition - 651 D1:C173 ld de, vxModelView+9 - 652 D1:C173 ld bc, 9 - 653 D1:C173 ldir - 654 D1:C173 pop iy - 655 D1:C173 ld ix, vxWorldView - 656 D1:C173 ld hl, vxModelView - 657 D1:C173 ; hl=iy*ix - 658 D1:C173 call IMatrixMlt - 659 D1:C173 - 660 D1:C173 ld ix, vxModelView ; concatenation of modelWorld and WorldView - 661 D1:C173 - 662 D1:C173 pop iy - 663 D1:C173 ld a, (iy+2) ; number of matrix, advance - 664 D1:C173 ld e, a - 665 D1:C173 ld d, VX_ANIMATION_MATRIX_SIZE - 666 D1:C173 mlt de - 667 D1:C173 add iy, de - 668 D1:C173 lea iy, iy+3 - 669 D1:C173 pop de - 670 D1:C173 pop bc - 671 D1:C173 jp vxCmdStreamLoop0 - 672 D1:C173 #endcomment - 673 D1:C173 - - - - - 674 D1:C173 - - - - vxCmdDepthSort: - 675 D1:C173 C5 - - - push bc - 676 D1:C174 01 FF 01 00 ld bc, 511 - 677 D1:C178 21 FF 33 D0 ld hl, VX_DEPTH_BUCKET+511 - 678 D1:C17C 11 FE 33 D0 ld de, VX_DEPTH_BUCKET+510 - 679 D1:C180 36 00 - - ld (hl), $00 - 680 D1:C182 ED B8 - - lddr - 681 D1:C184 C1 - - - pop bc - 682 D1:C185 - - - - ; sort the current submission queue - 683 D1:C185 ED 4B A7 BD + 549 D1:C15E 18 97 - - jr vxCmdStreamLoop + 550 D1:C160 - - - - vxVertexBoxCode: + 551 D1:C160 00 - - - .db 0 + 552 D1:C161 - - - - vxVertexStreamBox: + 553 D1:C161 C5 - - - push bc + 554 D1:C162 - - - - ; check the bounding box + 555 D1:C162 11 D0 B4 D1 ld de, VX_VERTEX_POOL + 556 D1:C166 3E FF - - ld a, $FF + 557 D1:C168 32 60 C1 D1 ld (vxVertexBoxCode), a + 558 D1:C16C 06 08 - - ld b, 8 + 559 D1:C16E - - - - vxVertexBoxLoop: + 560 D1:C16E C5 - - - push bc + 561 D1:C16F FD 07 00 - ld bc, (iy+0) + 562 D1:C172 CD 1C 08 E3 call vxVertexShader + 563 D1:C176 ED 33 FD - lea iy, iy-3 + 564 D1:C179 21 F0 FF FF ld hl, -16 + 565 D1:C17D 19 - - - add hl, de + 566 D1:C17E 3A 60 C1 D1 ld a, (vxVertexBoxCode) + 567 D1:C182 A6 - - - and a, (hl) + 568 D1:C183 32 60 C1 D1 ld (vxVertexBoxCode), a + 569 D1:C187 C1 - - - pop bc + 570 D1:C188 10 E4 - - djnz vxVertexBoxLoop + 571 D1:C18A C1 - - - pop bc + 572 D1:C18B B7 - - - or a, a + 573 D1:C18C C8 - - - ret z + 574 D1:C18D 37 - - - scf + 575 D1:C18E C9 - - - ret + 576 D1:C18F - - - - + 577 D1:C18F - - - - #comment + 578 D1:C18F vxCmdStream: + 579 D1:C18F ; hl - vertex source, de - vertex cache, ix matrix, support animation, if animation : use vxKeyAnimation + 580 D1:C18F ; vertex source have size at the begining + 581 D1:C18F ; copy matrix into vxWorldView matrix & ModelView matrix + 582 D1:C18F push de + 583 D1:C18F push hl + 584 D1:C18F + 585 D1:C18F ; load shader first + 586 D1:C18F + 587 D1:C18F ld hl, VX_GLOBAL_SHADER_COPY + 588 D1:C18F ld de, VX_VRAM + 589 D1:C18F ld bc, VX_GLOBAL_SHADER_SIZE + 590 D1:C18F ldir + 591 D1:C18F + 592 D1:C18F lea hl, ix+0 + 593 D1:C18F ld de, vxWorldView + 594 D1:C18F ld bc, VX_MATRIX_SIZE + 595 D1:C18F ldir + 596 D1:C18F + 597 D1:C18F lea hl, ix+0 + 598 D1:C18F ld de, vxModelView + 599 D1:C18F ld bc, VX_MATRIX_SIZE + 600 D1:C18F ldir + 601 D1:C18F ;; ld ix, vxModelView + 602 D1:C18F ; + 603 D1:C18F ld ix, VX_GLOBAL_SHADER_DATA + 604 D1:C18F ; compute transpose + 605 D1:C18F + 606 D1:C18F pop hl + 607 D1:C18F pop de + 608 D1:C18F + 609 D1:C18F ld bc, (hl) + 610 D1:C18F inc hl \ inc hl \ inc hl + 611 D1:C18F push hl + 612 D1:C18F pop iy + 613 D1:C18F ld a, c + 614 D1:C18F dec bc + 615 D1:C18F inc b + 616 D1:C18F ld c, b + 617 D1:C18F ld b, a + 618 D1:C18F + 619 D1:C18F ; de = cache, iy = source, ix = matrix, bc = size + 620 D1:C18F vxCmdStreamLoop0: + 621 D1:C18F push bc + 622 D1:C18F ; read first source value, if value=32768, then compute bone + 623 D1:C18F ld bc, (iy+0) + 624 D1:C18F ;; ld hl, VX_ANIMATION_BONE + 625 D1:C18F ;; or a, a + 626 D1:C18F ;; sbc.s hl, bc + 627 D1:C18F + 628 D1:C18F ld a, b + 629 D1:C18F xor VX_ANIMATION_BONE/256 + 630 D1:C18F or a, c + 631 D1:C18F + 632 D1:C18F jr z, vxCmdStreamBone + 633 D1:C18F ; wasn't a bone in source, so read vertex + 634 D1:C18F ; transform vertex ! Take source iy*ix then copy value to cache + 635 D1:C18F call vxVertexShader + 636 D1:C18F vxCmdStreamLoopBack: + 637 D1:C18F pop bc + 638 D1:C18F djnz vxCmdStreamLoop0 + 639 D1:C18F dec c + 640 D1:C18F jr nz, vxCmdStreamLoop0 + 641 D1:C18F ret + 642 D1:C18F vxCmdStreamBone: + 643 D1:C18F ; more complex stuff here. Need to restore initial matrix & do a multiplication with the correct bone key matrix + 644 D1:C18F ; once done, only advance in the source, not the cache + 645 D1:C18F push de + 646 D1:C18F ; matrix: + 647 D1:C18F lea ix, iy+3 + 648 D1:C18F ld a, (vxKeyAnimation) + 649 D1:C18F ld e, a + 650 D1:C18F ld d, VX_ANIMATION_MATRIX_SIZE + 651 D1:C18F mlt de + 652 D1:C18F add ix, de ; correct animation matrix + 653 D1:C18F ; todo : do current matrix * this matrix + 654 D1:C18F push iy + 655 D1:C18F ; first transform the translation by the world matrix + 656 D1:C18F push ix + 657 D1:C18F lea iy, ix+9 ; load translation part + 658 D1:C18F ld ix, vxWorldView + 659 D1:C18F call vxCmdTransform + 660 D1:C18F ; copy back data + 661 D1:C18F ld hl, vxPosition + 662 D1:C18F ld de, vxModelView+9 + 663 D1:C18F ld bc, 9 + 664 D1:C18F ldir + 665 D1:C18F pop iy + 666 D1:C18F ld ix, vxWorldView + 667 D1:C18F ld hl, vxModelView + 668 D1:C18F ; hl=iy*ix + 669 D1:C18F call IMatrixMlt + 670 D1:C18F + 671 D1:C18F ld ix, vxModelView ; concatenation of modelWorld and WorldView + 672 D1:C18F + 673 D1:C18F pop iy + 674 D1:C18F ld a, (iy+2) ; number of matrix, advance + 675 D1:C18F ld e, a + 676 D1:C18F ld d, VX_ANIMATION_MATRIX_SIZE + 677 D1:C18F mlt de + 678 D1:C18F add iy, de + 679 D1:C18F lea iy, iy+3 + 680 D1:C18F pop de + 681 D1:C18F pop bc + 682 D1:C18F jp vxCmdStreamLoop0 + 683 D1:C18F #endcomment + 684 D1:C18F - - - - + 685 D1:C18F - - - - vxCmdDepthSort: + 686 D1:C18F C5 - - - push bc + 687 D1:C190 01 FF 01 00 ld bc, 511 + 688 D1:C194 21 FF 33 D0 ld hl, VX_DEPTH_BUCKET+511 + 689 D1:C198 11 FE 33 D0 ld de, VX_DEPTH_BUCKET+510 + 690 D1:C19C 36 00 - - ld (hl), $00 + 691 D1:C19E ED B8 - - lddr + 692 D1:C1A0 C1 - - - pop bc + 693 D1:C1A1 - - - - ; sort the current submission queue + 694 D1:C1A1 ED 4B 3A BD D1 - - - ld bc, (vxGeometrySize) - 684 D1:C18A 78 - - - ld a, b - 685 D1:C18B B1 - - - or c - 686 D1:C18C C8 - - - ret z - 687 D1:C18D FD 21 00 00 + 695 D1:C1A6 78 - - - ld a, b + 696 D1:C1A7 B1 - - - or c + 697 D1:C1A8 C8 - - - ret z + 698 D1:C1A9 FD 21 00 00 D1 - - - ld iy, VX_GEOMETRY_QUEUE - 688 D1:C192 DD 2A 14 00 + 699 D1:C1AE DD 2A 14 00 E3 - - - ld ix, (vxDepthSortTemp) - 689 D1:C197 - - - - - 690 D1:C197 79 - - - ld a, c - 691 D1:C198 0B - - - dec bc - 692 D1:C199 04 - - - inc b - 693 D1:C19A 48 - - - ld c, b - 694 D1:C19B 47 - - - ld b, a - 695 D1:C19C - - - - vxCmdDepthCompute: - 696 D1:C19C C5 - - - push bc - 697 D1:C19D FD E5 - - push iy - 698 D1:C19F 21 00 BE D1 ld hl, VX_BATCH_DATA - 699 D1:C1A3 FD 6E 00 - ld l, (iy+0) - 700 D1:C1A6 7D - - - ld a, l ; batch index - 701 D1:C1A7 23 - - - inc hl - 702 D1:C1A8 ED 07 - - ld bc, (hl) ; grab cache, important - 703 D1:C1AA FD 37 01 - ld iy, (iy+1) ; this is adress of vertex index - 704 D1:C1AD - - - - - 705 D1:C1AD DD E5 - - push ix - 706 D1:C1AF FD 31 00 - ld ix, (iy+0) - 707 D1:C1B2 DD 09 - - add ix, bc - 708 D1:C1B4 DD 27 0D - ld hl, (ix+13) - 709 D1:C1B7 FD 31 03 - ld ix, (iy+3) - 710 D1:C1BA DD 09 - - add ix, bc ; add cache adress of batch - 711 D1:C1BC DD 17 0D - ld de, (ix+13) - 712 D1:C1BF 19 - - - add hl, de ; add up Z coordinate - 713 D1:C1C0 FD 31 06 - ld ix, (iy+6) - 714 D1:C1C3 DD 09 - - add ix, bc - 715 D1:C1C5 DD 17 0D - ld de, (ix+13) - 716 D1:C1C8 B7 - - - or a, a - 717 D1:C1C9 ED 5A - - adc hl, de ; et voilà ! - 718 D1:C1CB - - - - ; check for <0 - 719 D1:C1CB F2 D2 C1 D1 jp p, vxCmdDepthPositive - 720 D1:C1CF B7 - - - or a, a - 721 D1:C1D0 ED 62 - - sbc hl, hl - 722 D1:C1D2 - - - - vxCmdDepthPositive: - 723 D1:C1D2 DD E1 - - pop ix - 724 D1:C1D4 - - - - - 725 D1:C1D4 - - - - ; write everything to tmp buffer - 726 D1:C1D4 DD 2F 00 - ld (ix+0), hl ; depth - 727 D1:C1D7 DD 3E 03 - ld (ix+3), iy ; adress - 728 D1:C1DA DD 77 06 - ld (ix+6), a ; batch id - 729 D1:C1DD ED 32 07 - lea ix, ix+7 - 730 D1:C1E0 - - - - ; fill depth bucket - 731 D1:C1E0 7D - - - ld a, l - 732 D1:C1E1 21 00 32 D0 ld hl, VX_DEPTH_BUCKET - 733 D1:C1E5 6F - - - ld l, a - 734 D1:C1E6 - - - - ; inc (hl) - 735 D1:C1E6 3E 07 - - ld a, 7 - 736 D1:C1E8 86 - - - add a, (hl) - 737 D1:C1E9 77 - - - ld (hl), a - 738 D1:C1EA - - - - ; nz - 739 D1:C1EA 30 02 - - jr nc, vxHSBDepthSkip - 740 D1:C1EC 24 - - - inc h - 741 D1:C1ED 34 - - - inc (hl) - 742 D1:C1EE - - - - vxHSBDepthSkip: - 743 D1:C1EE - - - - - 744 D1:C1EE FD E1 - - pop iy - 745 D1:C1F0 ED 33 04 - lea iy, iy+4 - 746 D1:C1F3 C1 - - - pop bc - 747 D1:C1F4 10 A6 - - djnz vxCmdDepthCompute - 748 D1:C1F6 0D - - - dec c - 749 D1:C1F7 20 A3 - - jr nz, vxCmdDepthCompute - 750 D1:C1F9 - - - - ; and now the sorting : apply a radix sort on the data (huge & complicate, constant speed per triangle of about 1300TStates) - 751 D1:C1F9 - - - - - 752 D1:C1F9 2A 14 00 E3 ld hl, (vxDepthSortTemp) - 753 D1:C1FD 22 E9 C2 D1 ld (vxCmdReadBuffer0), hl - 754 D1:C201 22 D4 C2 D1 ld (vxCmdWriteBuffer0), hl - 755 D1:C205 11 00 70 00 ld de, VX_MAX_TRIANGLE*7 - 756 D1:C209 19 - - - add hl, de - 757 D1:C20A 22 70 C2 D1 ld (vxCmdReadBuffer1), hl - 758 D1:C20E 22 5B C2 D1 ld (vxCmdWriteBuffer1), hl - 759 D1:C212 - - - - - 760 D1:C212 - - - - ; restore index position in array - 761 D1:C212 21 FF 33 D0 ld hl, VX_DEPTH_BUCKET+511 - 762 D1:C216 56 - - - ld d, (hl) - 763 D1:C217 25 - - - dec h - 764 D1:C218 5E - - - ld e, (hl) - 765 D1:C219 2D - - - dec l - 766 D1:C21A - - - - vxCmdRestoreBucketLoop0: - 767 D1:C21A 4E - - - ld c, (hl) - 768 D1:C21B 24 - - - inc h - 769 D1:C21C 46 - - - ld b, (hl) - 770 D1:C21D EB - - - ex de, hl - 771 D1:C21E 09 - - - add hl, bc - 772 D1:C21F EB - - - ex de, hl - 773 D1:C220 72 - - - ld (hl), d - 774 D1:C221 25 - - - dec h - 775 D1:C222 73 - - - ld (hl), e - 776 D1:C223 2D - - - dec l - 777 D1:C224 20 F4 - - jr nz, vxCmdRestoreBucketLoop0 - 778 D1:C226 4E - - - ld c, (hl) - 779 D1:C227 24 - - - inc h - 780 D1:C228 46 - - - ld b, (hl) - 781 D1:C229 EB - - - ex de, hl - 782 D1:C22A 09 - - - add hl, bc - 783 D1:C22B EB - - - ex de, hl - 784 D1:C22C 72 - - - ld (hl), d - 785 D1:C22D 25 - - - dec h - 786 D1:C22E 73 - - - ld (hl), e - 787 D1:C22F - - - - ; and copy to the correct position - 788 D1:C22F ED 32 F9 - lea ix, ix-7 - 789 D1:C232 - - - - ; reset bcu - 790 D1:C232 52 03 - - inc.sil bc - 791 D1:C234 42 - - - ld b, d - 792 D1:C235 4B - - - ld c, e - 793 D1:C236 - - - - - 794 D1:C236 ED 4B A7 BD + 700 D1:C1B3 - - - - + 701 D1:C1B3 79 - - - ld a, c + 702 D1:C1B4 0B - - - dec bc + 703 D1:C1B5 04 - - - inc b + 704 D1:C1B6 48 - - - ld c, b + 705 D1:C1B7 47 - - - ld b, a + 706 D1:C1B8 - - - - vxCmdDepthCompute: + 707 D1:C1B8 C5 - - - push bc + 708 D1:C1B9 FD E5 - - push iy + 709 D1:C1BB 21 00 BE D1 ld hl, VX_BATCH_DATA + 710 D1:C1BF FD 6E 00 - ld l, (iy+0) + 711 D1:C1C2 7D - - - ld a, l ; batch index + 712 D1:C1C3 23 - - - inc hl + 713 D1:C1C4 ED 07 - - ld bc, (hl) ; grab cache, important + 714 D1:C1C6 FD 37 01 - ld iy, (iy+1) ; this is adress of vertex index + 715 D1:C1C9 - - - - + 716 D1:C1C9 DD E5 - - push ix + 717 D1:C1CB FD 31 00 - ld ix, (iy+0) + 718 D1:C1CE DD 09 - - add ix, bc + 719 D1:C1D0 DD 27 0D - ld hl, (ix+13) + 720 D1:C1D3 FD 31 03 - ld ix, (iy+3) + 721 D1:C1D6 DD 09 - - add ix, bc ; add cache adress of batch + 722 D1:C1D8 DD 17 0D - ld de, (ix+13) + 723 D1:C1DB 19 - - - add hl, de ; add up Z coordinate + 724 D1:C1DC FD 31 06 - ld ix, (iy+6) + 725 D1:C1DF DD 09 - - add ix, bc + 726 D1:C1E1 DD 17 0D - ld de, (ix+13) + 727 D1:C1E4 B7 - - - or a, a + 728 D1:C1E5 ED 5A - - adc hl, de ; et voilà ! + 729 D1:C1E7 - - - - ; check for <0 + 730 D1:C1E7 F2 EE C1 D1 jp p, vxCmdDepthPositive + 731 D1:C1EB B7 - - - or a, a + 732 D1:C1EC ED 62 - - sbc hl, hl + 733 D1:C1EE - - - - vxCmdDepthPositive: + 734 D1:C1EE DD E1 - - pop ix + 735 D1:C1F0 - - - - + 736 D1:C1F0 - - - - ; write everything to tmp buffer + 737 D1:C1F0 DD 2F 00 - ld (ix+0), hl ; depth + 738 D1:C1F3 DD 3E 03 - ld (ix+3), iy ; adress + 739 D1:C1F6 DD 77 06 - ld (ix+6), a ; batch id + 740 D1:C1F9 ED 32 07 - lea ix, ix+7 + 741 D1:C1FC - - - - ; fill depth bucket + 742 D1:C1FC 7D - - - ld a, l + 743 D1:C1FD 21 00 32 D0 ld hl, VX_DEPTH_BUCKET + 744 D1:C201 6F - - - ld l, a + 745 D1:C202 - - - - ; inc (hl) + 746 D1:C202 3E 07 - - ld a, 7 + 747 D1:C204 86 - - - add a, (hl) + 748 D1:C205 77 - - - ld (hl), a + 749 D1:C206 - - - - ; nz + 750 D1:C206 30 02 - - jr nc, vxHSBDepthSkip + 751 D1:C208 24 - - - inc h + 752 D1:C209 34 - - - inc (hl) + 753 D1:C20A - - - - vxHSBDepthSkip: + 754 D1:C20A - - - - + 755 D1:C20A FD E1 - - pop iy + 756 D1:C20C ED 33 04 - lea iy, iy+4 + 757 D1:C20F C1 - - - pop bc + 758 D1:C210 10 A6 - - djnz vxCmdDepthCompute + 759 D1:C212 0D - - - dec c + 760 D1:C213 20 A3 - - jr nz, vxCmdDepthCompute + 761 D1:C215 - - - - ; and now the sorting : apply a radix sort on the data (huge & complicate, constant speed per triangle of about 1300TStates) + 762 D1:C215 - - - - + 763 D1:C215 2A 14 00 E3 ld hl, (vxDepthSortTemp) + 764 D1:C219 22 05 C3 D1 ld (vxCmdReadBuffer0), hl + 765 D1:C21D 22 F0 C2 D1 ld (vxCmdWriteBuffer0), hl + 766 D1:C221 11 00 70 00 ld de, VX_MAX_TRIANGLE*7 + 767 D1:C225 19 - - - add hl, de + 768 D1:C226 22 8C C2 D1 ld (vxCmdReadBuffer1), hl + 769 D1:C22A 22 77 C2 D1 ld (vxCmdWriteBuffer1), hl + 770 D1:C22E - - - - + 771 D1:C22E - - - - ; restore index position in array + 772 D1:C22E 21 FF 33 D0 ld hl, VX_DEPTH_BUCKET+511 + 773 D1:C232 56 - - - ld d, (hl) + 774 D1:C233 25 - - - dec h + 775 D1:C234 5E - - - ld e, (hl) + 776 D1:C235 2D - - - dec l + 777 D1:C236 - - - - vxCmdRestoreBucketLoop0: + 778 D1:C236 4E - - - ld c, (hl) + 779 D1:C237 24 - - - inc h + 780 D1:C238 46 - - - ld b, (hl) + 781 D1:C239 EB - - - ex de, hl + 782 D1:C23A 09 - - - add hl, bc + 783 D1:C23B EB - - - ex de, hl + 784 D1:C23C 72 - - - ld (hl), d + 785 D1:C23D 25 - - - dec h + 786 D1:C23E 73 - - - ld (hl), e + 787 D1:C23F 2D - - - dec l + 788 D1:C240 20 F4 - - jr nz, vxCmdRestoreBucketLoop0 + 789 D1:C242 4E - - - ld c, (hl) + 790 D1:C243 24 - - - inc h + 791 D1:C244 46 - - - ld b, (hl) + 792 D1:C245 EB - - - ex de, hl + 793 D1:C246 09 - - - add hl, bc + 794 D1:C247 EB - - - ex de, hl + 795 D1:C248 72 - - - ld (hl), d + 796 D1:C249 25 - - - dec h + 797 D1:C24A 73 - - - ld (hl), e + 798 D1:C24B - - - - ; and copy to the correct position + 799 D1:C24B ED 32 F9 - lea ix, ix-7 + 800 D1:C24E - - - - ; reset bcu + 801 D1:C24E 52 03 - - inc.sil bc + 802 D1:C250 42 - - - ld b, d + 803 D1:C251 4B - - - ld c, e + 804 D1:C252 - - - - + 805 D1:C252 ED 4B 3A BD D1 - - - ld bc, (vxGeometrySize) - 795 D1:C23B - - - - - 796 D1:C23B 79 - - - ld a, c - 797 D1:C23C 0B - - - dec bc - 798 D1:C23D 04 - - - inc b - 799 D1:C23E 4F - - - ld c, a - 800 D1:C23F - - - - - 801 D1:C23F C5 - - - push bc - 802 D1:C240 C5 - - - push bc - 803 D1:C241 C5 - - - push bc - 804 D1:C242 C5 - - - push bc - 805 D1:C243 - - - - - 806 D1:C243 79 - - - ld a, c - 807 D1:C244 - - - - vxCmdFillBucketOuter0: - 808 D1:C244 C5 - - - push bc - 809 D1:C245 06 00 - - ld b, 0 - 810 D1:C247 - - - - vxCmdFillBucketInner0: - 811 D1:C247 21 07 32 D0 ld hl, VX_DEPTH_BUCKET+7 - 812 D1:C24B 4D - - - ld c, l - 813 D1:C24C DD 6E 00 - ld l, (ix+0) - 814 D1:C24F 5E - - - ld e, (hl) - 815 D1:C250 24 - - - inc h - 816 D1:C251 56 - - - ld d, (hl) - 817 D1:C252 - - - - ; dec de - 818 D1:C252 EB - - - ex de, hl - 819 D1:C253 52 ED 42 - sbc.s hl, bc - 820 D1:C256 EB - - - ex de, hl - 821 D1:C257 72 - - - ld (hl), d - 822 D1:C258 25 - - - dec h - 823 D1:C259 73 - - - ld (hl), e - 824 D1:C25A - - - - ; de*7+write_buffer - 825 D1:C25A - - - - ; ld h, c - 826 D1:C25A - - - - ; ld l, d - 827 D1:C25A - - - - ; ld d, c - 828 D1:C25A - - - - ; mlt hl - 829 D1:C25A - - - - ; mlt de - 830 D1:C25A - - - - ; ld h, l - 831 D1:C25A - - - - ; ld l, b - 832 D1:C25A - - - - ; add hl, de - 833 D1:C25A - - - - vxCmdWriteBuffer1=$+1 - 834 D1:C25A 21 00 00 00 ld hl, $0 - 835 D1:C25E 19 - - - add hl, de - 836 D1:C25F EB - - - ex de, hl - 837 D1:C260 ED 22 00 - lea hl, ix+0 - 838 D1:C263 ED B0 - - ldir - 839 D1:C265 ED 32 F9 - lea ix, ix-7 - 840 D1:C268 3D - - - dec a - 841 D1:C269 20 DC - - jr nz, vxCmdFillBucketInner0 - 842 D1:C26B C1 - - - pop bc - 843 D1:C26C 10 D6 - - djnz vxCmdFillBucketOuter0 - 844 D1:C26E - - - - - 845 D1:C26E - - - - vxCmdReadBuffer1=$+2 - 846 D1:C26E DD 21 00 00 + 806 D1:C257 - - - - + 807 D1:C257 79 - - - ld a, c + 808 D1:C258 0B - - - dec bc + 809 D1:C259 04 - - - inc b + 810 D1:C25A 4F - - - ld c, a + 811 D1:C25B - - - - + 812 D1:C25B C5 - - - push bc + 813 D1:C25C C5 - - - push bc + 814 D1:C25D C5 - - - push bc + 815 D1:C25E C5 - - - push bc + 816 D1:C25F - - - - + 817 D1:C25F 79 - - - ld a, c + 818 D1:C260 - - - - vxCmdFillBucketOuter0: + 819 D1:C260 C5 - - - push bc + 820 D1:C261 06 00 - - ld b, 0 + 821 D1:C263 - - - - vxCmdFillBucketInner0: + 822 D1:C263 21 07 32 D0 ld hl, VX_DEPTH_BUCKET+7 + 823 D1:C267 4D - - - ld c, l + 824 D1:C268 DD 6E 00 - ld l, (ix+0) + 825 D1:C26B 5E - - - ld e, (hl) + 826 D1:C26C 24 - - - inc h + 827 D1:C26D 56 - - - ld d, (hl) + 828 D1:C26E - - - - ; dec de + 829 D1:C26E EB - - - ex de, hl + 830 D1:C26F 52 ED 42 - sbc.s hl, bc + 831 D1:C272 EB - - - ex de, hl + 832 D1:C273 72 - - - ld (hl), d + 833 D1:C274 25 - - - dec h + 834 D1:C275 73 - - - ld (hl), e + 835 D1:C276 - - - - ; de*7+write_buffer + 836 D1:C276 - - - - ; ld h, c + 837 D1:C276 - - - - ; ld l, d + 838 D1:C276 - - - - ; ld d, c + 839 D1:C276 - - - - ; mlt hl + 840 D1:C276 - - - - ; mlt de + 841 D1:C276 - - - - ; ld h, l + 842 D1:C276 - - - - ; ld l, b + 843 D1:C276 - - - - ; add hl, de + 844 D1:C276 - - - - vxCmdWriteBuffer1=$+1 + 845 D1:C276 21 00 00 00 ld hl, $0 + 846 D1:C27A 19 - - - add hl, de + 847 D1:C27B EB - - - ex de, hl + 848 D1:C27C ED 22 00 - lea hl, ix+0 + 849 D1:C27F ED B0 - - ldir + 850 D1:C281 ED 32 F9 - lea ix, ix-7 + 851 D1:C284 3D - - - dec a + 852 D1:C285 20 DC - - jr nz, vxCmdFillBucketInner0 + 853 D1:C287 C1 - - - pop bc + 854 D1:C288 10 D6 - - djnz vxCmdFillBucketOuter0 + 855 D1:C28A - - - - + 856 D1:C28A - - - - vxCmdReadBuffer1=$+2 + 857 D1:C28A DD 21 00 00 00 - - - ld ix, $0 - 847 D1:C273 - - - - - 848 D1:C273 01 FF 01 00 ld bc, 511 - 849 D1:C277 21 FF 33 D0 ld hl, VX_DEPTH_BUCKET+511 - 850 D1:C27B 11 FE 33 D0 ld de, VX_DEPTH_BUCKET+510 - 851 D1:C27F 36 00 - - ld (hl), $00 - 852 D1:C281 ED B8 - - lddr - 853 D1:C283 - - - - ; restore size - 854 D1:C283 C1 - - - pop bc - 855 D1:C284 79 - - - ld a, c - 856 D1:C285 48 - - - ld c, b - 857 D1:C286 47 - - - ld b, a - 858 D1:C287 1E 07 - - ld e, 7 - 859 D1:C289 DD 6E 01 - ld l, (ix+1) - 860 D1:C28C 7B - - - ld a, e - 861 D1:C28D 86 - - - add a, (hl) - 862 D1:C28E 77 - - - ld (hl), a - 863 D1:C28F 30 03 - - jr nc, $+5 - 864 D1:C291 24 - - - inc h - 865 D1:C292 34 - - - inc (hl) - 866 D1:C293 25 - - - dec h - 867 D1:C294 ED 32 07 - lea ix, ix+7 - 868 D1:C297 10 F0 - - djnz $-14 - 869 D1:C299 0D - - - dec c - 870 D1:C29A 20 ED - - jr nz, $-17 - 871 D1:C29C 2E FF - - ld l, 255 - 872 D1:C29E 5E - - - ld e, (hl) - 873 D1:C29F 24 - - - inc h - 874 D1:C2A0 56 - - - ld d, (hl) - 875 D1:C2A1 25 - - - dec h - 876 D1:C2A2 2D - - - dec l - 877 D1:C2A3 - - - - vxCmdRestoreBucket1: - 878 D1:C2A3 4E - - - ld c, (hl) - 879 D1:C2A4 24 - - - inc h - 880 D1:C2A5 46 - - - ld b, (hl) - 881 D1:C2A6 EB - - - ex de, hl - 882 D1:C2A7 09 - - - add hl, bc - 883 D1:C2A8 EB - - - ex de, hl - 884 D1:C2A9 72 - - - ld (hl), d - 885 D1:C2AA 25 - - - dec h - 886 D1:C2AB 73 - - - ld (hl), e - 887 D1:C2AC 2D - - - dec l - 888 D1:C2AD 20 F4 - - jr nz, vxCmdRestoreBucket1 - 889 D1:C2AF 4E - - - ld c, (hl) - 890 D1:C2B0 24 - - - inc h - 891 D1:C2B1 46 - - - ld b, (hl) - 892 D1:C2B2 EB - - - ex de, hl - 893 D1:C2B3 09 - - - add hl, bc - 894 D1:C2B4 EB - - - ex de, hl - 895 D1:C2B5 72 - - - ld (hl), d - 896 D1:C2B6 25 - - - dec h - 897 D1:C2B7 73 - - - ld (hl), e - 898 D1:C2B8 ED 32 F9 - lea ix, ix-7 - 899 D1:C2BB - - - - - 900 D1:C2BB C1 - - - pop bc - 901 D1:C2BC 79 - - - ld a, c - 902 D1:C2BD - - - - vxCmdFillBucketOuter1: - 903 D1:C2BD C5 - - - push bc - 904 D1:C2BE 06 00 - - ld b, 0 - 905 D1:C2C0 - - - - vxCmdFillBucketInner1: - 906 D1:C2C0 21 07 32 D0 ld hl, VX_DEPTH_BUCKET+7 - 907 D1:C2C4 4D - - - ld c, l - 908 D1:C2C5 DD 6E 01 - ld l, (ix+1) - 909 D1:C2C8 5E - - - ld e, (hl) - 910 D1:C2C9 24 - - - inc h - 911 D1:C2CA 56 - - - ld d, (hl) - 912 D1:C2CB EB - - - ex de, hl - 913 D1:C2CC 52 ED 42 - sbc.sil hl, bc - 914 D1:C2CF EB - - - ex de, hl - 915 D1:C2D0 72 - - - ld (hl), d - 916 D1:C2D1 25 - - - dec h - 917 D1:C2D2 73 - - - ld (hl), e - 918 D1:C2D3 - - - - vxCmdWriteBuffer0=$+1 - 919 D1:C2D3 21 00 00 00 ld hl, $0 - 920 D1:C2D7 19 - - - add hl, de - 921 D1:C2D8 EB - - - ex de, hl - 922 D1:C2D9 ED 22 00 - lea hl, ix+0 - 923 D1:C2DC ED B0 - - ldir - 924 D1:C2DE ED 32 F9 - lea ix, ix-7 - 925 D1:C2E1 3D - - - dec a - 926 D1:C2E2 20 DC - - jr nz, vxCmdFillBucketInner1 - 927 D1:C2E4 C1 - - - pop bc - 928 D1:C2E5 10 D6 - - djnz vxCmdFillBucketOuter1 - 929 D1:C2E7 - - - - - 930 D1:C2E7 - - - - vxCmdReadBuffer0=$+2 - 931 D1:C2E7 DD 21 00 00 + 858 D1:C28F - - - - + 859 D1:C28F 01 FF 01 00 ld bc, 511 + 860 D1:C293 21 FF 33 D0 ld hl, VX_DEPTH_BUCKET+511 + 861 D1:C297 11 FE 33 D0 ld de, VX_DEPTH_BUCKET+510 + 862 D1:C29B 36 00 - - ld (hl), $00 + 863 D1:C29D ED B8 - - lddr + 864 D1:C29F - - - - ; restore size + 865 D1:C29F C1 - - - pop bc + 866 D1:C2A0 79 - - - ld a, c + 867 D1:C2A1 48 - - - ld c, b + 868 D1:C2A2 47 - - - ld b, a + 869 D1:C2A3 1E 07 - - ld e, 7 + 870 D1:C2A5 DD 6E 01 - ld l, (ix+1) + 871 D1:C2A8 7B - - - ld a, e + 872 D1:C2A9 86 - - - add a, (hl) + 873 D1:C2AA 77 - - - ld (hl), a + 874 D1:C2AB 30 03 - - jr nc, $+5 + 875 D1:C2AD 24 - - - inc h + 876 D1:C2AE 34 - - - inc (hl) + 877 D1:C2AF 25 - - - dec h + 878 D1:C2B0 ED 32 07 - lea ix, ix+7 + 879 D1:C2B3 10 F0 - - djnz $-14 + 880 D1:C2B5 0D - - - dec c + 881 D1:C2B6 20 ED - - jr nz, $-17 + 882 D1:C2B8 2E FF - - ld l, 255 + 883 D1:C2BA 5E - - - ld e, (hl) + 884 D1:C2BB 24 - - - inc h + 885 D1:C2BC 56 - - - ld d, (hl) + 886 D1:C2BD 25 - - - dec h + 887 D1:C2BE 2D - - - dec l + 888 D1:C2BF - - - - vxCmdRestoreBucket1: + 889 D1:C2BF 4E - - - ld c, (hl) + 890 D1:C2C0 24 - - - inc h + 891 D1:C2C1 46 - - - ld b, (hl) + 892 D1:C2C2 EB - - - ex de, hl + 893 D1:C2C3 09 - - - add hl, bc + 894 D1:C2C4 EB - - - ex de, hl + 895 D1:C2C5 72 - - - ld (hl), d + 896 D1:C2C6 25 - - - dec h + 897 D1:C2C7 73 - - - ld (hl), e + 898 D1:C2C8 2D - - - dec l + 899 D1:C2C9 20 F4 - - jr nz, vxCmdRestoreBucket1 + 900 D1:C2CB 4E - - - ld c, (hl) + 901 D1:C2CC 24 - - - inc h + 902 D1:C2CD 46 - - - ld b, (hl) + 903 D1:C2CE EB - - - ex de, hl + 904 D1:C2CF 09 - - - add hl, bc + 905 D1:C2D0 EB - - - ex de, hl + 906 D1:C2D1 72 - - - ld (hl), d + 907 D1:C2D2 25 - - - dec h + 908 D1:C2D3 73 - - - ld (hl), e + 909 D1:C2D4 ED 32 F9 - lea ix, ix-7 + 910 D1:C2D7 - - - - + 911 D1:C2D7 C1 - - - pop bc + 912 D1:C2D8 79 - - - ld a, c + 913 D1:C2D9 - - - - vxCmdFillBucketOuter1: + 914 D1:C2D9 C5 - - - push bc + 915 D1:C2DA 06 00 - - ld b, 0 + 916 D1:C2DC - - - - vxCmdFillBucketInner1: + 917 D1:C2DC 21 07 32 D0 ld hl, VX_DEPTH_BUCKET+7 + 918 D1:C2E0 4D - - - ld c, l + 919 D1:C2E1 DD 6E 01 - ld l, (ix+1) + 920 D1:C2E4 5E - - - ld e, (hl) + 921 D1:C2E5 24 - - - inc h + 922 D1:C2E6 56 - - - ld d, (hl) + 923 D1:C2E7 EB - - - ex de, hl + 924 D1:C2E8 52 ED 42 - sbc.sil hl, bc + 925 D1:C2EB EB - - - ex de, hl + 926 D1:C2EC 72 - - - ld (hl), d + 927 D1:C2ED 25 - - - dec h + 928 D1:C2EE 73 - - - ld (hl), e + 929 D1:C2EF - - - - vxCmdWriteBuffer0=$+1 + 930 D1:C2EF 21 00 00 00 ld hl, $0 + 931 D1:C2F3 19 - - - add hl, de + 932 D1:C2F4 EB - - - ex de, hl + 933 D1:C2F5 ED 22 00 - lea hl, ix+0 + 934 D1:C2F8 ED B0 - - ldir + 935 D1:C2FA ED 32 F9 - lea ix, ix-7 + 936 D1:C2FD 3D - - - dec a + 937 D1:C2FE 20 DC - - jr nz, vxCmdFillBucketInner1 + 938 D1:C300 C1 - - - pop bc + 939 D1:C301 10 D6 - - djnz vxCmdFillBucketOuter1 + 940 D1:C303 - - - - + 941 D1:C303 - - - - vxCmdReadBuffer0=$+2 + 942 D1:C303 DD 21 00 00 00 - - - ld ix, $0 - 932 D1:C2EC - - - - - 933 D1:C2EC 01 FF 01 00 ld bc, 511 - 934 D1:C2F0 21 FF 33 D0 ld hl, VX_DEPTH_BUCKET+511 - 935 D1:C2F4 11 FE 33 D0 ld de, VX_DEPTH_BUCKET+510 - 936 D1:C2F8 36 00 - - ld (hl), $00 - 937 D1:C2FA ED B8 - - lddr - 938 D1:C2FC - - - - - 939 D1:C2FC C1 - - - pop bc - 940 D1:C2FD 79 - - - ld a, c - 941 D1:C2FE 48 - - - ld c, b - 942 D1:C2FF 47 - - - ld b, a - 943 D1:C300 1E 04 - - ld e, 4 ; size of final batch - 944 D1:C302 DD 6E 02 - ld l, (ix+2) - 945 D1:C305 7B - - - ld a, e - 946 D1:C306 86 - - - add a, (hl) - 947 D1:C307 77 - - - ld (hl), a - 948 D1:C308 30 03 - - jr nc, $+5 - 949 D1:C30A 24 - - - inc h - 950 D1:C30B 34 - - - inc (hl) - 951 D1:C30C 25 - - - dec h - 952 D1:C30D ED 32 07 - lea ix, ix+7 - 953 D1:C310 10 F0 - - djnz $-14 - 954 D1:C312 0D - - - dec c - 955 D1:C313 20 ED - - jr nz, $-17 - 956 D1:C315 2E FF - - ld l, 255 - 957 D1:C317 5E - - - ld e, (hl) - 958 D1:C318 24 - - - inc h - 959 D1:C319 56 - - - ld d, (hl) - 960 D1:C31A 25 - - - dec h - 961 D1:C31B 2D - - - dec l - 962 D1:C31C - - - - vxCmdRestoreBucket2: - 963 D1:C31C 4E - - - ld c, (hl) - 964 D1:C31D 24 - - - inc h - 965 D1:C31E 46 - - - ld b, (hl) - 966 D1:C31F EB - - - ex de, hl - 967 D1:C320 09 - - - add hl, bc - 968 D1:C321 EB - - - ex de, hl - 969 D1:C322 72 - - - ld (hl), d - 970 D1:C323 25 - - - dec h - 971 D1:C324 73 - - - ld (hl), e - 972 D1:C325 2D - - - dec l - 973 D1:C326 20 F4 - - jr nz, vxCmdRestoreBucket2 - 974 D1:C328 4E - - - ld c, (hl) - 975 D1:C329 24 - - - inc h - 976 D1:C32A 46 - - - ld b, (hl) - 977 D1:C32B EB - - - ex de, hl - 978 D1:C32C 09 - - - add hl, bc - 979 D1:C32D EB - - - ex de, hl - 980 D1:C32E 72 - - - ld (hl), d - 981 D1:C32F 25 - - - dec h - 982 D1:C330 73 - - - ld (hl), e - 983 D1:C331 ED 32 F9 - lea ix, ix-7 - 984 D1:C334 - - - - - 985 D1:C334 C1 - - - pop bc - 986 D1:C335 79 - - - ld a, c - 987 D1:C336 2C - - - inc l - 988 D1:C337 - - - - vxCmdFillBucket2: - 989 D1:C337 DD 6E 02 - ld l, (ix+2) - 990 D1:C33A 5E - - - ld e, (hl) - 991 D1:C33B 24 - - - inc h - 992 D1:C33C 56 - - - ld d, (hl) - 993 D1:C33D 52 1B - - dec.sil de - 994 D1:C33F 1B - - - dec de - 995 D1:C340 1B - - - dec de - 996 D1:C341 1B - - - dec de - 997 D1:C342 72 - - - ld (hl), d - 998 D1:C343 25 - - - dec h - 999 D1:C344 73 - - - ld (hl), e - 1000 D1:C345 FD 21 00 00 + 943 D1:C308 - - - - + 944 D1:C308 01 FF 01 00 ld bc, 511 + 945 D1:C30C 21 FF 33 D0 ld hl, VX_DEPTH_BUCKET+511 + 946 D1:C310 11 FE 33 D0 ld de, VX_DEPTH_BUCKET+510 + 947 D1:C314 36 00 - - ld (hl), $00 + 948 D1:C316 ED B8 - - lddr + 949 D1:C318 - - - - + 950 D1:C318 C1 - - - pop bc + 951 D1:C319 79 - - - ld a, c + 952 D1:C31A 48 - - - ld c, b + 953 D1:C31B 47 - - - ld b, a + 954 D1:C31C 1E 04 - - ld e, 4 ; size of final batch + 955 D1:C31E DD 6E 02 - ld l, (ix+2) + 956 D1:C321 7B - - - ld a, e + 957 D1:C322 86 - - - add a, (hl) + 958 D1:C323 77 - - - ld (hl), a + 959 D1:C324 30 03 - - jr nc, $+5 + 960 D1:C326 24 - - - inc h + 961 D1:C327 34 - - - inc (hl) + 962 D1:C328 25 - - - dec h + 963 D1:C329 ED 32 07 - lea ix, ix+7 + 964 D1:C32C 10 F0 - - djnz $-14 + 965 D1:C32E 0D - - - dec c + 966 D1:C32F 20 ED - - jr nz, $-17 + 967 D1:C331 2E FF - - ld l, 255 + 968 D1:C333 5E - - - ld e, (hl) + 969 D1:C334 24 - - - inc h + 970 D1:C335 56 - - - ld d, (hl) + 971 D1:C336 25 - - - dec h + 972 D1:C337 2D - - - dec l + 973 D1:C338 - - - - vxCmdRestoreBucket2: + 974 D1:C338 4E - - - ld c, (hl) + 975 D1:C339 24 - - - inc h + 976 D1:C33A 46 - - - ld b, (hl) + 977 D1:C33B EB - - - ex de, hl + 978 D1:C33C 09 - - - add hl, bc + 979 D1:C33D EB - - - ex de, hl + 980 D1:C33E 72 - - - ld (hl), d + 981 D1:C33F 25 - - - dec h + 982 D1:C340 73 - - - ld (hl), e + 983 D1:C341 2D - - - dec l + 984 D1:C342 20 F4 - - jr nz, vxCmdRestoreBucket2 + 985 D1:C344 4E - - - ld c, (hl) + 986 D1:C345 24 - - - inc h + 987 D1:C346 46 - - - ld b, (hl) + 988 D1:C347 EB - - - ex de, hl + 989 D1:C348 09 - - - add hl, bc + 990 D1:C349 EB - - - ex de, hl + 991 D1:C34A 72 - - - ld (hl), d + 992 D1:C34B 25 - - - dec h + 993 D1:C34C 73 - - - ld (hl), e + 994 D1:C34D ED 32 F9 - lea ix, ix-7 + 995 D1:C350 - - - - + 996 D1:C350 C1 - - - pop bc + 997 D1:C351 79 - - - ld a, c + 998 D1:C352 2C - - - inc l + 999 D1:C353 - - - - vxCmdFillBucket2: + 1000 D1:C353 DD 6E 02 - ld l, (ix+2) + 1001 D1:C356 5E - - - ld e, (hl) + 1002 D1:C357 24 - - - inc h + 1003 D1:C358 56 - - - ld d, (hl) + 1004 D1:C359 52 1B - - dec.sil de + 1005 D1:C35B 1B - - - dec de + 1006 D1:C35C 1B - - - dec de + 1007 D1:C35D 1B - - - dec de + 1008 D1:C35E 72 - - - ld (hl), d + 1009 D1:C35F 25 - - - dec h + 1010 D1:C360 73 - - - ld (hl), e + 1011 D1:C361 FD 21 00 00 D1 - - - ld iy, VX_GEOMETRY_QUEUE - 1001 D1:C34A FD 19 - - add iy, de - 1002 D1:C34C - - - - ; copy only the triangle adress - 1003 D1:C34C DD 17 03 - ld de, (ix+3) - 1004 D1:C34F FD 1F 01 - ld (iy+1), de - 1005 D1:C352 DD 6E 06 - ld l, (ix+6) - 1006 D1:C355 FD 75 00 - ld (iy+0), l - 1007 D1:C358 - - - - - 1008 D1:C358 ED 32 F9 - lea ix, ix-7 - 1009 D1:C35B 3D - - - dec a - 1010 D1:C35C 20 D9 - - jr nz, vxCmdFillBucket2 - 1011 D1:C35E 10 D7 - - djnz vxCmdFillBucket2 - 1012 D1:C360 - - - - - 1013 D1:C360 C9 - - - ret - 1014 D1:C361 - - - - - 1015 D1:C361 - - - - - 1016 D1:C361 - - - - vxCmdBackfaceCull: - 1017 D1:C361 13 - - - inc de - 1018 D1:C362 13 - - - inc de - 1019 D1:C363 - - - - - 1020 D1:C363 FD 27 00 - ld hl, (iy+0) - 1021 D1:C366 19 - - - add hl, de - 1022 D1:C367 ED 07 - - ld bc, (hl) - 1023 D1:C369 2B - - - dec hl - 1024 D1:C36A 7E - - - ld a, (hl) - 1025 D1:C36B FD 27 06 - ld hl, (iy+6) - 1026 D1:C36E 19 - - - add hl, de - 1027 D1:C36F ED 27 - - ld hl, (hl) - 1028 D1:C371 B7 - - - or a, a - 1029 D1:C372 ED 42 - - sbc hl, bc - 1030 D1:C374 44 - - - ld b, h - 1031 D1:C375 4D - - - ld c, l - 1032 D1:C376 FD 27 03 - ld hl, (iy+3) - 1033 D1:C379 19 - - - add hl, de - 1034 D1:C37A 2B - - - dec hl - 1035 D1:C37B 96 - - - sub (hl) - 1036 D1:C37C - - - - - 1037 D1:C37C 60 - - - ld h, b - 1038 D1:C37D 6F - - - ld l, a - 1039 D1:C37E ED 6C - - mlt hl - 1040 D1:C380 - - - - ;; jr z, RR - 1041 D1:C380 30 03 - - jr nc, $+5 - 1042 D1:C382 B7 - - - or a, a - 1043 D1:C383 ED 42 - - sbc hl, bc - 1044 D1:C385 CB 78 - - bit 7, b - 1045 D1:C387 47 - - - ld b, a - 1046 D1:C388 28 03 - - jr z, $+5 - 1047 D1:C38A 7C - - - ld a, h - 1048 D1:C38B 90 - - - sub a, b - 1049 D1:C38C 67 - - - ld h, a - 1050 D1:C38D 29 29 29 29 + 1012 D1:C366 FD 19 - - add iy, de + 1013 D1:C368 - - - - ; copy only the triangle adress + 1014 D1:C368 DD 17 03 - ld de, (ix+3) + 1015 D1:C36B FD 1F 01 - ld (iy+1), de + 1016 D1:C36E DD 6E 06 - ld l, (ix+6) + 1017 D1:C371 FD 75 00 - ld (iy+0), l + 1018 D1:C374 - - - - + 1019 D1:C374 ED 32 F9 - lea ix, ix-7 + 1020 D1:C377 3D - - - dec a + 1021 D1:C378 20 D9 - - jr nz, vxCmdFillBucket2 + 1022 D1:C37A 10 D7 - - djnz vxCmdFillBucket2 + 1023 D1:C37C - - - - + 1024 D1:C37C C9 - - - ret + 1025 D1:C37D - - - - + 1026 D1:C37D - - - - + 1027 D1:C37D - - - - vxCmdBackfaceCull: + 1028 D1:C37D 13 - - - inc de + 1029 D1:C37E 13 - - - inc de + 1030 D1:C37F - - - - + 1031 D1:C37F FD 27 00 - ld hl, (iy+0) + 1032 D1:C382 19 - - - add hl, de + 1033 D1:C383 ED 07 - - ld bc, (hl) + 1034 D1:C385 2B - - - dec hl + 1035 D1:C386 7E - - - ld a, (hl) + 1036 D1:C387 FD 27 06 - ld hl, (iy+6) + 1037 D1:C38A 19 - - - add hl, de + 1038 D1:C38B ED 27 - - ld hl, (hl) + 1039 D1:C38D B7 - - - or a, a + 1040 D1:C38E ED 42 - - sbc hl, bc + 1041 D1:C390 44 - - - ld b, h + 1042 D1:C391 4D - - - ld c, l + 1043 D1:C392 FD 27 03 - ld hl, (iy+3) + 1044 D1:C395 19 - - - add hl, de + 1045 D1:C396 2B - - - dec hl + 1046 D1:C397 96 - - - sub (hl) + 1047 D1:C398 - - - - + 1048 D1:C398 60 - - - ld h, b + 1049 D1:C399 6F - - - ld l, a + 1050 D1:C39A ED 6C - - mlt hl + 1051 D1:C39C - - - - ;; jr z, RR + 1052 D1:C39C 30 03 - - jr nc, $+5 + 1053 D1:C39E B7 - - - or a, a + 1054 D1:C39F ED 42 - - sbc hl, bc + 1055 D1:C3A1 CB 78 - - bit 7, b + 1056 D1:C3A3 47 - - - ld b, a + 1057 D1:C3A4 28 03 - - jr z, $+5 + 1058 D1:C3A6 7C - - - ld a, h + 1059 D1:C3A7 90 - - - sub a, b + 1060 D1:C3A8 67 - - - ld h, a + 1061 D1:C3A9 29 29 29 29 29 29 29 29 slhl Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" - 1051 D1:C395 ED 4C - - mlt bc - 1052 D1:C397 09 - - - add hl, bc - 1053 D1:C398 - - - - RR: - 1054 D1:C398 E5 - - - push hl - 1055 D1:C399 - - - - - 1056 D1:C399 FD 27 00 - ld hl, (iy+0) - 1057 D1:C39C 19 - - - add hl, de - 1058 D1:C39D ED 07 - - ld bc, (hl) - 1059 D1:C39F 2B - - - dec hl - 1060 D1:C3A0 7E - - - ld a, (hl) - 1061 D1:C3A1 FD 27 03 - ld hl, (iy+3) - 1062 D1:C3A4 19 - - - add hl, de - 1063 D1:C3A5 ED 27 - - ld hl, (hl) - 1064 D1:C3A7 B7 - - - or a, a - 1065 D1:C3A8 ED 42 - - sbc hl, bc - 1066 D1:C3AA 44 - - - ld b, h - 1067 D1:C3AB 4D - - - ld c, l - 1068 D1:C3AC - - - - - 1069 D1:C3AC 1B - - - dec de - 1070 D1:C3AD FD 27 06 - ld hl, (iy+6) - 1071 D1:C3B0 19 - - - add hl, de - 1072 D1:C3B1 96 - - - sub (hl) - 1073 D1:C3B2 - - - - - 1074 D1:C3B2 60 - - - ld h, b - 1075 D1:C3B3 6F - - - ld l, a - 1076 D1:C3B4 ED 6C - - mlt hl - 1077 D1:C3B6 - - - - ;; jr z, RR2 - 1078 D1:C3B6 30 03 - - jr nc, $+5 - 1079 D1:C3B8 B7 - - - or a, a - 1080 D1:C3B9 ED 42 - - sbc hl, bc - 1081 D1:C3BB CB 78 - - bit 7, b - 1082 D1:C3BD 47 - - - ld b, a - 1083 D1:C3BE 28 03 - - jr z, $+5 - 1084 D1:C3C0 7C - - - ld a, h - 1085 D1:C3C1 90 - - - sub a, b - 1086 D1:C3C2 67 - - - ld h, a - 1087 D1:C3C3 29 29 29 29 + 1062 D1:C3B1 ED 4C - - mlt bc + 1063 D1:C3B3 09 - - - add hl, bc + 1064 D1:C3B4 - - - - RR: + 1065 D1:C3B4 E5 - - - push hl + 1066 D1:C3B5 - - - - + 1067 D1:C3B5 FD 27 00 - ld hl, (iy+0) + 1068 D1:C3B8 19 - - - add hl, de + 1069 D1:C3B9 ED 07 - - ld bc, (hl) + 1070 D1:C3BB 2B - - - dec hl + 1071 D1:C3BC 7E - - - ld a, (hl) + 1072 D1:C3BD FD 27 03 - ld hl, (iy+3) + 1073 D1:C3C0 19 - - - add hl, de + 1074 D1:C3C1 ED 27 - - ld hl, (hl) + 1075 D1:C3C3 B7 - - - or a, a + 1076 D1:C3C4 ED 42 - - sbc hl, bc + 1077 D1:C3C6 44 - - - ld b, h + 1078 D1:C3C7 4D - - - ld c, l + 1079 D1:C3C8 - - - - + 1080 D1:C3C8 1B - - - dec de + 1081 D1:C3C9 FD 27 06 - ld hl, (iy+6) + 1082 D1:C3CC 19 - - - add hl, de + 1083 D1:C3CD 96 - - - sub (hl) + 1084 D1:C3CE - - - - + 1085 D1:C3CE 60 - - - ld h, b + 1086 D1:C3CF 6F - - - ld l, a + 1087 D1:C3D0 ED 6C - - mlt hl + 1088 D1:C3D2 - - - - ;; jr z, RR2 + 1089 D1:C3D2 30 03 - - jr nc, $+5 + 1090 D1:C3D4 B7 - - - or a, a + 1091 D1:C3D5 ED 42 - - sbc hl, bc + 1092 D1:C3D7 CB 78 - - bit 7, b + 1093 D1:C3D9 47 - - - ld b, a + 1094 D1:C3DA 28 03 - - jr z, $+5 + 1095 D1:C3DC 7C - - - ld a, h + 1096 D1:C3DD 90 - - - sub a, b + 1097 D1:C3DE 67 - - - ld h, a + 1098 D1:C3DF 29 29 29 29 29 29 29 29 slhl Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" - 1088 D1:C3CB ED 4C - - mlt bc - 1089 D1:C3CD 09 - - - add hl, bc - 1090 D1:C3CE - - - - RR2: - 1091 D1:C3CE C1 - - - pop bc - 1092 D1:C3CF - - - - - 1093 D1:C3CF 37 - - - scf - 1094 D1:C3D0 ED 42 - - sbc hl, bc - 1095 D1:C3D2 - - - - - 1096 D1:C3D2 1B - - - dec de - 1097 D1:C3D3 C9 - - - ret - 1098 D1:C3D4 - - - - - 1099 D1:C3D4 - - - - - 1100 D1:C3D4 - - - - - 1101 D1:C3D4 - - - - vxCmdBackfaceCull2: - 1102 D1:C3D4 - - - - ; (x2-x0)*(y1-y0) - (x1-x0)*(y2-y0) - 1103 D1:C3D4 D5 - - - push de - 1104 D1:C3D5 13 - - - inc de - 1105 D1:C3D6 - - - - - 1106 D1:C3D6 FD 27 03 - ld hl, (iy+3) - 1107 D1:C3D9 19 - - - add hl, de - 1108 D1:C3DA 7E - - - ld a, (hl) - 1109 D1:C3DB FD 27 00 - ld hl, (iy+0) - 1110 D1:C3DE 19 - - - add hl, de - 1111 D1:C3DF 96 - - - sub (hl) - 1112 D1:C3E0 F5 - - - push af - 1113 D1:C3E1 23 - - - inc hl - 1114 D1:C3E2 ED 07 - - ld bc, (hl) - 1115 D1:C3E4 FD 27 06 - ld hl, (iy+6) - 1116 D1:C3E7 19 - - - add hl, de - 1117 D1:C3E8 23 - - - inc hl - 1118 D1:C3E9 ED 27 - - ld hl, (hl) - 1119 D1:C3EB B7 - - - or a, a - 1120 D1:C3EC ED 42 - - sbc hl, bc - 1121 D1:C3EE 44 - - - ld b, h - 1122 D1:C3EF 4D - - - ld c, l - 1123 D1:C3F0 F1 - - - pop af - 1124 D1:C3F1 60 - - - ld h, b - 1125 D1:C3F2 6F - - - ld l, a - 1126 D1:C3F3 ED 6C - - mlt hl - 1127 D1:C3F5 30 03 - - jr nc, $+5 - 1128 D1:C3F7 B7 - - - or a, a - 1129 D1:C3F8 ED 42 - - sbc hl, bc - 1130 D1:C3FA CB 78 - - bit 7, b - 1131 D1:C3FC 47 - - - ld b, a - 1132 D1:C3FD 28 03 - - jr z, $+5 - 1133 D1:C3FF 7C - - - ld a, h - 1134 D1:C400 90 - - - sub a, b - 1135 D1:C401 67 - - - ld h, a - 1136 D1:C402 29 29 29 29 + 1099 D1:C3E7 ED 4C - - mlt bc + 1100 D1:C3E9 09 - - - add hl, bc + 1101 D1:C3EA - - - - RR2: + 1102 D1:C3EA C1 - - - pop bc + 1103 D1:C3EB - - - - + 1104 D1:C3EB 37 - - - scf + 1105 D1:C3EC ED 42 - - sbc hl, bc + 1106 D1:C3EE - - - - + 1107 D1:C3EE 1B - - - dec de + 1108 D1:C3EF C9 - - - ret + 1109 D1:C3F0 - - - - + 1110 D1:C3F0 - - - - + 1111 D1:C3F0 - - - - + 1112 D1:C3F0 - - - - vxCmdBackfaceCull2: + 1113 D1:C3F0 - - - - ; (x2-x0)*(y1-y0) - (x1-x0)*(y2-y0) + 1114 D1:C3F0 D5 - - - push de + 1115 D1:C3F1 13 - - - inc de + 1116 D1:C3F2 - - - - + 1117 D1:C3F2 FD 27 03 - ld hl, (iy+3) + 1118 D1:C3F5 19 - - - add hl, de + 1119 D1:C3F6 7E - - - ld a, (hl) + 1120 D1:C3F7 FD 27 00 - ld hl, (iy+0) + 1121 D1:C3FA 19 - - - add hl, de + 1122 D1:C3FB 96 - - - sub (hl) + 1123 D1:C3FC F5 - - - push af + 1124 D1:C3FD 23 - - - inc hl + 1125 D1:C3FE ED 07 - - ld bc, (hl) + 1126 D1:C400 FD 27 06 - ld hl, (iy+6) + 1127 D1:C403 19 - - - add hl, de + 1128 D1:C404 23 - - - inc hl + 1129 D1:C405 ED 27 - - ld hl, (hl) + 1130 D1:C407 B7 - - - or a, a + 1131 D1:C408 ED 42 - - sbc hl, bc + 1132 D1:C40A 44 - - - ld b, h + 1133 D1:C40B 4D - - - ld c, l + 1134 D1:C40C F1 - - - pop af + 1135 D1:C40D 60 - - - ld h, b + 1136 D1:C40E 6F - - - ld l, a + 1137 D1:C40F ED 6C - - mlt hl + 1138 D1:C411 30 03 - - jr nc, $+5 + 1139 D1:C413 B7 - - - or a, a + 1140 D1:C414 ED 42 - - sbc hl, bc + 1141 D1:C416 CB 78 - - bit 7, b + 1142 D1:C418 47 - - - ld b, a + 1143 D1:C419 28 03 - - jr z, $+5 + 1144 D1:C41B 7C - - - ld a, h + 1145 D1:C41C 90 - - - sub a, b + 1146 D1:C41D 67 - - - ld h, a + 1147 D1:C41E 29 29 29 29 29 29 29 29 slhl Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" - 1137 D1:C40A ED 4C - - mlt bc - 1138 D1:C40C 09 - - - add hl, bc - 1139 D1:C40D - - - - - 1140 D1:C40D E5 - - - push hl - 1141 D1:C40E - - - - - 1142 D1:C40E FD 27 06 - ld hl, (iy+6) - 1143 D1:C411 19 - - - add hl, de - 1144 D1:C412 7E - - - ld a, (hl) - 1145 D1:C413 FD 27 00 - ld hl, (iy+0) - 1146 D1:C416 19 - - - add hl, de - 1147 D1:C417 96 - - - sub (hl) - 1148 D1:C418 F5 - - - push af - 1149 D1:C419 23 - - - inc hl - 1150 D1:C41A ED 07 - - ld bc, (hl) - 1151 D1:C41C FD 27 03 - ld hl, (iy+3) - 1152 D1:C41F 19 - - - add hl, de - 1153 D1:C420 23 - - - inc hl - 1154 D1:C421 ED 27 - - ld hl, (hl) - 1155 D1:C423 B7 - - - or a, a - 1156 D1:C424 ED 42 - - sbc hl, bc - 1157 D1:C426 44 - - - ld b, h - 1158 D1:C427 4D - - - ld c, l - 1159 D1:C428 F1 - - - pop af - 1160 D1:C429 60 - - - ld h, b - 1161 D1:C42A 6F - - - ld l, a - 1162 D1:C42B ED 6C - - mlt hl - 1163 D1:C42D 30 03 - - jr nc, $+5 - 1164 D1:C42F B7 - - - or a, a - 1165 D1:C430 ED 42 - - sbc hl, bc - 1166 D1:C432 CB 78 - - bit 7, b - 1167 D1:C434 47 - - - ld b, a - 1168 D1:C435 28 03 - - jr z, $+5 - 1169 D1:C437 7C - - - ld a, h - 1170 D1:C438 90 - - - sub a, b - 1171 D1:C439 67 - - - ld h, a - 1172 D1:C43A 29 29 29 29 + 1148 D1:C426 ED 4C - - mlt bc + 1149 D1:C428 09 - - - add hl, bc + 1150 D1:C429 - - - - + 1151 D1:C429 E5 - - - push hl + 1152 D1:C42A - - - - + 1153 D1:C42A FD 27 06 - ld hl, (iy+6) + 1154 D1:C42D 19 - - - add hl, de + 1155 D1:C42E 7E - - - ld a, (hl) + 1156 D1:C42F FD 27 00 - ld hl, (iy+0) + 1157 D1:C432 19 - - - add hl, de + 1158 D1:C433 96 - - - sub (hl) + 1159 D1:C434 F5 - - - push af + 1160 D1:C435 23 - - - inc hl + 1161 D1:C436 ED 07 - - ld bc, (hl) + 1162 D1:C438 FD 27 03 - ld hl, (iy+3) + 1163 D1:C43B 19 - - - add hl, de + 1164 D1:C43C 23 - - - inc hl + 1165 D1:C43D ED 27 - - ld hl, (hl) + 1166 D1:C43F B7 - - - or a, a + 1167 D1:C440 ED 42 - - sbc hl, bc + 1168 D1:C442 44 - - - ld b, h + 1169 D1:C443 4D - - - ld c, l + 1170 D1:C444 F1 - - - pop af + 1171 D1:C445 60 - - - ld h, b + 1172 D1:C446 6F - - - ld l, a + 1173 D1:C447 ED 6C - - mlt hl + 1174 D1:C449 30 03 - - jr nc, $+5 + 1175 D1:C44B B7 - - - or a, a + 1176 D1:C44C ED 42 - - sbc hl, bc + 1177 D1:C44E CB 78 - - bit 7, b + 1178 D1:C450 47 - - - ld b, a + 1179 D1:C451 28 03 - - jr z, $+5 + 1180 D1:C453 7C - - - ld a, h + 1181 D1:C454 90 - - - sub a, b + 1182 D1:C455 67 - - - ld h, a + 1183 D1:C456 29 29 29 29 29 29 29 29 slhl Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" - 1173 D1:C442 ED 4C - - mlt bc - 1174 D1:C444 09 - - - add hl, bc - 1175 D1:C445 - - - - - 1176 D1:C445 D1 - - - pop de - 1177 D1:C446 B7 - - - or a, a - 1178 D1:C447 ED 52 - - sbc hl, de - 1179 D1:C449 D1 - - - pop de - 1180 D1:C44A C9 - - - ret - 1181 D1:C44B - - - - - 1182 D1:C44B - - - - #comment - 1183 D1:C44B Monitor_Size_Start: - 1184 D1:C44B - 1185 D1:C44B vxVertexShader: - 1186 D1:C44B #define CC 0 - 1187 D1:C44B #define SY 1 - 1188 D1:C44B #define SX 2 - 1189 D1:C44B #define VX 7 - 1190 D1:C44B #define VY 10 - 1191 D1:C44B #define VZ 13 - 1192 D1:C44B #define VX_GLOBAL_VCACHE_SIZE 16 - 1193 D1:C44B #define VX_GLOBAL_VERTEX_SIZE 6 - 1194 D1:C44B ; ix = global data register [LV[0-2],LA,LE, MC[0-8],MTX,MTY,MTZ] - 1195 D1:C44B ; iy = vertex data register [VX,VY,VZ,VN[0-2]] - 1196 D1:C44B ; de = output data register [RC,SY,SX,RI[0-1],RX,RY,RZ] - 1197 D1:C44B ; bc = x vertex coordinate [16bits] - 1198 D1:C44B ; OUT register - 1199 D1:C44B ; de = de + VX_GLOBAL_VCACHE_SIZE - 1200 D1:C44B ; iy = iy + VX_GLOBAL_VERTEX_SIZE - 1201 D1:C44B ; data copied to memory - 1202 D1:C44B pea iy+VX_GLOBAL_VERTEX_SIZE - 1203 D1:C44B push de - 1204 D1:C44B ; X coordinate - 1205 D1:C44B ; ld bc, (iy+0) - 1206 D1:C44B ld hl, (ix+9) - 1207 D1:C44B ld a, (ix+0) - 1208 D1:C44B madd - 1209 D1:C44B ld a, (ix+1) - 1210 D1:C44B or a, a - 1211 D1:C44B jr z, vxVertexSkip0 - 1212 D1:C44B ld bc, (iy+2) - 1213 D1:C44B madd - 1214 D1:C44B vxVertexSkip0: - 1215 D1:C44B ld a, (ix+2) - 1216 D1:C44B ld bc, (iy+4) - 1217 D1:C44B madd.f - 1218 D1:C44B push hl - 1219 D1:C44B ; Z coordinate - 1220 D1:C44B ld hl, (ix+15) - 1221 D1:C44B ld a, (ix+8) - 1222 D1:C44B madd - 1223 D1:C44B ld a, (ix+7) - 1224 D1:C44B ld bc, (iy+2) - 1225 D1:C44B madd - 1226 D1:C44B ld a, (ix+6) - 1227 D1:C44B ld bc, (iy+0) - 1228 D1:C44B madd.f - 1229 D1:C44B push hl - 1230 D1:C44B ; Y coordinate - 1231 D1:C44B ld hl, (ix+12) - 1232 D1:C44B ld a, (ix+3) - 1233 D1:C44B madd - 1234 D1:C44B ld a, (ix+4) - 1235 D1:C44B ld bc, (iy+2) - 1236 D1:C44B madd - 1237 D1:C44B ld a, (ix+5) - 1238 D1:C44B ld bc, (iy+4) - 1239 D1:C44B madd - 1240 D1:C44B pop bc - 1241 D1:C44B pop de - 1242 D1:C44B pop iy - 1243 D1:C44B - 1244 D1:C44B ld (iy+VX), de - 1245 D1:C44B ld (iy+VY), hl - 1246 D1:C44B ld (iy+VZ), bc - 1247 D1:C44B ; 1740 - 1248 D1:C44B call vxPerspectiveDivide - 1249 D1:C44B ld (iy+CC), a - 1250 D1:C44B ld (iy+SY), b - 1251 D1:C44B ld (iy+SX), hl - 1252 D1:C44B - 1253 D1:C44B ; call vxDotProduct - 1254 D1:C44B ; jp p, $+4+3 - 1255 D1:C44B ; or a, a - 1256 D1:C44B ; sbc hl, hl - 1257 D1:C44B ; ld a, (ix+VX_LIGHT0_AMBIANT) - 1258 D1:C44B ; add a, l - 1259 D1:C44B ; cp 32 - 1260 D1:C44B ; jr nc, $+4 - 1261 D1:C44B ; ld a, 32 - 1262 D1:C44B ; ld (iy+VX_VERTEX_I0), a - 1263 D1:C44B - 1264 D1:C44B - 1265 D1:C44B lea de, iy+VX_GLOBAL_VCACHE_SIZE - 1266 D1:C44B pop iy - 1267 D1:C44B ret - 1268 D1:C44B - 1269 D1:C44B - 1270 D1:C44B vxProjectClipY: - 1271 D1:C44B rrca - 1272 D1:C44B ccf - 1273 D1:C44B rra - 1274 D1:C44B ; a = y plane code - 1275 D1:C44B ; continue on x code - 1276 D1:C44B ld hl, (iy+7) - 1277 D1:C44B bit 7,(iy+2+7) - 1278 D1:C44B jr z, vxProjectClipXAbs - 1279 D1:C44B ex de, hl - 1280 D1:C44B sbc hl, hl - 1281 D1:C44B sbc hl, de - 1282 D1:C44B vxProjectClipXAbs: - 1283 D1:C44B rra - 1284 D1:C44B sbc hl, bc - 1285 D1:C44B jr c, vxProjectClipXIn - 1286 D1:C44B rlca - 1287 D1:C44B rrca - 1288 D1:C44B ccf - 1289 D1:C44B rra - 1290 D1:C44B bit 7,(iy+8+7) - 1291 D1:C44B ret z - 1292 D1:C44B or %00001000 - 1293 D1:C44B ret - 1294 D1:C44B vxProjectClipXIn: - 1295 D1:C44B rra - 1296 D1:C44B and %00110000 - 1297 D1:C44B bit 7,(iy+8+7) - 1298 D1:C44B ret z - 1299 D1:C44B or %00001000 - 1300 D1:C44B ret - 1301 D1:C44B ; plane x right : plane x left : plane y up : plane y down : 0 : 0 : 0 : 0 - 1302 D1:C44B vxProject: - 1303 D1:C44B ld hl, (iy+10) - 1304 D1:C44B ld bc, (iy+13) - 1305 D1:C44B vxPerspectiveDivide: - 1306 D1:C44B xor a, a - 1307 D1:C44B bit 7,(iy+5+7) - 1308 D1:C44B jr z, vxProjectYAbs - 1309 D1:C44B ex de, hl - 1310 D1:C44B sbc hl, hl - 1311 D1:C44B sbc hl, de - 1312 D1:C44B vxProjectYAbs: - 1313 D1:C44B rla - 1314 D1:C44B sbc hl, bc - 1315 D1:C44B jr nc, vxProjectClipY - 1316 D1:C44B - 1317 D1:C44B add hl, bc - 1318 D1:C44B add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 1319 D1:C44B add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 1320 D1:C44B add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 1321 D1:C44B add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 1322 D1:C44B add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 1323 D1:C44B add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 1324 D1:C44B add hl,hl \ sbc hl,bc \ adc a,a - 1325 D1:C44B cpl - 1326 D1:C44B add a, a - 1327 D1:C44B ld l, VX_SCREEN_HEIGHT/2+1 ;precision stuffs - 1328 D1:C44B ld h, a - 1329 D1:C44B mlt hl - 1330 D1:C44B ld a, h - 1331 D1:C44B - 1332 D1:C44B jr nc, vxProjectYCorrect - 1333 D1:C44B neg - 1334 D1:C44B vxProjectYCorrect: - 1335 D1:C44B add a, VX_SCREEN_HCENTER - 1336 D1:C44B push af - 1337 D1:C44B ; project x coordinate - 1338 D1:C44B ld hl, (iy+7) - 1339 D1:C44B xor a, a - 1340 D1:C44B bit 7, (iy+2+7) - 1341 D1:C44B jr z, vxProjectXAbs - 1342 D1:C44B ex de, hl - 1343 D1:C44B sbc hl, hl - 1344 D1:C44B sbc hl, de - 1345 D1:C44B vxProjectXAbs: - 1346 D1:C44B rla - 1347 D1:C44B sbc hl, bc - 1348 D1:C44B jr nc, vxProjectClipX - 1349 D1:C44B add hl, bc - 1350 D1:C44B - 1351 D1:C44B add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 1352 D1:C44B add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 1353 D1:C44B add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 1354 D1:C44B add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 1355 D1:C44B add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 1356 D1:C44B add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 1357 D1:C44B add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a - 1358 D1:C44B add hl,hl \ sbc hl,bc \ adc a,a - 1359 D1:C44B cpl - 1360 D1:C44B ld c, a - 1361 D1:C44B ld b, VX_SCREEN_WIDTH/2+1 - 1362 D1:C44B mlt bc - 1363 D1:C44B ld a, b - 1364 D1:C44B sbc hl, hl - 1365 D1:C44B jr nc, $+3 - 1366 D1:C44B cpl - 1367 D1:C44B ld l, a - 1368 D1:C44B ld bc, VX_SCREEN_WCENTER - 1369 D1:C44B adc hl, bc - 1370 D1:C44B pop bc ; grab y in b - 1371 D1:C44B xor a,a - 1372 D1:C44B ret - 1373 D1:C44B vxProjectClipX: - 1374 D1:C44B pop bc - 1375 D1:C44B rrca - 1376 D1:C44B ccf - 1377 D1:C44B rra - 1378 D1:C44B bit 7,(iy+8+7) - 1379 D1:C44B ret z - 1380 D1:C44B or %00001000 - 1381 D1:C44B ret - 1382 D1:C44B Monitor_Size_End: - 1383 D1:C44B .echo Monitor_Size_End-Monitor_Size_Start - 1384 D1:C44B #endcomment + 1184 D1:C45E ED 4C - - mlt bc + 1185 D1:C460 09 - - - add hl, bc + 1186 D1:C461 - - - - + 1187 D1:C461 D1 - - - pop de + 1188 D1:C462 B7 - - - or a, a + 1189 D1:C463 ED 52 - - sbc hl, de + 1190 D1:C465 D1 - - - pop de + 1191 D1:C466 C9 - - - ret + 1192 D1:C467 - - - - + 1193 D1:C467 - - - - #comment + 1194 D1:C467 Monitor_Size_Start: + 1195 D1:C467 + 1196 D1:C467 vxVertexShader: + 1197 D1:C467 #define CC 0 + 1198 D1:C467 #define SY 1 + 1199 D1:C467 #define SX 2 + 1200 D1:C467 #define VX 7 + 1201 D1:C467 #define VY 10 + 1202 D1:C467 #define VZ 13 + 1203 D1:C467 #define VX_GLOBAL_VCACHE_SIZE 16 + 1204 D1:C467 #define VX_GLOBAL_VERTEX_SIZE 6 + 1205 D1:C467 ; ix = global data register [LV[0-2],LA,LE, MC[0-8],MTX,MTY,MTZ] + 1206 D1:C467 ; iy = vertex data register [VX,VY,VZ,VN[0-2]] + 1207 D1:C467 ; de = output data register [RC,SY,SX,RI[0-1],RX,RY,RZ] + 1208 D1:C467 ; bc = x vertex coordinate [16bits] + 1209 D1:C467 ; OUT register + 1210 D1:C467 ; de = de + VX_GLOBAL_VCACHE_SIZE + 1211 D1:C467 ; iy = iy + VX_GLOBAL_VERTEX_SIZE + 1212 D1:C467 ; data copied to memory + 1213 D1:C467 pea iy+VX_GLOBAL_VERTEX_SIZE + 1214 D1:C467 push de + 1215 D1:C467 ; X coordinate + 1216 D1:C467 ; ld bc, (iy+0) + 1217 D1:C467 ld hl, (ix+9) + 1218 D1:C467 ld a, (ix+0) + 1219 D1:C467 madd + 1220 D1:C467 ld a, (ix+1) + 1221 D1:C467 or a, a + 1222 D1:C467 jr z, vxVertexSkip0 + 1223 D1:C467 ld bc, (iy+2) + 1224 D1:C467 madd + 1225 D1:C467 vxVertexSkip0: + 1226 D1:C467 ld a, (ix+2) + 1227 D1:C467 ld bc, (iy+4) + 1228 D1:C467 madd.f + 1229 D1:C467 push hl + 1230 D1:C467 ; Z coordinate + 1231 D1:C467 ld hl, (ix+15) + 1232 D1:C467 ld a, (ix+8) + 1233 D1:C467 madd + 1234 D1:C467 ld a, (ix+7) + 1235 D1:C467 ld bc, (iy+2) + 1236 D1:C467 madd + 1237 D1:C467 ld a, (ix+6) + 1238 D1:C467 ld bc, (iy+0) + 1239 D1:C467 madd.f + 1240 D1:C467 push hl + 1241 D1:C467 ; Y coordinate + 1242 D1:C467 ld hl, (ix+12) + 1243 D1:C467 ld a, (ix+3) + 1244 D1:C467 madd + 1245 D1:C467 ld a, (ix+4) + 1246 D1:C467 ld bc, (iy+2) + 1247 D1:C467 madd + 1248 D1:C467 ld a, (ix+5) + 1249 D1:C467 ld bc, (iy+4) + 1250 D1:C467 madd + 1251 D1:C467 pop bc + 1252 D1:C467 pop de + 1253 D1:C467 pop iy + 1254 D1:C467 + 1255 D1:C467 ld (iy+VX), de + 1256 D1:C467 ld (iy+VY), hl + 1257 D1:C467 ld (iy+VZ), bc + 1258 D1:C467 ; 1740 + 1259 D1:C467 call vxPerspectiveDivide + 1260 D1:C467 ld (iy+CC), a + 1261 D1:C467 ld (iy+SY), b + 1262 D1:C467 ld (iy+SX), hl + 1263 D1:C467 + 1264 D1:C467 ; call vxDotProduct + 1265 D1:C467 ; jp p, $+4+3 + 1266 D1:C467 ; or a, a + 1267 D1:C467 ; sbc hl, hl + 1268 D1:C467 ; ld a, (ix+VX_LIGHT0_AMBIANT) + 1269 D1:C467 ; add a, l + 1270 D1:C467 ; cp 32 + 1271 D1:C467 ; jr nc, $+4 + 1272 D1:C467 ; ld a, 32 + 1273 D1:C467 ; ld (iy+VX_VERTEX_I0), a + 1274 D1:C467 + 1275 D1:C467 + 1276 D1:C467 lea de, iy+VX_GLOBAL_VCACHE_SIZE + 1277 D1:C467 pop iy + 1278 D1:C467 ret + 1279 D1:C467 + 1280 D1:C467 + 1281 D1:C467 vxProjectClipY: + 1282 D1:C467 rrca + 1283 D1:C467 ccf + 1284 D1:C467 rra + 1285 D1:C467 ; a = y plane code + 1286 D1:C467 ; continue on x code + 1287 D1:C467 ld hl, (iy+7) + 1288 D1:C467 bit 7,(iy+2+7) + 1289 D1:C467 jr z, vxProjectClipXAbs + 1290 D1:C467 ex de, hl + 1291 D1:C467 sbc hl, hl + 1292 D1:C467 sbc hl, de + 1293 D1:C467 vxProjectClipXAbs: + 1294 D1:C467 rra + 1295 D1:C467 sbc hl, bc + 1296 D1:C467 jr c, vxProjectClipXIn + 1297 D1:C467 rlca + 1298 D1:C467 rrca + 1299 D1:C467 ccf + 1300 D1:C467 rra + 1301 D1:C467 bit 7,(iy+8+7) + 1302 D1:C467 ret z + 1303 D1:C467 or %00001000 + 1304 D1:C467 ret + 1305 D1:C467 vxProjectClipXIn: + 1306 D1:C467 rra + 1307 D1:C467 and %00110000 + 1308 D1:C467 bit 7,(iy+8+7) + 1309 D1:C467 ret z + 1310 D1:C467 or %00001000 + 1311 D1:C467 ret + 1312 D1:C467 ; plane x right : plane x left : plane y up : plane y down : 0 : 0 : 0 : 0 + 1313 D1:C467 vxProject: + 1314 D1:C467 ld hl, (iy+10) + 1315 D1:C467 ld bc, (iy+13) + 1316 D1:C467 vxPerspectiveDivide: + 1317 D1:C467 xor a, a + 1318 D1:C467 bit 7,(iy+5+7) + 1319 D1:C467 jr z, vxProjectYAbs + 1320 D1:C467 ex de, hl + 1321 D1:C467 sbc hl, hl + 1322 D1:C467 sbc hl, de + 1323 D1:C467 vxProjectYAbs: + 1324 D1:C467 rla + 1325 D1:C467 sbc hl, bc + 1326 D1:C467 jr nc, vxProjectClipY + 1327 D1:C467 + 1328 D1:C467 add hl, bc + 1329 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1330 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1331 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1332 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1333 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1334 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1335 D1:C467 add hl,hl \ sbc hl,bc \ adc a,a + 1336 D1:C467 cpl + 1337 D1:C467 add a, a + 1338 D1:C467 ld l, VX_SCREEN_HEIGHT/2+1 ;precision stuffs + 1339 D1:C467 ld h, a + 1340 D1:C467 mlt hl + 1341 D1:C467 ld a, h + 1342 D1:C467 + 1343 D1:C467 jr nc, vxProjectYCorrect + 1344 D1:C467 neg + 1345 D1:C467 vxProjectYCorrect: + 1346 D1:C467 add a, VX_SCREEN_HCENTER + 1347 D1:C467 push af + 1348 D1:C467 ; project x coordinate + 1349 D1:C467 ld hl, (iy+7) + 1350 D1:C467 xor a, a + 1351 D1:C467 bit 7, (iy+2+7) + 1352 D1:C467 jr z, vxProjectXAbs + 1353 D1:C467 ex de, hl + 1354 D1:C467 sbc hl, hl + 1355 D1:C467 sbc hl, de + 1356 D1:C467 vxProjectXAbs: + 1357 D1:C467 rla + 1358 D1:C467 sbc hl, bc + 1359 D1:C467 jr nc, vxProjectClipX + 1360 D1:C467 add hl, bc + 1361 D1:C467 + 1362 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1363 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1364 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1365 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1366 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1367 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1368 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1369 D1:C467 add hl,hl \ sbc hl,bc \ adc a,a + 1370 D1:C467 cpl + 1371 D1:C467 ld c, a + 1372 D1:C467 ld b, VX_SCREEN_WIDTH/2+1 + 1373 D1:C467 mlt bc + 1374 D1:C467 ld a, b + 1375 D1:C467 sbc hl, hl + 1376 D1:C467 jr nc, $+3 + 1377 D1:C467 cpl + 1378 D1:C467 ld l, a + 1379 D1:C467 ld bc, VX_SCREEN_WCENTER + 1380 D1:C467 adc hl, bc + 1381 D1:C467 pop bc ; grab y in b + 1382 D1:C467 xor a,a + 1383 D1:C467 ret + 1384 D1:C467 vxProjectClipX: + 1385 D1:C467 pop bc + 1386 D1:C467 rrca + 1387 D1:C467 ccf + 1388 D1:C467 rra + 1389 D1:C467 bit 7,(iy+8+7) + 1390 D1:C467 ret z + 1391 D1:C467 or %00001000 + 1392 D1:C467 ret + 1393 D1:C467 Monitor_Size_End: + 1394 D1:C467 .echo Monitor_Size_End-Monitor_Size_Start + 1395 D1:C467 #endcomment Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" - 9 D1:C44B - - - - #include "vxMemory.ez80" + 9 D1:C467 - - - - #include "vxMemory.ez80" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMemory.ez80" - 1 D1:C44B - - - - #define VX_RLE_COMPRESSED %01000000 - 2 D1:C44B - - - - #define VX_ERROR_NOT_FOUND $FF - 3 D1:C44B - - - - #define VX_ERROR_RAM_FULL $FE - 4 D1:C44B - - - - - 5 D1:C44B - - - - vxFindFile: - 6 D1:C44B - - - - ; load a file from an appv - 7 D1:C44B - - - - ; hl : file name - 8 D1:C44B - - - - ; hl = file adress - 9 D1:C44B - - - - ; if error : c set, a = error code - 10 D1:C44B CD 20 03 02 call _mov9toOP1 - 11 D1:C44F CD 0C 05 02 call _ChkFindSym - 12 D1:C453 D8 - - - ret c - 13 D1:C454 CD 98 1F 02 call _ChkInRam - 14 D1:C458 EB - - - ex de,hl - 15 D1:C459 28 08 - - jr z, vxFileUnarchived - 16 D1:C45B - - - - ; 9 bytes - name size (1b), name string, appv size (2b) - 17 D1:C45B 11 09 00 00 ld de, 9 - 18 D1:C45F 19 - - - add hl, de - 19 D1:C460 5E - - - ld e, (hl) - 20 D1:C461 19 - - - add hl, de - 21 D1:C462 23 - - - inc hl - 22 D1:C463 - - - - vxFileUnarchived: - 23 D1:C463 23 - - - inc hl - 24 D1:C464 23 - - - inc hl - 25 D1:C465 C9 - - - ret - 26 D1:C466 - - - - #comment - 27 D1:C466 vxAllocateMemory: - 28 D1:C466 ; error = c - 29 D1:C466 push bc - 30 D1:C466 ld ix, vxTempMemoryBlock - 31 D1:C466 ld hl, (ix+3) - 32 D1:C466 inc hl - 33 D1:C466 ld (ix+3), hl - 34 D1:C466 lea hl, ix-1 - 35 D1:C466 call _mov9toOP1 - 36 D1:C466 pop hl - 37 D1:C466 ld a, 16h - 38 D1:C466 call _CreateVar - 39 D1:C466 inc de - 40 D1:C466 inc de - 41 D1:C466 ex de, hl - 42 D1:C466 ret - 43 D1:C466 vxTempMemoryBlock: - 44 D1:C466 .db "VMB000",0 - 45 D1:C466 vxCopyImage: - 46 D1:C466 ; hl = src ; de = dest - 47 D1:C466 ld a, (hl) - 48 D1:C466 ; a = src format - 49 D1:C466 inc hl - 50 D1:C466 ld bc, (hl) - 51 D1:C466 dec hl - 52 D1:C466 ; mlt bc - 53 D1:C466 ld bc, 240*320 - 54 D1:C466 push bc - 55 D1:C466 ld bc, 3 - 56 D1:C466 ldir - 57 D1:C466 pop bc - 58 D1:C466 #endcomment - 59 D1:C466 - - - - - 60 D1:C466 - - - - vxCopyImage: - 61 D1:C466 - - - - ; hl : src - 62 D1:C466 - - - - ; de : dest - 63 D1:C466 - - - - ; copy an framebuffer type image, compressed or not - 64 D1:C466 - - - - ; 1 byte - type, 3 bytes - size - 65 D1:C466 ED 07 - - ld bc, (hl) - 66 D1:C468 23 23 23 - inc hl \ inc hl \ inc hl - 67 D1:C46B 7E - - - ld a, (hl) - 68 D1:C46C 23 - - - inc hl - 69 D1:C46D ED 64 40 - tst a, VX_RLE_COMPRESSED - 70 D1:C470 20 03 - - jr nz, vxUncompressRLE - 71 D1:C472 - - - - vxCopyData: - 72 D1:C472 ED B0 - - ldir - 73 D1:C474 C9 - - - ret - 74 D1:C475 - - - - vxUncompressRLE: - 75 D1:C475 D5 - - - push de - 76 D1:C476 EB - - - ex de, hl - 77 D1:C477 09 - - - add hl, bc - 78 D1:C478 22 7F C4 D1 ld (VX_MAX_RLE), hl - 79 D1:C47C EB - - - ex de, hl - 80 D1:C47D D1 - - - pop de - 81 D1:C47E - - - - vxRLELoop: - 82 D1:C47E - - - - VX_MAX_RLE=$+1 - 83 D1:C47E 01 00 00 00 ld bc, $0 - 84 D1:C482 EB - - - ex de, hl - 85 D1:C483 B7 - - - or a, a - 86 D1:C484 ED 42 - - sbc hl, bc - 87 D1:C486 D0 - - - ret nc - 88 D1:C487 09 - - - add hl, bc - 89 D1:C488 EB - - - ex de, hl - 90 D1:C489 01 00 00 00 ld bc, 0 - 91 D1:C48D 7E - - - ld a, (hl) - 92 D1:C48E E6 7F - - and $7F - 93 D1:C490 3C - - - inc a - 94 D1:C491 4F - - - ld c, a - 95 D1:C492 7E - - - ld a, (hl) - 96 D1:C493 E6 80 - - and $80 - 97 D1:C495 28 14 - - jr z, vxRLECopyRow - 98 D1:C497 - - - - vxRLECopyToken: - 99 D1:C497 23 - - - inc hl - 100 D1:C498 E5 - - - push hl - 101 D1:C499 ED A0 - - ldi - 102 D1:C49B E2 A5 C4 D1 jp po, vxRLECopyEnd - 103 D1:C49F 37 - - - scf - 104 D1:C4A0 ED 62 - - sbc hl, hl - 105 D1:C4A2 19 - - - add hl, de - 106 D1:C4A3 ED B0 - - ldir - 107 D1:C4A5 - - - - vxRLECopyEnd: - 108 D1:C4A5 E1 - - - pop hl - 109 D1:C4A6 23 - - - inc hl - 110 D1:C4A7 C3 7E C4 D1 jp vxRLELoop - 111 D1:C4AB - - - - vxRLECopyRow: - 112 D1:C4AB 23 - - - inc hl - 113 D1:C4AC ED B0 - - ldir - 114 D1:C4AE C3 7E C4 D1 jp vxRLELoop - 115 D1:C4B2 - - - - - 116 D1:C4B2 - - - - vxCreateMemoryPool: - 117 D1:C4B2 F3 - - - di - 118 D1:C4B3 3E D1 - - ld a, $D1 - 119 D1:C4B5 - - - - ;ld mb,a - 120 D1:C4B5 ED 6D - - .db $ED,$6D ; assembler bug - 121 D1:C4B7 40 31 7E 98 ld.sis sp,$987E - 122 D1:C4BB 49 CD 36 C5 call.is vxUnlockWrite - $D10000 - 123 D1:C4BF 3E D0 - - ld a,$D0 - 124 D1:C4C1 - - - - ;ld mb,a - 125 D1:C4C1 ED 6D - - .db $ED,$6D - 126 D1:C4C3 - - - - - 127 D1:C4C3 3E 3F - - ld a, $3F - 128 D1:C4C5 CD 02 C5 D1 call vxMemorySafeErase - 129 D1:C4C9 3E 3E - - ld a, $3E - 130 D1:C4CB CD 02 C5 D1 call vxMemorySafeErase - 131 D1:C4CF 3E 3D - - ld a, $3D - 132 D1:C4D1 CD 02 C5 D1 call vxMemorySafeErase - 133 D1:C4D5 3E 3C - - ld a, $3C - 134 D1:C4D7 CD 02 C5 D1 call vxMemorySafeErase - 135 D1:C4DB - - - - - 136 D1:C4DB 21 01 00 D0 ld hl, $D00001 - 137 D1:C4DF 36 A5 - - ld (hl), $A5 - 138 D1:C4E1 2B - - - dec hl - 139 D1:C4E2 36 5A - - ld (hl), $5A - 140 D1:C4E4 11 00 00 3C ld de, $3C0000 - 141 D1:C4E8 01 00 00 04 ld bc, $40000 - 142 D1:C4EC - - - - - 143 D1:C4EC CD E0 02 00 call __WriteFlash - 144 D1:C4F0 - - - - - 145 D1:C4F0 F3 - - - di - 146 D1:C4F1 40 31 7E 98 ld.sis sp,$987E - 147 D1:C4F5 3E D1 - - ld a, $D1 - 148 D1:C4F7 - - - - ;ld mb,a - 149 D1:C4F7 ED 6D - - .db $ED,$6D ; assembler bug - 150 D1:C4F9 49 CD 49 C5 call.is vxLockWrite - $D10000 - 151 D1:C4FD 3E D0 - - ld a,$D0 - 152 D1:C4FF - - - - ;ld mb,a - 153 D1:C4FF ED 6D - - .db $ED,$6D - 154 D1:C501 - - - - ; all RAM is free now - 155 D1:C501 - - - - - 156 D1:C501 C9 - - - ret - 157 D1:C502 - - - - - 158 D1:C502 - - - - vxMemorySafeErase: - 159 D1:C502 01 F8 00 00 ld bc,$0000F8 - 160 D1:C506 C5 - - - push bc - 161 D1:C507 C3 DC 02 00 jp __EraseFlashPage - 162 D1:C50B - - - - vxDestroyMemoryPool: - 163 D1:C50B - - - - - 164 D1:C50B - - - - ; restore RAM state - 165 D1:C50B 21 00 00 3C ld hl, $3C0000 - 166 D1:C50F 11 00 00 D0 ld de, $D00000 - 167 D1:C513 01 00 00 01 ld bc, $010000 - 168 D1:C517 ED B0 - - ldir - 169 D1:C519 - - - - - 170 D1:C519 - - - - ; ld hl, $3D0000 - 171 D1:C519 - - - - ; ld de, $D10000 - 172 D1:C519 - - - - ; ld bc, $010000 - 173 D1:C519 - - - - ; ldir - 174 D1:C519 - - - - - 175 D1:C519 21 00 00 3E ld hl, $3E0000 - 176 D1:C51D 11 00 00 D2 ld de, $D20000 - 177 D1:C521 01 00 00 01 ld bc, $010000 - 178 D1:C525 ED B0 - - ldir - 179 D1:C527 - - - - - 180 D1:C527 21 00 00 3F ld hl, $3F0000 - 181 D1:C52B 11 00 00 D3 ld de, $D30000 - 182 D1:C52F 01 00 00 01 ld bc, $010000 - 183 D1:C533 ED B0 - - ldir - 184 D1:C535 - - - - - 185 D1:C535 C9 - - - ret - 186 D1:C536 - - - - .assume ADL=0 - 187 D1:C536 - - - - vxUnlockWrite: - 188 D1:C536 - - - - - 189 D1:C536 3E 8C - - ld a, $8C - 190 D1:C538 ED 39 24 - out0 ($24), a - 191 D1:C53B 0E 04 - - ld c, 4 - 192 D1:C53D ED 38 06 - in0 a, (6) - 193 D1:C540 B1 - - - or c - 194 D1:C541 ED 39 06 - out0 (6), a - 195 D1:C544 ED 09 28 - out0($28), c - 196 D1:C547 - - - - - 197 D1:C547 49 C9 - - ret.l - 198 D1:C549 - - - - - 199 D1:C549 - - - - vxLockWrite: - 200 D1:C549 AF - - - xor a, a - 201 D1:C54A ED 39 28 - out0 ($28), a - 202 D1:C54D ED 38 06 - in0 a, (6) - 203 D1:C550 CB 97 - - res 2, a - 204 D1:C552 ED 39 06 - out0 (6), a - 205 D1:C555 3E 88 - - ld a, $88 - 206 D1:C557 ED 39 24 - out0 ($24), a - 207 D1:C55A 49 C9 - - ret.l - 208 D1:C55C - - - - .assume ADL=1 - 209 D1:C55C - - - - - 210 D1:C55C - - - - vxZX7Uncompress: - 211 D1:C55C - - - - ; Routine copied from the C toolchain & speed optimized - 212 D1:C55C - - - - ; Input: - 213 D1:C55C - - - - ; HL = compressed data pointer - 214 D1:C55C - - - - ; DE = output data pointer - 215 D1:C55C 3E 80 - - ld a, 128 - 216 D1:C55E - - - - - 217 D1:C55E - - - - dzx7t_copy_byte_loop: - 218 D1:C55E - - - - - 219 D1:C55E ED A0 - - ldi ; copy literal byte - 220 D1:C560 - - - - - 221 D1:C560 - - - - dzx7t_main_loop: - 222 D1:C560 - - - - - 223 D1:C560 87 - - - add a, a ; check next bit - 224 D1:C561 20 03 7E 23 + 1 D1:C467 - - - - #define VX_RLE_COMPRESSED %01000000 + 2 D1:C467 - - - - #define VX_ERROR_NOT_FOUND $FF + 3 D1:C467 - - - - #define VX_ERROR_RAM_FULL $FE + 4 D1:C467 - - - - + 5 D1:C467 - - - - vxFindFile: + 6 D1:C467 - - - - ; load a file from an appv + 7 D1:C467 - - - - ; hl : file name + 8 D1:C467 - - - - ; hl = file adress + 9 D1:C467 - - - - ; if error : c set, a = error code + 10 D1:C467 CD 20 03 02 call _mov9toOP1 + 11 D1:C46B CD 0C 05 02 call _ChkFindSym + 12 D1:C46F D8 - - - ret c + 13 D1:C470 CD 98 1F 02 call _ChkInRam + 14 D1:C474 EB - - - ex de,hl + 15 D1:C475 28 08 - - jr z, vxFileUnarchived + 16 D1:C477 - - - - ; 9 bytes - name size (1b), name string, appv size (2b) + 17 D1:C477 11 09 00 00 ld de, 9 + 18 D1:C47B 19 - - - add hl, de + 19 D1:C47C 5E - - - ld e, (hl) + 20 D1:C47D 19 - - - add hl, de + 21 D1:C47E 23 - - - inc hl + 22 D1:C47F - - - - vxFileUnarchived: + 23 D1:C47F 23 - - - inc hl + 24 D1:C480 23 - - - inc hl + 25 D1:C481 C9 - - - ret + 26 D1:C482 - - - - #comment + 27 D1:C482 vxAllocateMemory: + 28 D1:C482 ; error = c + 29 D1:C482 push bc + 30 D1:C482 ld ix, vxTempMemoryBlock + 31 D1:C482 ld hl, (ix+3) + 32 D1:C482 inc hl + 33 D1:C482 ld (ix+3), hl + 34 D1:C482 lea hl, ix-1 + 35 D1:C482 call _mov9toOP1 + 36 D1:C482 pop hl + 37 D1:C482 ld a, 16h + 38 D1:C482 call _CreateVar + 39 D1:C482 inc de + 40 D1:C482 inc de + 41 D1:C482 ex de, hl + 42 D1:C482 ret + 43 D1:C482 vxTempMemoryBlock: + 44 D1:C482 .db "VMB000",0 + 45 D1:C482 vxCopyImage: + 46 D1:C482 ; hl = src ; de = dest + 47 D1:C482 ld a, (hl) + 48 D1:C482 ; a = src format + 49 D1:C482 inc hl + 50 D1:C482 ld bc, (hl) + 51 D1:C482 dec hl + 52 D1:C482 ; mlt bc + 53 D1:C482 ld bc, 240*320 + 54 D1:C482 push bc + 55 D1:C482 ld bc, 3 + 56 D1:C482 ldir + 57 D1:C482 pop bc + 58 D1:C482 #endcomment + 59 D1:C482 - - - - + 60 D1:C482 - - - - vxCopyImage: + 61 D1:C482 - - - - ; hl : src + 62 D1:C482 - - - - ; de : dest + 63 D1:C482 - - - - ; copy an framebuffer type image, compressed or not + 64 D1:C482 - - - - ; 1 byte - type, 3 bytes - size + 65 D1:C482 ED 07 - - ld bc, (hl) + 66 D1:C484 23 23 23 - inc hl \ inc hl \ inc hl + 67 D1:C487 7E - - - ld a, (hl) + 68 D1:C488 23 - - - inc hl + 69 D1:C489 ED 64 40 - tst a, VX_RLE_COMPRESSED + 70 D1:C48C 20 03 - - jr nz, vxUncompressRLE + 71 D1:C48E - - - - vxCopyData: + 72 D1:C48E ED B0 - - ldir + 73 D1:C490 C9 - - - ret + 74 D1:C491 - - - - vxUncompressRLE: + 75 D1:C491 D5 - - - push de + 76 D1:C492 EB - - - ex de, hl + 77 D1:C493 09 - - - add hl, bc + 78 D1:C494 22 9B C4 D1 ld (VX_MAX_RLE), hl + 79 D1:C498 EB - - - ex de, hl + 80 D1:C499 D1 - - - pop de + 81 D1:C49A - - - - vxRLELoop: + 82 D1:C49A - - - - VX_MAX_RLE=$+1 + 83 D1:C49A 01 00 00 00 ld bc, $0 + 84 D1:C49E EB - - - ex de, hl + 85 D1:C49F B7 - - - or a, a + 86 D1:C4A0 ED 42 - - sbc hl, bc + 87 D1:C4A2 D0 - - - ret nc + 88 D1:C4A3 09 - - - add hl, bc + 89 D1:C4A4 EB - - - ex de, hl + 90 D1:C4A5 01 00 00 00 ld bc, 0 + 91 D1:C4A9 7E - - - ld a, (hl) + 92 D1:C4AA E6 7F - - and $7F + 93 D1:C4AC 3C - - - inc a + 94 D1:C4AD 4F - - - ld c, a + 95 D1:C4AE 7E - - - ld a, (hl) + 96 D1:C4AF E6 80 - - and $80 + 97 D1:C4B1 28 14 - - jr z, vxRLECopyRow + 98 D1:C4B3 - - - - vxRLECopyToken: + 99 D1:C4B3 23 - - - inc hl + 100 D1:C4B4 E5 - - - push hl + 101 D1:C4B5 ED A0 - - ldi + 102 D1:C4B7 E2 C1 C4 D1 jp po, vxRLECopyEnd + 103 D1:C4BB 37 - - - scf + 104 D1:C4BC ED 62 - - sbc hl, hl + 105 D1:C4BE 19 - - - add hl, de + 106 D1:C4BF ED B0 - - ldir + 107 D1:C4C1 - - - - vxRLECopyEnd: + 108 D1:C4C1 E1 - - - pop hl + 109 D1:C4C2 23 - - - inc hl + 110 D1:C4C3 C3 9A C4 D1 jp vxRLELoop + 111 D1:C4C7 - - - - vxRLECopyRow: + 112 D1:C4C7 23 - - - inc hl + 113 D1:C4C8 ED B0 - - ldir + 114 D1:C4CA C3 9A C4 D1 jp vxRLELoop + 115 D1:C4CE - - - - + 116 D1:C4CE - - - - vxCreateMemoryPool: + 117 D1:C4CE F3 - - - di + 118 D1:C4CF 3E D1 - - ld a, $D1 + 119 D1:C4D1 - - - - ;ld mb,a + 120 D1:C4D1 ED 6D - - .db $ED,$6D ; assembler bug + 121 D1:C4D3 40 31 7E 98 ld.sis sp,$987E + 122 D1:C4D7 49 CD 52 C5 call.is vxUnlockWrite - $D10000 + 123 D1:C4DB 3E D0 - - ld a,$D0 + 124 D1:C4DD - - - - ;ld mb,a + 125 D1:C4DD ED 6D - - .db $ED,$6D + 126 D1:C4DF - - - - + 127 D1:C4DF 3E 3F - - ld a, $3F + 128 D1:C4E1 CD 1E C5 D1 call vxMemorySafeErase + 129 D1:C4E5 3E 3E - - ld a, $3E + 130 D1:C4E7 CD 1E C5 D1 call vxMemorySafeErase + 131 D1:C4EB 3E 3D - - ld a, $3D + 132 D1:C4ED CD 1E C5 D1 call vxMemorySafeErase + 133 D1:C4F1 3E 3C - - ld a, $3C + 134 D1:C4F3 CD 1E C5 D1 call vxMemorySafeErase + 135 D1:C4F7 - - - - + 136 D1:C4F7 21 01 00 D0 ld hl, $D00001 + 137 D1:C4FB 36 A5 - - ld (hl), $A5 + 138 D1:C4FD 2B - - - dec hl + 139 D1:C4FE 36 5A - - ld (hl), $5A + 140 D1:C500 11 00 00 3C ld de, $3C0000 + 141 D1:C504 01 00 00 04 ld bc, $40000 + 142 D1:C508 - - - - + 143 D1:C508 CD E0 02 00 call __WriteFlash + 144 D1:C50C - - - - + 145 D1:C50C F3 - - - di + 146 D1:C50D 40 31 7E 98 ld.sis sp,$987E + 147 D1:C511 3E D1 - - ld a, $D1 + 148 D1:C513 - - - - ;ld mb,a + 149 D1:C513 ED 6D - - .db $ED,$6D ; assembler bug + 150 D1:C515 49 CD 65 C5 call.is vxLockWrite - $D10000 + 151 D1:C519 3E D0 - - ld a,$D0 + 152 D1:C51B - - - - ;ld mb,a + 153 D1:C51B ED 6D - - .db $ED,$6D + 154 D1:C51D - - - - ; all RAM is free now + 155 D1:C51D - - - - + 156 D1:C51D C9 - - - ret + 157 D1:C51E - - - - + 158 D1:C51E - - - - vxMemorySafeErase: + 159 D1:C51E 01 F8 00 00 ld bc,$0000F8 + 160 D1:C522 C5 - - - push bc + 161 D1:C523 C3 DC 02 00 jp __EraseFlashPage + 162 D1:C527 - - - - vxDestroyMemoryPool: + 163 D1:C527 - - - - + 164 D1:C527 - - - - ; restore RAM state + 165 D1:C527 21 00 00 3C ld hl, $3C0000 + 166 D1:C52B 11 00 00 D0 ld de, $D00000 + 167 D1:C52F 01 00 00 01 ld bc, $010000 + 168 D1:C533 ED B0 - - ldir + 169 D1:C535 - - - - + 170 D1:C535 - - - - ; ld hl, $3D0000 + 171 D1:C535 - - - - ; ld de, $D10000 + 172 D1:C535 - - - - ; ld bc, $010000 + 173 D1:C535 - - - - ; ldir + 174 D1:C535 - - - - + 175 D1:C535 21 00 00 3E ld hl, $3E0000 + 176 D1:C539 11 00 00 D2 ld de, $D20000 + 177 D1:C53D 01 00 00 01 ld bc, $010000 + 178 D1:C541 ED B0 - - ldir + 179 D1:C543 - - - - + 180 D1:C543 21 00 00 3F ld hl, $3F0000 + 181 D1:C547 11 00 00 D3 ld de, $D30000 + 182 D1:C54B 01 00 00 01 ld bc, $010000 + 183 D1:C54F ED B0 - - ldir + 184 D1:C551 - - - - + 185 D1:C551 C9 - - - ret + 186 D1:C552 - - - - .assume ADL=0 + 187 D1:C552 - - - - vxUnlockWrite: + 188 D1:C552 - - - - + 189 D1:C552 3E 8C - - ld a, $8C + 190 D1:C554 ED 39 24 - out0 ($24), a + 191 D1:C557 0E 04 - - ld c, 4 + 192 D1:C559 ED 38 06 - in0 a, (6) + 193 D1:C55C B1 - - - or c + 194 D1:C55D ED 39 06 - out0 (6), a + 195 D1:C560 ED 09 28 - out0($28), c + 196 D1:C563 - - - - + 197 D1:C563 49 C9 - - ret.l + 198 D1:C565 - - - - + 199 D1:C565 - - - - vxLockWrite: + 200 D1:C565 AF - - - xor a, a + 201 D1:C566 ED 39 28 - out0 ($28), a + 202 D1:C569 ED 38 06 - in0 a, (6) + 203 D1:C56C CB 97 - - res 2, a + 204 D1:C56E ED 39 06 - out0 (6), a + 205 D1:C571 3E 88 - - ld a, $88 + 206 D1:C573 ED 39 24 - out0 ($24), a + 207 D1:C576 49 C9 - - ret.l + 208 D1:C578 - - - - .assume ADL=1 + 209 D1:C578 - - - - + 210 D1:C578 - - - - vxZX7Uncompress: + 211 D1:C578 - - - - ; Routine copied from the C toolchain & speed optimized + 212 D1:C578 - - - - ; Input: + 213 D1:C578 - - - - ; HL = compressed data pointer + 214 D1:C578 - - - - ; DE = output data pointer + 215 D1:C578 3E 80 - - ld a, 128 + 216 D1:C57A - - - - + 217 D1:C57A - - - - dzx7t_copy_byte_loop: + 218 D1:C57A - - - - + 219 D1:C57A ED A0 - - ldi ; copy literal byte + 220 D1:C57C - - - - + 221 D1:C57C - - - - dzx7t_main_loop: + 222 D1:C57C - - - - + 223 D1:C57C 87 - - - add a, a ; check next bit + 224 D1:C57D 20 03 7E 23 17 - - - jr nz,$+5 \ ld a,(hl) \ inc hl \ rla - 225 D1:C566 30 F6 - - jr nc, dzx7t_copy_byte_loop ; next bit indicates either literal or sequence - 226 D1:C568 - - - - - 227 D1:C568 - - - - ; determine number of bits used for length (Elias gamma coding) - 228 D1:C568 - - - - - 229 D1:C568 D5 - - - push de - 230 D1:C569 11 00 00 00 ld de, 0 - 231 D1:C56D 01 01 00 00 ld bc, 1 - 232 D1:C571 - - - - - 233 D1:C571 - - - - dzx7t_len_size_loop: - 234 D1:C571 - - - - - 235 D1:C571 14 - - - inc d - 236 D1:C572 87 - - - add a, a ; check next bit - 237 D1:C573 20 03 7E 23 + 225 D1:C582 30 F6 - - jr nc, dzx7t_copy_byte_loop ; next bit indicates either literal or sequence + 226 D1:C584 - - - - + 227 D1:C584 - - - - ; determine number of bits used for length (Elias gamma coding) + 228 D1:C584 - - - - + 229 D1:C584 D5 - - - push de + 230 D1:C585 11 00 00 00 ld de, 0 + 231 D1:C589 01 01 00 00 ld bc, 1 + 232 D1:C58D - - - - + 233 D1:C58D - - - - dzx7t_len_size_loop: + 234 D1:C58D - - - - + 235 D1:C58D 14 - - - inc d + 236 D1:C58E 87 - - - add a, a ; check next bit + 237 D1:C58F 20 03 7E 23 17 - - - jr nz,$+5 \ ld a,(hl) \ inc hl \ rla - 238 D1:C578 30 F7 - - jr nc, dzx7t_len_size_loop - 239 D1:C57A C3 8A C5 D1 jp dzx7t_len_value_start - 240 D1:C57E - - - - - 241 D1:C57E - - - - ; determine length - 242 D1:C57E - - - - - 243 D1:C57E - - - - dzx7t_len_value_loop: - 244 D1:C57E - - - - - 245 D1:C57E 87 - - - add a, a ; check next bit - 246 D1:C57F 20 03 7E 23 + 238 D1:C594 30 F7 - - jr nc, dzx7t_len_size_loop + 239 D1:C596 C3 A6 C5 D1 jp dzx7t_len_value_start + 240 D1:C59A - - - - + 241 D1:C59A - - - - ; determine length + 242 D1:C59A - - - - + 243 D1:C59A - - - - dzx7t_len_value_loop: + 244 D1:C59A - - - - + 245 D1:C59A 87 - - - add a, a ; check next bit + 246 D1:C59B 20 03 7E 23 17 - - - jr nz,$+5 \ ld a,(hl) \ inc hl \ rla - 247 D1:C584 CB 11 - - rl c - 248 D1:C586 CB 10 - - rl b - 249 D1:C588 38 36 - - jr c, dzx7t_exit ; check end marker - 250 D1:C58A - - - - - 251 D1:C58A - - - - dzx7t_len_value_start: - 252 D1:C58A - - - - - 253 D1:C58A 15 - - - dec d - 254 D1:C58B 20 F1 - - jr nz, dzx7t_len_value_loop - 255 D1:C58D 03 - - - inc bc ; adjust length - 256 D1:C58E - - - - - 257 D1:C58E - - - - ; determine offset - 258 D1:C58E - - - - - 259 D1:C58E 5E - - - ld e, (hl) ; load offset flag (1 bit) + offset value (7 bits) - 260 D1:C58F 23 - - - inc hl - 261 D1:C590 - - - - - 262 D1:C590 CB 23 - - sla e - 263 D1:C592 1C - - - inc e - 264 D1:C593 - - - - - 265 D1:C593 30 22 - - jr nc, dzx7t_offset_end ; if offset flag is set, load 4 extra bits - 266 D1:C595 87 - - - add a, a ; check next bit - 267 D1:C596 20 03 7E 23 + 247 D1:C5A0 CB 11 - - rl c + 248 D1:C5A2 CB 10 - - rl b + 249 D1:C5A4 38 36 - - jr c, dzx7t_exit ; check end marker + 250 D1:C5A6 - - - - + 251 D1:C5A6 - - - - dzx7t_len_value_start: + 252 D1:C5A6 - - - - + 253 D1:C5A6 15 - - - dec d + 254 D1:C5A7 20 F1 - - jr nz, dzx7t_len_value_loop + 255 D1:C5A9 03 - - - inc bc ; adjust length + 256 D1:C5AA - - - - + 257 D1:C5AA - - - - ; determine offset + 258 D1:C5AA - - - - + 259 D1:C5AA 5E - - - ld e, (hl) ; load offset flag (1 bit) + offset value (7 bits) + 260 D1:C5AB 23 - - - inc hl + 261 D1:C5AC - - - - + 262 D1:C5AC CB 23 - - sla e + 263 D1:C5AE 1C - - - inc e + 264 D1:C5AF - - - - + 265 D1:C5AF 30 22 - - jr nc, dzx7t_offset_end ; if offset flag is set, load 4 extra bits + 266 D1:C5B1 87 - - - add a, a ; check next bit + 267 D1:C5B2 20 03 7E 23 17 - - - jr nz,$+5 \ ld a,(hl) \ inc hl \ rla - 268 D1:C59B CB 12 - - rl d ; insert first bit into D - 269 D1:C59D 87 - - - add a, a ; check next bit - 270 D1:C59E 20 03 7E 23 + 268 D1:C5B7 CB 12 - - rl d ; insert first bit into D + 269 D1:C5B9 87 - - - add a, a ; check next bit + 270 D1:C5BA 20 03 7E 23 17 - - - jr nz,$+5 \ ld a,(hl) \ inc hl \ rla - 271 D1:C5A3 CB 12 - - rl d ; insert second bit into D - 272 D1:C5A5 87 - - - add a, a ; check next bit - 273 D1:C5A6 20 03 7E 23 + 271 D1:C5BF CB 12 - - rl d ; insert second bit into D + 272 D1:C5C1 87 - - - add a, a ; check next bit + 273 D1:C5C2 20 03 7E 23 17 - - - jr nz,$+5 \ ld a,(hl) \ inc hl \ rla - 274 D1:C5AB CB 12 - - rl d ; insert third bit into D - 275 D1:C5AD 87 - - - add a, a ; check next bit - 276 D1:C5AE 20 03 7E 23 + 274 D1:C5C7 CB 12 - - rl d ; insert third bit into D + 275 D1:C5C9 87 - - - add a, a ; check next bit + 276 D1:C5CA 20 03 7E 23 17 - - - jr nz,$+5 \ ld a,(hl) \ inc hl \ rla - 277 D1:C5B3 3F - - - ccf - 278 D1:C5B4 38 01 - - jr c, dzx7t_offset_end - 279 D1:C5B6 14 - - - inc d ; equivalent to adding 128 to DE - 280 D1:C5B7 - - - - - 281 D1:C5B7 - - - - dzx7t_offset_end: - 282 D1:C5B7 - - - - - 283 D1:C5B7 CB 1B - - rr e ; insert inverted fourth bit into E - 284 D1:C5B9 - - - - - 285 D1:C5B9 - - - - ; copy previous sequence - 286 D1:C5B9 - - - - - 287 D1:C5B9 E3 - - - ex (sp), hl ; store source, restore destination - 288 D1:C5BA E5 - - - push hl ; store destination - 289 D1:C5BB ED 52 - - sbc hl, de ; HL = destination - offset - 1 - 290 D1:C5BD D1 - - - pop de ; DE = destination - 291 D1:C5BE ED B0 - - ldir - 292 D1:C5C0 - - - - - 293 D1:C5C0 - - - - dzx7t_exit: - 294 D1:C5C0 - - - - - 295 D1:C5C0 E1 - - - pop hl ; restore source address (compressed data) - 296 D1:C5C1 30 9D - - jr nc, dzx7t_main_loop - 297 D1:C5C3 C9 - - - ret + 277 D1:C5CF 3F - - - ccf + 278 D1:C5D0 38 01 - - jr c, dzx7t_offset_end + 279 D1:C5D2 14 - - - inc d ; equivalent to adding 128 to DE + 280 D1:C5D3 - - - - + 281 D1:C5D3 - - - - dzx7t_offset_end: + 282 D1:C5D3 - - - - + 283 D1:C5D3 CB 1B - - rr e ; insert inverted fourth bit into E + 284 D1:C5D5 - - - - + 285 D1:C5D5 - - - - ; copy previous sequence + 286 D1:C5D5 - - - - + 287 D1:C5D5 E3 - - - ex (sp), hl ; store source, restore destination + 288 D1:C5D6 E5 - - - push hl ; store destination + 289 D1:C5D7 ED 52 - - sbc hl, de ; HL = destination - offset - 1 + 290 D1:C5D9 D1 - - - pop de ; DE = destination + 291 D1:C5DA ED B0 - - ldir + 292 D1:C5DC - - - - + 293 D1:C5DC - - - - dzx7t_exit: + 294 D1:C5DC - - - - + 295 D1:C5DC E1 - - - pop hl ; restore source address (compressed data) + 296 D1:C5DD 30 9D - - jr nc, dzx7t_main_loop + 297 D1:C5DF C9 - - - ret Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" - 10 D1:C5C4 - - - - #include "vxPostProcessing.ez80" + 10 D1:C5E0 - - - - #include "vxPostProcessing.ez80" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPostProcessing.ez80" - 1 D1:C5C4 - - - - #macro blend50() - 2 D1:C5C4 ld c, (hl) - 3 D1:C5C4 push af - 4 D1:C5C4 ld d, a - 5 D1:C5C4 and c - 6 D1:C5C4 and VX_COLOR_LOW_BIT - 7 D1:C5C4 ld e, a - 8 D1:C5C4 ld a, d - 9 D1:C5C4 and ~VX_COLOR_LOW_BIT - 10 D1:C5C4 ld d, a - 11 D1:C5C4 ld a, c - 12 D1:C5C4 and ~VX_COLOR_LOW_BIT - 13 D1:C5C4 add a, d - 14 D1:C5C4 rra - 15 D1:C5C4 add a, e - 16 D1:C5C4 ld (hl), a - 17 D1:C5C4 pop af - 18 D1:C5C4 #endmacro - 19 D1:C5C4 - - - - - 20 D1:C5C4 - - - - #macro blend25() - 21 D1:C5C4 ld c, (hl) - 22 D1:C5C4 push af - 23 D1:C5C4 push af - 24 D1:C5C4 ld d, a - 25 D1:C5C4 and c - 26 D1:C5C4 and VX_COLOR_LOW_BIT - 27 D1:C5C4 ld e, a - 28 D1:C5C4 ld a, d - 29 D1:C5C4 and ~VX_COLOR_LOW_BIT - 30 D1:C5C4 ld d, a - 31 D1:C5C4 ld a, c - 32 D1:C5C4 and ~VX_COLOR_LOW_BIT - 33 D1:C5C4 add a, d - 34 D1:C5C4 rra - 35 D1:C5C4 add a, e - 36 D1:C5C4 ; take A, blend it with initial color - 37 D1:C5C4 ld c, a - 38 D1:C5C4 pop af - 39 D1:C5C4 ld d, a - 40 D1:C5C4 and c - 41 D1:C5C4 and VX_COLOR_LOW_BIT - 42 D1:C5C4 ld e, a - 43 D1:C5C4 ld a, d - 44 D1:C5C4 and ~VX_COLOR_LOW_BIT - 45 D1:C5C4 ld d, a - 46 D1:C5C4 ld a, c - 47 D1:C5C4 and ~VX_COLOR_LOW_BIT - 48 D1:C5C4 add a, d - 49 D1:C5C4 rra - 50 D1:C5C4 add a, e - 51 D1:C5C4 ld (hl), a - 52 D1:C5C4 pop af - 53 D1:C5C4 #endmacro - 54 D1:C5C4 - - - - - 55 D1:C5C4 - - - - - 56 D1:C5C4 - - - - ; a is the color to bloomify - 57 D1:C5C4 - - - - vxBloomFilter: - 58 D1:C5C4 01 00 2C 01 ld bc, 76800 - 59 D1:C5C8 2A 14 00 E3 ld hl, (vxFramebuffer) - 60 D1:C5CC - - - - vxBloomLoop: - 61 D1:C5CC ED B1 - - cpir - 62 D1:C5CE E0 - - - ret po - 63 D1:C5CF E5 - - - push hl - 64 D1:C5D0 C5 - - - push bc - 65 D1:C5D1 - - - - ;; call vxOptimizedKernel - 66 D1:C5D1 - - - - - 67 D1:C5D1 - - - - vxOptimizedKernel: - 68 D1:C5D1 - - - - ; (32,16,32) - 69 D1:C5D1 - - - - ; (16,00,16) - 70 D1:C5D1 - - - - ; (32,16,32) - 71 D1:C5D1 11 BE FE FF ld de, -320-2 - 72 D1:C5D5 19 - - - add hl, de - 73 D1:C5D6 11 C1 FE FF ld de, -320+1 - 74 D1:C5DA 19 - - - add hl, de - 75 D1:C5DB - - - - - 76 D1:C5DB BE - - - cp (hl) - 77 D1:C5DC 28 13 - - jr z, p1x - 78 D1:C5DE 4E F5 57 A1 + 1 D1:C5E0 - - - - #macro blend50() + 2 D1:C5E0 ld c, (hl) + 3 D1:C5E0 push af + 4 D1:C5E0 ld d, a + 5 D1:C5E0 and c + 6 D1:C5E0 and VX_COLOR_LOW_BIT + 7 D1:C5E0 ld e, a + 8 D1:C5E0 ld a, d + 9 D1:C5E0 and ~VX_COLOR_LOW_BIT + 10 D1:C5E0 ld d, a + 11 D1:C5E0 ld a, c + 12 D1:C5E0 and ~VX_COLOR_LOW_BIT + 13 D1:C5E0 add a, d + 14 D1:C5E0 rra + 15 D1:C5E0 add a, e + 16 D1:C5E0 ld (hl), a + 17 D1:C5E0 pop af + 18 D1:C5E0 #endmacro + 19 D1:C5E0 - - - - + 20 D1:C5E0 - - - - #macro blend25() + 21 D1:C5E0 ld c, (hl) + 22 D1:C5E0 push af + 23 D1:C5E0 push af + 24 D1:C5E0 ld d, a + 25 D1:C5E0 and c + 26 D1:C5E0 and VX_COLOR_LOW_BIT + 27 D1:C5E0 ld e, a + 28 D1:C5E0 ld a, d + 29 D1:C5E0 and ~VX_COLOR_LOW_BIT + 30 D1:C5E0 ld d, a + 31 D1:C5E0 ld a, c + 32 D1:C5E0 and ~VX_COLOR_LOW_BIT + 33 D1:C5E0 add a, d + 34 D1:C5E0 rra + 35 D1:C5E0 add a, e + 36 D1:C5E0 ; take A, blend it with initial color + 37 D1:C5E0 ld c, a + 38 D1:C5E0 pop af + 39 D1:C5E0 ld d, a + 40 D1:C5E0 and c + 41 D1:C5E0 and VX_COLOR_LOW_BIT + 42 D1:C5E0 ld e, a + 43 D1:C5E0 ld a, d + 44 D1:C5E0 and ~VX_COLOR_LOW_BIT + 45 D1:C5E0 ld d, a + 46 D1:C5E0 ld a, c + 47 D1:C5E0 and ~VX_COLOR_LOW_BIT + 48 D1:C5E0 add a, d + 49 D1:C5E0 rra + 50 D1:C5E0 add a, e + 51 D1:C5E0 ld (hl), a + 52 D1:C5E0 pop af + 53 D1:C5E0 #endmacro + 54 D1:C5E0 - - - - + 55 D1:C5E0 - - - - + 56 D1:C5E0 - - - - ; a is the color to bloomify + 57 D1:C5E0 - - - - vxBloomFilter: + 58 D1:C5E0 01 00 2C 01 ld bc, 76800 + 59 D1:C5E4 2A 14 00 E3 ld hl, (vxFramebuffer) + 60 D1:C5E8 - - - - vxBloomLoop: + 61 D1:C5E8 ED B1 - - cpir + 62 D1:C5EA E0 - - - ret po + 63 D1:C5EB E5 - - - push hl + 64 D1:C5EC C5 - - - push bc + 65 D1:C5ED - - - - ;; call vxOptimizedKernel + 66 D1:C5ED - - - - + 67 D1:C5ED - - - - vxOptimizedKernel: + 68 D1:C5ED - - - - ; (32,16,32) + 69 D1:C5ED - - - - ; (16,00,16) + 70 D1:C5ED - - - - ; (32,16,32) + 71 D1:C5ED 11 BE FE FF ld de, -320-2 + 72 D1:C5F1 19 - - - add hl, de + 73 D1:C5F2 11 C1 FE FF ld de, -320+1 + 74 D1:C5F6 19 - - - add hl, de + 75 D1:C5F7 - - - - + 76 D1:C5F7 BE - - - cp (hl) + 77 D1:C5F8 28 13 - - jr z, p1x + 78 D1:C5FA 4E F5 57 A1 E6 29 5F 7A E6 D6 57 79 E6 D6 82 1F 83 77 F1 - blend50 Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPostProcessing.ez80" - 79 D1:C5F1 - - - - p1x: - 80 D1:C5F1 11 3F 01 00 ld de, 320-1 - 81 D1:C5F5 19 - - - add hl, de - 82 D1:C5F6 - - - - - 83 D1:C5F6 - - - - - 84 D1:C5F6 BE - - - cp (hl) - 85 D1:C5F7 28 13 - - jr z, px - 86 D1:C5F9 4E F5 57 A1 + 79 D1:C60D - - - - p1x: + 80 D1:C60D 11 3F 01 00 ld de, 320-1 + 81 D1:C611 19 - - - add hl, de + 82 D1:C612 - - - - + 83 D1:C612 - - - - + 84 D1:C612 BE - - - cp (hl) + 85 D1:C613 28 13 - - jr z, px + 86 D1:C615 4E F5 57 A1 E6 29 5F 7A E6 D6 57 79 E6 D6 82 1F 83 77 F1 - blend50 - 87 D1:C60C - - - - px: - 88 D1:C60C 23 - - - inc hl - 89 D1:C60D BE - - - cp (hl) - 90 D1:C60E 28 25 - - jr z, p1 - 91 D1:C610 4E F5 F5 57 + 87 D1:C628 - - - - px: + 88 D1:C628 23 - - - inc hl + 89 D1:C629 BE - - - cp (hl) + 90 D1:C62A 28 25 - - jr z, p1 + 91 D1:C62C 4E F5 F5 57 A1 E6 29 5F 7A E6 D6 57 79 E6 D6 82 @@ -5377,32 +5335,32 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPostProcessing.e 57 79 E6 D6 82 1F 83 77 F1 - - - blend25 - 92 D1:C635 - - - - p1: - 93 D1:C635 23 - - - inc hl - 94 D1:C636 BE - - - cp (hl) - 95 D1:C637 28 13 - - jr z, p2 - 96 D1:C639 4E F5 57 A1 + 92 D1:C651 - - - - p1: + 93 D1:C651 23 - - - inc hl + 94 D1:C652 BE - - - cp (hl) + 95 D1:C653 28 13 - - jr z, p2 + 96 D1:C655 4E F5 57 A1 E6 29 5F 7A E6 D6 57 79 E6 D6 82 1F 83 77 F1 - blend50 - 97 D1:C64C - - - - p2: - 98 D1:C64C 11 3D 01 00 ld de, 320-3 - 99 D1:C650 19 - - - add hl, de - 100 D1:C651 - - - - - 101 D1:C651 BE - - - cp (hl) - 102 D1:C652 28 13 - - jr z, p3x - 103 D1:C654 4E F5 57 A1 + 97 D1:C668 - - - - p2: + 98 D1:C668 11 3D 01 00 ld de, 320-3 + 99 D1:C66C 19 - - - add hl, de + 100 D1:C66D - - - - + 101 D1:C66D BE - - - cp (hl) + 102 D1:C66E 28 13 - - jr z, p3x + 103 D1:C670 4E F5 57 A1 E6 29 5F 7A E6 D6 57 79 E6 D6 82 1F 83 77 F1 - blend50 - 104 D1:C667 - - - - p3x: - 105 D1:C667 23 - - - inc hl - 106 D1:C668 - - - - - 107 D1:C668 BE - - - cp (hl) - 108 D1:C669 28 25 - - jr z, p3 - 109 D1:C66B 4E F5 F5 57 + 104 D1:C683 - - - - p3x: + 105 D1:C683 23 - - - inc hl + 106 D1:C684 - - - - + 107 D1:C684 BE - - - cp (hl) + 108 D1:C685 28 25 - - jr z, p3 + 109 D1:C687 4E F5 F5 57 A1 E6 29 5F 7A E6 D6 57 79 E6 D6 82 @@ -5412,13 +5370,13 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPostProcessing.e 57 79 E6 D6 82 1F 83 77 F1 - - - blend25 - 110 D1:C690 - - - - p3: - 111 D1:C690 23 - - - inc hl - 112 D1:C691 77 - - - ld (hl), a - 113 D1:C692 23 - - - inc hl - 114 D1:C693 BE - - - cp (hl) - 115 D1:C694 28 25 - - jr z, p5 - 116 D1:C696 4E F5 F5 57 + 110 D1:C6AC - - - - p3: + 111 D1:C6AC 23 - - - inc hl + 112 D1:C6AD 77 - - - ld (hl), a + 113 D1:C6AE 23 - - - inc hl + 114 D1:C6AF BE - - - cp (hl) + 115 D1:C6B0 28 25 - - jr z, p5 + 116 D1:C6B2 4E F5 F5 57 A1 E6 29 5F 7A E6 D6 57 79 E6 D6 82 @@ -5428,32 +5386,32 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPostProcessing.e 57 79 E6 D6 82 1F 83 77 F1 - - - blend25 - 117 D1:C6BB - - - - p5: - 118 D1:C6BB - - - - - 119 D1:C6BB 23 - - - inc hl - 120 D1:C6BC BE - - - cp (hl) - 121 D1:C6BD 28 13 - - jr z, p5x - 122 D1:C6BF 4E F5 57 A1 + 117 D1:C6D7 - - - - p5: + 118 D1:C6D7 - - - - + 119 D1:C6D7 23 - - - inc hl + 120 D1:C6D8 BE - - - cp (hl) + 121 D1:C6D9 28 13 - - jr z, p5x + 122 D1:C6DB 4E F5 57 A1 E6 29 5F 7A E6 D6 57 79 E6 D6 82 1F 83 77 F1 - blend50 - 123 D1:C6D2 - - - - p5x: - 124 D1:C6D2 - - - - - 125 D1:C6D2 11 3D 01 00 ld de, 320-3 - 126 D1:C6D6 19 - - - add hl, de - 127 D1:C6D7 BE - - - cp (hl) - 128 D1:C6D8 28 13 - - jr z, p6 - 129 D1:C6DA 4E F5 57 A1 + 123 D1:C6EE - - - - p5x: + 124 D1:C6EE - - - - + 125 D1:C6EE 11 3D 01 00 ld de, 320-3 + 126 D1:C6F2 19 - - - add hl, de + 127 D1:C6F3 BE - - - cp (hl) + 128 D1:C6F4 28 13 - - jr z, p6 + 129 D1:C6F6 4E F5 57 A1 E6 29 5F 7A E6 D6 57 79 E6 D6 82 1F 83 77 F1 - blend50 - 130 D1:C6ED - - - - p6: - 131 D1:C6ED 23 - - - inc hl - 132 D1:C6EE BE - - - cp (hl) - 133 D1:C6EF 28 25 - - jr z, p7 - 134 D1:C6F1 4E F5 F5 57 + 130 D1:C709 - - - - p6: + 131 D1:C709 23 - - - inc hl + 132 D1:C70A BE - - - cp (hl) + 133 D1:C70B 28 25 - - jr z, p7 + 134 D1:C70D 4E F5 F5 57 A1 E6 29 5F 7A E6 D6 57 79 E6 D6 82 @@ -5463,250 +5421,250 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPostProcessing.e 57 79 E6 D6 82 1F 83 77 F1 - - - blend25 - 135 D1:C716 - - - - p7: - 136 D1:C716 23 - - - inc hl - 137 D1:C717 BE - - - cp (hl) - 138 D1:C718 28 13 - - jr z, p8 - 139 D1:C71A 4E F5 57 A1 + 135 D1:C732 - - - - p7: + 136 D1:C732 23 - - - inc hl + 137 D1:C733 BE - - - cp (hl) + 138 D1:C734 28 13 - - jr z, p8 + 139 D1:C736 4E F5 57 A1 E6 29 5F 7A E6 D6 57 79 E6 D6 82 1F 83 77 F1 - blend50 - 140 D1:C72D - - - - p8: - 141 D1:C72D - - - - - 142 D1:C72D 11 3F 01 00 ld de, 320-1 - 143 D1:C731 19 - - - add hl, de - 144 D1:C732 BE - - - cp (hl) - 145 D1:C733 28 13 - - jr z, p8x - 146 D1:C735 4E F5 57 A1 + 140 D1:C749 - - - - p8: + 141 D1:C749 - - - - + 142 D1:C749 11 3F 01 00 ld de, 320-1 + 143 D1:C74D 19 - - - add hl, de + 144 D1:C74E BE - - - cp (hl) + 145 D1:C74F 28 13 - - jr z, p8x + 146 D1:C751 4E F5 57 A1 E6 29 5F 7A E6 D6 57 79 E6 D6 82 1F 83 77 F1 - blend50 - 147 D1:C748 - - - - p8x: - 148 D1:C748 - - - - - 149 D1:C748 C1 - - - pop bc - 150 D1:C749 E1 - - - pop hl - 151 D1:C74A C3 CC C5 D1 jp vxBloomLoop - 152 D1:C74E - - - - ;; ret - 153 D1:C74E - - - - - 154 D1:C74E - - - - ;vxGaussianKernel5x5: - 155 D1:C74E - - - - ; (40,36,34,36,40) - 156 D1:C74E - - - - ; (36,24,20,24,36) - 157 D1:C74E - - - - ; (34,20,00**,20,34) - 158 D1:C74E - - - - ; (36,24,20,24,36) - 159 D1:C74E - - - - ; (40,36,34,36,40) - 160 D1:C74E - - - - - 161 D1:C74E - - - - - 162 D1:C74E - - - - - 163 D1:C74E - - - - - 164 D1:C74E - - - - - 165 D1:C74E - - - - vxConvolveBlur: - 166 D1:C74E - - - - ; blur a little the screen using following convolution matrix : - 167 D1:C74E - - - - ; 0 : 0 : 0 - 168 D1:C74E - - - - ; 0 : 2 : 1 - 169 D1:C74E - - - - ; 0 : 1 : 0 - 170 D1:C74E 2A 14 00 E3 ld hl, (vxFramebuffer) - 171 D1:C752 01 FF 00 00 ld bc, 255 - 172 D1:C756 - - - - VXBLURLOOP: - 173 D1:C756 C5 - - - push bc - 174 D1:C757 46 - - - ld b, (hl) - 175 D1:C758 23 - - - inc hl - 176 D1:C759 4E - - - ld c, (hl) - 177 D1:C75A - - - - - 178 D1:C75A 78 - - - ld a, b - 179 D1:C75B A1 - - - and c - 180 D1:C75C E6 29 - - and VX_COLOR_LOW_BIT - 181 D1:C75E 5F - - - ld e, a - 182 D1:C75F 78 - - - ld a, b - 183 D1:C760 E6 D6 - - and ~VX_COLOR_LOW_BIT - 184 D1:C762 57 - - - ld d, a - 185 D1:C763 79 - - - ld a, c - 186 D1:C764 E6 D6 - - and ~VX_COLOR_LOW_BIT - 187 D1:C766 82 - - - add a, d - 188 D1:C767 1F - - - rra - 189 D1:C768 83 - - - add a, e - 190 D1:C769 2B - - - dec hl - 191 D1:C76A 77 - - - ld (hl), a - 192 D1:C76B - - - - - 193 D1:C76B C1 - - - pop bc - 194 D1:C76C 23 - - - inc hl - 195 D1:C76D 10 E7 - - djnz VXBLURLOOP - 196 D1:C76F 0D - - - dec c - 197 D1:C770 C2 56 C7 D1 jp nz, VXBLURLOOP - 198 D1:C774 C9 - - - ret - 199 D1:C775 - - - - - 200 D1:C775 - - - - - 201 D1:C775 - - - - - 202 D1:C775 - - - - - 203 D1:C775 - - - - #comment - 204 D1:C775 inc hl - 205 D1:C775 ld c, (hl) - 206 D1:C775 ld de, 320 - 207 D1:C775 add hl, de - 208 D1:C775 ld b, (hl) - 209 D1:C775 scf - 210 D1:C775 sbc hl, de - 211 D1:C775 ; blend50 - 212 D1:C775 - 213 D1:C775 ld a, b - 214 D1:C775 and c - 215 D1:C775 and VX_COLOR_LOW_BIT - 216 D1:C775 ld e, a - 217 D1:C775 ld a, b - 218 D1:C775 and ~VX_COLOR_LOW_BIT - 219 D1:C775 ld d, a - 220 D1:C775 ld a, c - 221 D1:C775 and ~VX_COLOR_LOW_BIT - 222 D1:C775 add a, d - 223 D1:C775 rra - 224 D1:C775 add a, e - 225 D1:C775 ld c, (hl) - 226 D1:C775 ld b, a - 227 D1:C775 - 228 D1:C775 ld a, b - 229 D1:C775 and c - 230 D1:C775 and VX_COLOR_LOW_BIT - 231 D1:C775 ld e, a - 232 D1:C775 ld a, b - 233 D1:C775 and ~VX_COLOR_LOW_BIT - 234 D1:C775 ld d, a - 235 D1:C775 ld a, c - 236 D1:C775 and ~VX_COLOR_LOW_BIT - 237 D1:C775 add a, d - 238 D1:C775 rra - 239 D1:C775 add a, e - 240 D1:C775 - 241 D1:C775 ld (hl), a - 242 D1:C775 - 243 D1:C775 #endcomment + 147 D1:C764 - - - - p8x: + 148 D1:C764 - - - - + 149 D1:C764 C1 - - - pop bc + 150 D1:C765 E1 - - - pop hl + 151 D1:C766 C3 E8 C5 D1 jp vxBloomLoop + 152 D1:C76A - - - - ;; ret + 153 D1:C76A - - - - + 154 D1:C76A - - - - ;vxGaussianKernel5x5: + 155 D1:C76A - - - - ; (40,36,34,36,40) + 156 D1:C76A - - - - ; (36,24,20,24,36) + 157 D1:C76A - - - - ; (34,20,00**,20,34) + 158 D1:C76A - - - - ; (36,24,20,24,36) + 159 D1:C76A - - - - ; (40,36,34,36,40) + 160 D1:C76A - - - - + 161 D1:C76A - - - - + 162 D1:C76A - - - - + 163 D1:C76A - - - - + 164 D1:C76A - - - - + 165 D1:C76A - - - - vxConvolveBlur: + 166 D1:C76A - - - - ; blur a little the screen using following convolution matrix : + 167 D1:C76A - - - - ; 0 : 0 : 0 + 168 D1:C76A - - - - ; 0 : 2 : 1 + 169 D1:C76A - - - - ; 0 : 1 : 0 + 170 D1:C76A 2A 14 00 E3 ld hl, (vxFramebuffer) + 171 D1:C76E 01 FF 00 00 ld bc, 255 + 172 D1:C772 - - - - VXBLURLOOP: + 173 D1:C772 C5 - - - push bc + 174 D1:C773 46 - - - ld b, (hl) + 175 D1:C774 23 - - - inc hl + 176 D1:C775 4E - - - ld c, (hl) + 177 D1:C776 - - - - + 178 D1:C776 78 - - - ld a, b + 179 D1:C777 A1 - - - and c + 180 D1:C778 E6 29 - - and VX_COLOR_LOW_BIT + 181 D1:C77A 5F - - - ld e, a + 182 D1:C77B 78 - - - ld a, b + 183 D1:C77C E6 D6 - - and ~VX_COLOR_LOW_BIT + 184 D1:C77E 57 - - - ld d, a + 185 D1:C77F 79 - - - ld a, c + 186 D1:C780 E6 D6 - - and ~VX_COLOR_LOW_BIT + 187 D1:C782 82 - - - add a, d + 188 D1:C783 1F - - - rra + 189 D1:C784 83 - - - add a, e + 190 D1:C785 2B - - - dec hl + 191 D1:C786 77 - - - ld (hl), a + 192 D1:C787 - - - - + 193 D1:C787 C1 - - - pop bc + 194 D1:C788 23 - - - inc hl + 195 D1:C789 10 E7 - - djnz VXBLURLOOP + 196 D1:C78B 0D - - - dec c + 197 D1:C78C C2 72 C7 D1 jp nz, VXBLURLOOP + 198 D1:C790 C9 - - - ret + 199 D1:C791 - - - - + 200 D1:C791 - - - - + 201 D1:C791 - - - - + 202 D1:C791 - - - - + 203 D1:C791 - - - - #comment + 204 D1:C791 inc hl + 205 D1:C791 ld c, (hl) + 206 D1:C791 ld de, 320 + 207 D1:C791 add hl, de + 208 D1:C791 ld b, (hl) + 209 D1:C791 scf + 210 D1:C791 sbc hl, de + 211 D1:C791 ; blend50 + 212 D1:C791 + 213 D1:C791 ld a, b + 214 D1:C791 and c + 215 D1:C791 and VX_COLOR_LOW_BIT + 216 D1:C791 ld e, a + 217 D1:C791 ld a, b + 218 D1:C791 and ~VX_COLOR_LOW_BIT + 219 D1:C791 ld d, a + 220 D1:C791 ld a, c + 221 D1:C791 and ~VX_COLOR_LOW_BIT + 222 D1:C791 add a, d + 223 D1:C791 rra + 224 D1:C791 add a, e + 225 D1:C791 ld c, (hl) + 226 D1:C791 ld b, a + 227 D1:C791 + 228 D1:C791 ld a, b + 229 D1:C791 and c + 230 D1:C791 and VX_COLOR_LOW_BIT + 231 D1:C791 ld e, a + 232 D1:C791 ld a, b + 233 D1:C791 and ~VX_COLOR_LOW_BIT + 234 D1:C791 ld d, a + 235 D1:C791 ld a, c + 236 D1:C791 and ~VX_COLOR_LOW_BIT + 237 D1:C791 add a, d + 238 D1:C791 rra + 239 D1:C791 add a, e + 240 D1:C791 + 241 D1:C791 ld (hl), a + 242 D1:C791 + 243 D1:C791 #endcomment Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" - 11 D1:C775 - - - - #include "vxImage.ez80" + 11 D1:C791 - - - - #include "vxImage.ez80" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxImage.ez80" - 1 D1:C775 - - - - vxImageSubCopy: - 2 D1:C775 - - - - ; hl : org, bc : rect size, de : copy - 3 D1:C775 C5 - - - push bc - 4 D1:C776 01 00 00 D3 ld bc, $D30000 - 5 D1:C77A 09 - - - add hl, bc - 6 D1:C77B EB - - - ex de, hl - 7 D1:C77C 09 - - - add hl, bc - 8 D1:C77D EB - - - ex de, hl - 9 D1:C77E C1 - - - pop bc - 10 D1:C77F 78 - - - ld a, b - 11 D1:C780 06 00 - - ld b, 0 - 12 D1:C782 - - - - ; ready to copy - 13 D1:C782 - - - - vxCopyLoop: - 14 D1:C782 C5 - - - push bc - 15 D1:C783 D5 - - - push de - 16 D1:C784 E5 - - - push hl - 17 D1:C785 ED B0 - - ldir - 18 D1:C787 E1 - - - pop hl - 19 D1:C788 D1 - - - pop de - 20 D1:C789 C1 - - - pop bc - 21 D1:C78A 24 - - - inc h - 22 D1:C78B 14 - - - inc d - 23 D1:C78C 3D - - - dec a - 24 D1:C78D 20 F3 - - jr nz, vxCopyLoop - 25 D1:C78F C9 - - - ret - 26 D1:C790 - - - - vxTestAABB: - 27 D1:C790 - - - - - 28 D1:C790 C9 - - - ret - 29 D1:C791 - - - - vxMipmapLOD: - 30 D1:C791 - - - - ; vec2 dx_vtc = dFdx; - 31 D1:C791 - - - - ; vec2 dy_vtc = dFdy; - 32 D1:C791 - - - - ; float delta_max_sqr = max(dot(dx_vtc, dx_vtc), dot(dy_vtc, dy_vtc)); - 33 D1:C791 - - - - ; return 0.5 * log2(delta_max_sqr) - 34 D1:C791 3A FD FF FF ld a, (VX_FDUDX+1) ;dudx+1 - 35 D1:C795 CB 7F 28 02 + 1 D1:C791 - - - - vxImageSubCopy: + 2 D1:C791 - - - - ; hl : org, bc : rect size, de : copy + 3 D1:C791 C5 - - - push bc + 4 D1:C792 01 00 00 D3 ld bc, $D30000 + 5 D1:C796 09 - - - add hl, bc + 6 D1:C797 EB - - - ex de, hl + 7 D1:C798 09 - - - add hl, bc + 8 D1:C799 EB - - - ex de, hl + 9 D1:C79A C1 - - - pop bc + 10 D1:C79B 78 - - - ld a, b + 11 D1:C79C 06 00 - - ld b, 0 + 12 D1:C79E - - - - ; ready to copy + 13 D1:C79E - - - - vxCopyLoop: + 14 D1:C79E C5 - - - push bc + 15 D1:C79F D5 - - - push de + 16 D1:C7A0 E5 - - - push hl + 17 D1:C7A1 ED B0 - - ldir + 18 D1:C7A3 E1 - - - pop hl + 19 D1:C7A4 D1 - - - pop de + 20 D1:C7A5 C1 - - - pop bc + 21 D1:C7A6 24 - - - inc h + 22 D1:C7A7 14 - - - inc d + 23 D1:C7A8 3D - - - dec a + 24 D1:C7A9 20 F3 - - jr nz, vxCopyLoop + 25 D1:C7AB C9 - - - ret + 26 D1:C7AC - - - - vxTestAABB: + 27 D1:C7AC - - - - + 28 D1:C7AC C9 - - - ret + 29 D1:C7AD - - - - vxMipmapLOD: + 30 D1:C7AD - - - - ; vec2 dx_vtc = dFdx; + 31 D1:C7AD - - - - ; vec2 dy_vtc = dFdy; + 32 D1:C7AD - - - - ; float delta_max_sqr = max(dot(dx_vtc, dx_vtc), dot(dy_vtc, dy_vtc)); + 33 D1:C7AD - - - - ; return 0.5 * log2(delta_max_sqr) + 34 D1:C7AD 3A FD FF FF ld a, (VX_FDUDX+1) ;dudx+1 + 35 D1:C7B1 CB 7F 28 02 ED 44 - - bit 7, a \ jr z, $+4 \ neg - 36 D1:C79B 6F - - - ld l, a - 37 D1:C79C 67 - - - ld h, a - 38 D1:C79D ED 6C - - mlt hl - 39 D1:C79F 3A FB FF FF ld a, (VX_FDVDX+1) ;dvdx+1 - 40 D1:C7A3 CB 7F 28 02 + 36 D1:C7B7 6F - - - ld l, a + 37 D1:C7B8 67 - - - ld h, a + 38 D1:C7B9 ED 6C - - mlt hl + 39 D1:C7BB 3A FB FF FF ld a, (VX_FDVDX+1) ;dvdx+1 + 40 D1:C7BF CB 7F 28 02 ED 44 - - bit 7, a \ jr z, $+4 \ neg - 41 D1:C7A9 57 - - - ld d, a - 42 D1:C7AA 5F - - - ld e, a - 43 D1:C7AB ED 5C - - mlt de - 44 D1:C7AD 19 - - - add hl, de - 45 D1:C7AE E5 - - - push hl - 46 D1:C7AF 3A F7 FF FF ld a, (VX_FDUDY+1) ;dudy+1 - 47 D1:C7B3 CB 7F 28 02 + 41 D1:C7C5 57 - - - ld d, a + 42 D1:C7C6 5F - - - ld e, a + 43 D1:C7C7 ED 5C - - mlt de + 44 D1:C7C9 19 - - - add hl, de + 45 D1:C7CA E5 - - - push hl + 46 D1:C7CB 3A F7 FF FF ld a, (VX_FDUDY+1) ;dudy+1 + 47 D1:C7CF CB 7F 28 02 ED 44 - - bit 7, a \ jr z, $+4 \ neg - 48 D1:C7B9 6F - - - ld l, a - 49 D1:C7BA 67 - - - ld h, a - 50 D1:C7BB ED 6C - - mlt hl - 51 D1:C7BD 3A F5 FF FF ld a, (VX_FDVDY+1) ;dvdy+1 - 52 D1:C7C1 CB 7F 28 02 + 48 D1:C7D5 6F - - - ld l, a + 49 D1:C7D6 67 - - - ld h, a + 50 D1:C7D7 ED 6C - - mlt hl + 51 D1:C7D9 3A F5 FF FF ld a, (VX_FDVDY+1) ;dvdy+1 + 52 D1:C7DD CB 7F 28 02 ED 44 - - bit 7, a \ jr z, $+4 \ neg - 53 D1:C7C7 57 - - - ld d, a - 54 D1:C7C8 5F - - - ld e, a - 55 D1:C7C9 ED 5C - - mlt de - 56 D1:C7CB 19 - - - add hl, de - 57 D1:C7CC D1 - - - pop de - 58 D1:C7CD - - - - ; max(hl,de) - 59 D1:C7CD B7 - - - or a, a - 60 D1:C7CE ED 52 - - sbc hl, de - 61 D1:C7D0 19 - - - add hl, de - 62 D1:C7D1 30 01 - - jr nc, $+3 - 63 D1:C7D3 EB - - - ex de, hl - 64 D1:C7D4 20 01 - - jr nz, $+3 - 65 D1:C7D6 23 - - - inc hl - 66 D1:C7D7 - - - - ; compute log2 - 67 D1:C7D7 3E 10 - - ld a,16 - 68 D1:C7D9 37 - - - scf - 69 D1:C7DA - - - - __LogLoop: - 70 D1:C7DA 52 ED 6A - adc.s hl,hl - 71 D1:C7DD 3D - - - dec a - 72 D1:C7DE 30 FA - - jr nc,__LogLoop - 73 D1:C7E0 - - - - ; result is between [-1;15] - 74 D1:C7E0 - - - - ; 256x256 texture have 9 mipmap levels. - 75 D1:C7E0 CB 3F - - srl a ; remap to [0-8] - 76 D1:C7E2 - - - - ; clamp the result to [0-8] - 77 D1:C7E2 - - - - ; correspondance : - 78 D1:C7E2 - - - - ; 256x256 : 0 - 79 D1:C7E2 - - - - ; 128x128 : 1 - 80 D1:C7E2 - - - - ; 64x 64 : 2 - 81 D1:C7E2 - - - - ; 32x 32 : 3 - 82 D1:C7E2 - - - - ; 16x 16 : 4 - 83 D1:C7E2 - - - - ; 8x 8 : 5 - 84 D1:C7E2 - - - - ; 4x 4 : 6 - 85 D1:C7E2 - - - - ; 2x 2 : 7 - 86 D1:C7E2 - - - - ; 1x 1 : 8 - 87 D1:C7E2 C9 - - - ret + 53 D1:C7E3 57 - - - ld d, a + 54 D1:C7E4 5F - - - ld e, a + 55 D1:C7E5 ED 5C - - mlt de + 56 D1:C7E7 19 - - - add hl, de + 57 D1:C7E8 D1 - - - pop de + 58 D1:C7E9 - - - - ; max(hl,de) + 59 D1:C7E9 B7 - - - or a, a + 60 D1:C7EA ED 52 - - sbc hl, de + 61 D1:C7EC 19 - - - add hl, de + 62 D1:C7ED 30 01 - - jr nc, $+3 + 63 D1:C7EF EB - - - ex de, hl + 64 D1:C7F0 20 01 - - jr nz, $+3 + 65 D1:C7F2 23 - - - inc hl + 66 D1:C7F3 - - - - ; compute log2 + 67 D1:C7F3 3E 10 - - ld a,16 + 68 D1:C7F5 37 - - - scf + 69 D1:C7F6 - - - - __LogLoop: + 70 D1:C7F6 52 ED 6A - adc.s hl,hl + 71 D1:C7F9 3D - - - dec a + 72 D1:C7FA 30 FA - - jr nc,__LogLoop + 73 D1:C7FC - - - - ; result is between [-1;15] + 74 D1:C7FC - - - - ; 256x256 texture have 9 mipmap levels. + 75 D1:C7FC CB 3F - - srl a ; remap to [0-8] + 76 D1:C7FE - - - - ; clamp the result to [0-8] + 77 D1:C7FE - - - - ; correspondance : + 78 D1:C7FE - - - - ; 256x256 : 0 + 79 D1:C7FE - - - - ; 128x128 : 1 + 80 D1:C7FE - - - - ; 64x 64 : 2 + 81 D1:C7FE - - - - ; 32x 32 : 3 + 82 D1:C7FE - - - - ; 16x 16 : 4 + 83 D1:C7FE - - - - ; 8x 8 : 5 + 84 D1:C7FE - - - - ; 4x 4 : 6 + 85 D1:C7FE - - - - ; 2x 2 : 7 + 86 D1:C7FE - - - - ; 1x 1 : 8 + 87 D1:C7FE C9 - - - ret Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" - 12 D1:C7E3 - - - - #include "vxShaderInterpolation.ez80" + 12 D1:C7FF - - - - #include "vxShaderInterpolation.ez80" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolation.ez80" - 1 D1:C7E3 - - - - ;; BUG :: inside du/dy and dv/dy compute - 2 D1:C7E3 - - - - - 3 D1:C7E3 - - - - #define VX_REGISTER_Y0 -32+0 - 4 D1:C7E3 - - - - #define VX_REGISTER_X0 -32+1 - 5 D1:C7E3 - - - - #define VX_REGISTER_U0 -32+3 - 6 D1:C7E3 - - - - #define VX_REGISTER_V0 -32+4 - 7 D1:C7E3 - - - - #define VX_REGISTER_C0 -32+5 - 8 D1:C7E3 - - - - #define VX_REGISTER_Y1 -26+0 - 9 D1:C7E3 - - - - #define VX_REGISTER_X1 -26+1 - 10 D1:C7E3 - - - - #define VX_REGISTER_U1 -26+3 - 11 D1:C7E3 - - - - #define VX_REGISTER_V1 -26+4 - 12 D1:C7E3 - - - - #define VX_REGISTER_C1 -26+5 - 13 D1:C7E3 - - - - #define VX_REGISTER_Y2 -20+0 - 14 D1:C7E3 - - - - #define VX_REGISTER_X2 -20+1 - 15 D1:C7E3 - - - - #define VX_REGISTER_U2 -20+3 - 16 D1:C7E3 - - - - #define VX_REGISTER_V2 -20+4 - 17 D1:C7E3 - - - - #define VX_REGISTER_C2 -20+5 - 18 D1:C7E3 - - - - - 19 D1:C7E3 - - - - #define VX_FDVDY -12 - 20 D1:C7E3 - - - - #define VX_FDUDY -10 - 21 D1:C7E3 - - - - #define VX_FDVDX -6 - 22 D1:C7E3 - - - - #define VX_FDUDX -4 - 23 D1:C7E3 - - - - - 24 D1:C7E3 - - - - #define VX_SHADER_INTERPOLATION_CODE $E30800 - 25 D1:C7E3 - - - - - 26 D1:C7E3 - - - - .addinstr ld deu,0 13521B52 4 NOP 0 - 27 D1:C7E3 - - - - .addinstr ld hlu,0 23522B52 4 NOP 0 - 28 D1:C7E3 - - - - .addinstr ld bcu,0 03520B52 4 NOP 0 - 29 D1:C7E3 - - - - - 30 D1:C7E3 00 00 00 00 + 1 D1:C7FF - - - - ;; BUG :: inside du/dy and dv/dy compute + 2 D1:C7FF - - - - + 3 D1:C7FF - - - - #define VX_REGISTER_Y0 -32+0 + 4 D1:C7FF - - - - #define VX_REGISTER_X0 -32+1 + 5 D1:C7FF - - - - #define VX_REGISTER_U0 -32+3 + 6 D1:C7FF - - - - #define VX_REGISTER_V0 -32+4 + 7 D1:C7FF - - - - #define VX_REGISTER_C0 -32+5 + 8 D1:C7FF - - - - #define VX_REGISTER_Y1 -26+0 + 9 D1:C7FF - - - - #define VX_REGISTER_X1 -26+1 + 10 D1:C7FF - - - - #define VX_REGISTER_U1 -26+3 + 11 D1:C7FF - - - - #define VX_REGISTER_V1 -26+4 + 12 D1:C7FF - - - - #define VX_REGISTER_C1 -26+5 + 13 D1:C7FF - - - - #define VX_REGISTER_Y2 -20+0 + 14 D1:C7FF - - - - #define VX_REGISTER_X2 -20+1 + 15 D1:C7FF - - - - #define VX_REGISTER_U2 -20+3 + 16 D1:C7FF - - - - #define VX_REGISTER_V2 -20+4 + 17 D1:C7FF - - - - #define VX_REGISTER_C2 -20+5 + 18 D1:C7FF - - - - + 19 D1:C7FF - - - - #define VX_FDVDY -12 + 20 D1:C7FF - - - - #define VX_FDUDY -10 + 21 D1:C7FF - - - - #define VX_FDVDX -6 + 22 D1:C7FF - - - - #define VX_FDUDX -4 + 23 D1:C7FF - - - - + 24 D1:C7FF - - - - #define VX_SHADER_INTERPOLATION_CODE $E30800 + 25 D1:C7FF - - - - + 26 D1:C7FF - - - - .addinstr ld deu,0 13521B52 4 NOP 0 + 27 D1:C7FF - - - - .addinstr ld hlu,0 23522B52 4 NOP 0 + 28 D1:C7FF - - - - .addinstr ld bcu,0 03520B52 4 NOP 0 + 29 D1:C7FF - - - - + 30 D1:C7FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -5714,8 +5672,8 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolat 00 00 00 00 00 00 00 00 00 00 00 00 .fill 32 - 31 D1:C803 - - - - VX_PIXEL_SHADER_DATA: - 32 D1:C803 00 00 00 00 + 31 D1:C81F - - - - VX_PIXEL_SHADER_DATA: + 32 D1:C81F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -6483,10 +6441,10 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolat 00 00 00 00 00 00 00 00 00 00 00 00 .fill 3072 - 33 D1:D403 - - - - - 34 D1:D403 - - - - VX_SHADER_INTERPOLATION_COPY: - 35 D1:D403 - - - - - 36 D1:D403 - - - - .relocate VX_SHADER_INTERPOLATION_CODE + 33 D1:D41F - - - - + 34 D1:D41F - - - - VX_SHADER_INTERPOLATION_COPY: + 35 D1:D41F - - - - + 36 D1:D41F - - - - .relocate VX_SHADER_INTERPOLATION_CODE Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolation.ez80" 37 E3:0800 - - - - 38 E3:0800 - - - - vxTextureTriangle: @@ -6503,9 +6461,9 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolat 49 E3:0801 B6 - - - or (hl) 50 E3:0802 EB - - - ex de, hl 51 E3:0803 B6 - - - or (hl) - 52 E3:0804 FD 21 A8 DC + 52 E3:0804 FD 21 C4 DC D1 - - - ld iy, vxTexturePolygon ; load up correct subcall routine - 53 E3:0809 C2 E9 B5 D1 jp nz, vxClipTriangle + 53 E3:0809 C2 7C B5 D1 jp nz, vxClipTriangle 54 E3:080D - - - - vxTextureTriangleNoClip: 55 E3:080D 23 13 03 - inc hl \ inc de \ inc bc 56 E3:0810 1A - - - ld a, (de) @@ -6530,7 +6488,7 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolat 75 E3:0824 0A - - - ld a, (bc) ; is this necessary with bfc ? Nope 76 E3:0825 96 - - - sub (hl) ; well to be safe, keep it 77 E3:0826 C8 - - - ret z ; - 78 E3:0827 FD 21 03 C8 + 78 E3:0827 FD 21 1F C8 D1 - - - ld iy, VX_PIXEL_SHADER_DATA ; load up shader data register 79 E3:082C - - - - ; copy u&v to constant area 80 E3:082C C5 - - - push bc @@ -6569,7 +6527,7 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolat 113 E3:0867 ED 62 - - sbc hl, hl 114 E3:0869 ED 52 - - sbc hl, de 115 E3:086B EB - - - ex de, hl - 116 E3:086C DD 21 13 ED + 116 E3:086C DD 21 21 ED 68 - - - ld ix, vxPixelShaderLengthLUT/2 117 E3:0871 DD 19 - - add ix, de 118 E3:0873 D1 - - - pop de @@ -6619,8 +6577,8 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolat 161 E3:08B6 31 00 00 00 ld sp, $000000 162 E3:08BA - - - - vxRegister01End: 163 E3:08BA - - - - - 164 E3:08BA 21 E9 C7 D1 ld hl, VX_PIXEL_SHADER_DATA-26 - 165 E3:08BE 11 EF C7 D1 ld de, VX_PIXEL_SHADER_DATA-20 + 164 E3:08BA 21 05 C8 D1 ld hl, VX_PIXEL_SHADER_DATA-26 + 165 E3:08BE 11 0B C8 D1 ld de, VX_PIXEL_SHADER_DATA-20 166 E3:08C2 - - - - 167 E3:08C2 - - - - vxRegister11Interpolation: 168 E3:08C2 01 FF FF FF ld bc, $FFFFFF @@ -6649,7 +6607,7 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolat 190 E3:08E6 ED 62 - - sbc hl, hl 191 E3:08E8 ED 52 - - sbc hl, de 192 E3:08EA EB - - - ex de, hl - 193 E3:08EB DD 21 13 ED + 193 E3:08EB DD 21 21 ED 68 - - - ld ix, vxPixelShaderLengthLUT/2 194 E3:08F0 DD 19 - - add ix, de 195 E3:08F2 D1 - - - pop de @@ -6701,7 +6659,7 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolat 240 E3:0936 31 00 00 00 ld sp, $000000 241 E3:093A - - - - vxRegister11End: 242 E3:093A - - - - - 243 E3:093A FD 21 03 C8 + 243 E3:093A FD 21 1F C8 D1 - - - ld iy, VX_PIXEL_SHADER_DATA ; load up shader data register 244 E3:093F 01 FF FF FF ld bc, $FFFFFF ; not necessarily here if exit with a bc < 0 previously, may be removed (end micro-opt) 245 E3:0943 - - - - vxRegister0Interpolation: @@ -6764,7 +6722,7 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolat 301 E3:099D C1 - - - pop bc 302 E3:099E - - - - 303 E3:099E FD 0F 00 - ld (iy+VX_REGISTER0), bc - 304 E3:09A1 21 53 EE 68 ld hl, vxPixelShaderExitLUT/2 + 304 E3:09A1 21 61 EE 68 ld hl, vxPixelShaderExitLUT/2 305 E3:09A5 ED 42 - - sbc hl,bc 306 E3:09A7 FD 2F 03 - ld (iy+VX_REGISTER1), hl 307 E3:09AA - - - - vxRegister0End: @@ -6775,7 +6733,7 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolat 312 E3:09AA - - - - ; compute dvdx 313 E3:09AA - - - - ; offset and compute register2&3 314 E3:09AA - - - - vxRegisterDerivative: - 315 E3:09AA FD 21 03 C8 + 315 E3:09AA FD 21 1F C8 D1 - - - ld iy, VX_PIXEL_SHADER_DATA 316 E3:09AF ED 23 E0 - lea hl, iy+VX_REGISTER_Y0 317 E3:09B2 ED 13 E6 - lea de, iy+VX_REGISTER_Y1 @@ -6796,7 +6754,7 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolat 332 E3:09CB 6F - - - ld l, a 333 E3:09CC 29 - - - add hl, hl 334 E3:09CD 0A - - - ld a, (bc) - 335 E3:09CE 01 D3 DC D1 ld bc, VX_INVERSE_TABLE + 335 E3:09CE 01 EF DC D1 ld bc, VX_INVERSE_TABLE 336 E3:09D2 09 - - - add hl, bc 337 E3:09D3 ED 27 - - ld hl, (hl) 338 E3:09D5 52 23 - - inc.s hl ; essential, table have (value-1) @@ -6840,7 +6798,7 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolat 375 E3:0A0B ED 52 - - sbc hl, de 376 E3:0A0D - - - - vxRegisterDerivativeAbs: 377 E3:0A0D - - - - ; write inc/dec - 378 E3:0A0D FD 21 03 C8 + 378 E3:0A0D FD 21 1F C8 D1 - - - ld iy, VX_PIXEL_SHADER_DATA 379 E3:0A12 32 19 00 E1 ld (VX_PIXEL_SHADER_SUBSIZE-1+VX_PIXEL_SHADER_CODE), a 380 E3:0A16 32 23 00 E1 ld (VX_PIXEL_SHADER_SUBSIZE*2-1+VX_PIXEL_SHADER_CODE), a @@ -7038,7 +6996,7 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolat 571 E3:0B3C - - - - ; initialise drawing 572 E3:0B3C DD 21 10 00 E1 - - - ld ix, VX_PIXEL_SHADER_CODE - 573 E3:0B41 FD 21 03 C8 + 573 E3:0B41 FD 21 1F C8 D1 - - - ld iy, VX_PIXEL_SHADER_DATA 574 E3:0B46 - - - - ; hl'= texture page and accumulator for dux LOADED 575 E3:0B46 - - - - ; de'= low byte is dux INIT @@ -7063,27 +7021,27 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolat 593 E3:0B60 - - - - .endrelocate Listing for file "include\\relocate.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolation.ez80" - 594 D1:D763 - - - - - 595 D1:D763 - - - - #include "vxPixelShader.inc" + 594 D1:D77F - - - - + 595 D1:D77F - - - - #include "vxPixelShader.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPixelShader.inc" - 1 D1:D763 - - - - #define VX_PIXEL_SHADER_CODE $E10010 - 2 D1:D763 - - - - #define VX_PIXEL_SHADER_SIZE 64 - 3 D1:D763 - - - - #define VX_PIXEL_SHADER_CONSTANT $D00000 - 4 D1:D763 - - - - #define VX_PIXEL_SHADER_SUBSIZE 10 - 5 D1:D763 - - - - - 6 D1:D763 - - - - #define VX_REGISTER_SIZE 12 - 7 D1:D763 - - - - #define VX_REGISTER0 0 - 8 D1:D763 - - - - #define VX_REGISTER1 3 - 9 D1:D763 - - - - #define VX_REGISTER2 6 - 10 D1:D763 - - - - #define VX_REGISTER3 9 - 11 D1:D763 - - - - - 12 D1:D763 - - - - ; locate write area as vxPixelShader + SUB_SIZE - 1, 1 byte to write - 13 D1:D763 - - - - ; for killing pixel, do a jr cc,$+3 for ld, jr cc, $+5 for other - 14 D1:D763 - - - - - 15 D1:D763 - - - - - 16 D1:D763 - - - - VX_PIXEL_SHADER_COPY: - 17 D1:D763 - - - - - 18 D1:D763 - - - - .relocate VX_PIXEL_SHADER_CODE + 1 D1:D77F - - - - #define VX_PIXEL_SHADER_CODE $E10010 + 2 D1:D77F - - - - #define VX_PIXEL_SHADER_SIZE 64 + 3 D1:D77F - - - - #define VX_PIXEL_SHADER_CONSTANT $D00000 + 4 D1:D77F - - - - #define VX_PIXEL_SHADER_SUBSIZE 10 + 5 D1:D77F - - - - + 6 D1:D77F - - - - #define VX_REGISTER_SIZE 12 + 7 D1:D77F - - - - #define VX_REGISTER0 0 + 8 D1:D77F - - - - #define VX_REGISTER1 3 + 9 D1:D77F - - - - #define VX_REGISTER2 6 + 10 D1:D77F - - - - #define VX_REGISTER3 9 + 11 D1:D77F - - - - + 12 D1:D77F - - - - ; locate write area as vxPixelShader + SUB_SIZE - 1, 1 byte to write + 13 D1:D77F - - - - ; for killing pixel, do a jr cc,$+3 for ld, jr cc, $+5 for other + 14 D1:D77F - - - - + 15 D1:D77F - - - - + 16 D1:D77F - - - - VX_PIXEL_SHADER_COPY: + 17 D1:D77F - - - - + 18 D1:D77F - - - - .relocate VX_PIXEL_SHADER_CODE Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPixelShader.inc" 19 E1:0010 - - - - 20 E1:0010 - - - - vxPixelShader: @@ -7138,1085 +7096,1085 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPixelShader.inc" 67 E1:0050 - - - - .endrelocate Listing for file "include\\relocate.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPixelShader.inc" - 68 D1:D7A3 - - - - - 69 D1:D7A3 - - - - #define VX_CALL0_POS (VX_PIXEL_SHADER_SUBSIZE*2-1+VX_PIXEL_SHADER_CODE)%256 - 70 D1:D7A3 - - - - #define VX_CALL1_POS (VX_PIXEL_SHADER_SUBSIZE-1+VX_PIXEL_SHADER_CODE)%256 - 71 D1:D7A3 - - - - #define VX_CALL_NULL ((VX_PIXEL_SHADER_SUBSIZE+1)*2+VX_PIXEL_SHADER_CODE)%256 - 72 D1:D7A3 - - - - #define VX_CALL1_NEG (VX_PIXEL_SHADER_SUBSIZE+VX_PIXEL_SHADER_CODE)%256 - 73 D1:D7A3 - - - - #define VX_CALL0_NEG (VX_PIXEL_SHADER_CODE)%256 - 74 D1:D7A3 - - - - #define VX_CALL_EXIT (VX_PIXEL_SHADER_CODE+60)%256 - 75 D1:D7A3 - - - - - 76 D1:D7A3 - - - - ; pad to two bytes - 77 D1:D7A3 00 - - - .align 2 - 78 D1:D7A4 1A A1 - - .db VX_CALL1_NEG, 161 - 79 D1:D7A6 10 A0 - - .db VX_CALL0_NEG, 160 - 80 D1:D7A8 1A A0 - - .db VX_CALL1_NEG, 160 - 81 D1:D7AA 10 9F - - .db VX_CALL0_NEG, 159 - 82 D1:D7AC 1A 9F - - .db VX_CALL1_NEG, 159 - 83 D1:D7AE 10 9E - - .db VX_CALL0_NEG, 158 - 84 D1:D7B0 1A 9E - - .db VX_CALL1_NEG, 158 - 85 D1:D7B2 10 9D - - .db VX_CALL0_NEG, 157 - 86 D1:D7B4 1A 9D - - .db VX_CALL1_NEG, 157 - 87 D1:D7B6 10 9C - - .db VX_CALL0_NEG, 156 - 88 D1:D7B8 1A 9C - - .db VX_CALL1_NEG, 156 - 89 D1:D7BA 10 9B - - .db VX_CALL0_NEG, 155 - 90 D1:D7BC 1A 9B - - .db VX_CALL1_NEG, 155 - 91 D1:D7BE 10 9A - - .db VX_CALL0_NEG, 154 - 92 D1:D7C0 1A 9A - - .db VX_CALL1_NEG, 154 - 93 D1:D7C2 10 99 - - .db VX_CALL0_NEG, 153 - 94 D1:D7C4 1A 99 - - .db VX_CALL1_NEG, 153 - 95 D1:D7C6 10 98 - - .db VX_CALL0_NEG, 152 - 96 D1:D7C8 1A 98 - - .db VX_CALL1_NEG, 152 - 97 D1:D7CA 10 97 - - .db VX_CALL0_NEG, 151 - 98 D1:D7CC 1A 97 - - .db VX_CALL1_NEG, 151 - 99 D1:D7CE 10 96 - - .db VX_CALL0_NEG, 150 - 100 D1:D7D0 1A 96 - - .db VX_CALL1_NEG, 150 - 101 D1:D7D2 10 95 - - .db VX_CALL0_NEG, 149 - 102 D1:D7D4 1A 95 - - .db VX_CALL1_NEG, 149 - 103 D1:D7D6 10 94 - - .db VX_CALL0_NEG, 148 - 104 D1:D7D8 1A 94 - - .db VX_CALL1_NEG, 148 - 105 D1:D7DA 10 93 - - .db VX_CALL0_NEG, 147 - 106 D1:D7DC 1A 93 - - .db VX_CALL1_NEG, 147 - 107 D1:D7DE 10 92 - - .db VX_CALL0_NEG, 146 - 108 D1:D7E0 1A 92 - - .db VX_CALL1_NEG, 146 - 109 D1:D7E2 10 91 - - .db VX_CALL0_NEG, 145 - 110 D1:D7E4 1A 91 - - .db VX_CALL1_NEG, 145 - 111 D1:D7E6 10 90 - - .db VX_CALL0_NEG, 144 - 112 D1:D7E8 1A 90 - - .db VX_CALL1_NEG, 144 - 113 D1:D7EA 10 8F - - .db VX_CALL0_NEG, 143 - 114 D1:D7EC 1A 8F - - .db VX_CALL1_NEG, 143 - 115 D1:D7EE 10 8E - - .db VX_CALL0_NEG, 142 - 116 D1:D7F0 1A 8E - - .db VX_CALL1_NEG, 142 - 117 D1:D7F2 10 8D - - .db VX_CALL0_NEG, 141 - 118 D1:D7F4 1A 8D - - .db VX_CALL1_NEG, 141 - 119 D1:D7F6 10 8C - - .db VX_CALL0_NEG, 140 - 120 D1:D7F8 1A 8C - - .db VX_CALL1_NEG, 140 - 121 D1:D7FA 10 8B - - .db VX_CALL0_NEG, 139 - 122 D1:D7FC 1A 8B - - .db VX_CALL1_NEG, 139 - 123 D1:D7FE 10 8A - - .db VX_CALL0_NEG, 138 - 124 D1:D800 1A 8A - - .db VX_CALL1_NEG, 138 - 125 D1:D802 10 89 - - .db VX_CALL0_NEG, 137 - 126 D1:D804 1A 89 - - .db VX_CALL1_NEG, 137 - 127 D1:D806 10 88 - - .db VX_CALL0_NEG, 136 - 128 D1:D808 1A 88 - - .db VX_CALL1_NEG, 136 - 129 D1:D80A 10 87 - - .db VX_CALL0_NEG, 135 - 130 D1:D80C 1A 87 - - .db VX_CALL1_NEG, 135 - 131 D1:D80E 10 86 - - .db VX_CALL0_NEG, 134 - 132 D1:D810 1A 86 - - .db VX_CALL1_NEG, 134 - 133 D1:D812 10 85 - - .db VX_CALL0_NEG, 133 - 134 D1:D814 1A 85 - - .db VX_CALL1_NEG, 133 - 135 D1:D816 10 84 - - .db VX_CALL0_NEG, 132 - 136 D1:D818 1A 84 - - .db VX_CALL1_NEG, 132 - 137 D1:D81A 10 83 - - .db VX_CALL0_NEG, 131 - 138 D1:D81C 1A 83 - - .db VX_CALL1_NEG, 131 - 139 D1:D81E 10 82 - - .db VX_CALL0_NEG, 130 - 140 D1:D820 1A 82 - - .db VX_CALL1_NEG, 130 - 141 D1:D822 10 81 - - .db VX_CALL0_NEG, 129 - 142 D1:D824 1A 81 - - .db VX_CALL1_NEG, 129 - 143 D1:D826 10 80 - - .db VX_CALL0_NEG, 128 - 144 D1:D828 1A 80 - - .db VX_CALL1_NEG, 128 - 145 D1:D82A 10 7F - - .db VX_CALL0_NEG, 127 - 146 D1:D82C 1A 7F - - .db VX_CALL1_NEG, 127 - 147 D1:D82E 10 7E - - .db VX_CALL0_NEG, 126 - 148 D1:D830 1A 7E - - .db VX_CALL1_NEG, 126 - 149 D1:D832 10 7D - - .db VX_CALL0_NEG, 125 - 150 D1:D834 1A 7D - - .db VX_CALL1_NEG, 125 - 151 D1:D836 10 7C - - .db VX_CALL0_NEG, 124 - 152 D1:D838 1A 7C - - .db VX_CALL1_NEG, 124 - 153 D1:D83A 10 7B - - .db VX_CALL0_NEG, 123 - 154 D1:D83C 1A 7B - - .db VX_CALL1_NEG, 123 - 155 D1:D83E 10 7A - - .db VX_CALL0_NEG, 122 - 156 D1:D840 1A 7A - - .db VX_CALL1_NEG, 122 - 157 D1:D842 10 79 - - .db VX_CALL0_NEG, 121 - 158 D1:D844 1A 79 - - .db VX_CALL1_NEG, 121 - 159 D1:D846 10 78 - - .db VX_CALL0_NEG, 120 - 160 D1:D848 1A 78 - - .db VX_CALL1_NEG, 120 - 161 D1:D84A 10 77 - - .db VX_CALL0_NEG, 119 - 162 D1:D84C 1A 77 - - .db VX_CALL1_NEG, 119 - 163 D1:D84E 10 76 - - .db VX_CALL0_NEG, 118 - 164 D1:D850 1A 76 - - .db VX_CALL1_NEG, 118 - 165 D1:D852 10 75 - - .db VX_CALL0_NEG, 117 - 166 D1:D854 1A 75 - - .db VX_CALL1_NEG, 117 - 167 D1:D856 10 74 - - .db VX_CALL0_NEG, 116 - 168 D1:D858 1A 74 - - .db VX_CALL1_NEG, 116 - 169 D1:D85A 10 73 - - .db VX_CALL0_NEG, 115 - 170 D1:D85C 1A 73 - - .db VX_CALL1_NEG, 115 - 171 D1:D85E 10 72 - - .db VX_CALL0_NEG, 114 - 172 D1:D860 1A 72 - - .db VX_CALL1_NEG, 114 - 173 D1:D862 10 71 - - .db VX_CALL0_NEG, 113 - 174 D1:D864 1A 71 - - .db VX_CALL1_NEG, 113 - 175 D1:D866 10 70 - - .db VX_CALL0_NEG, 112 - 176 D1:D868 1A 70 - - .db VX_CALL1_NEG, 112 - 177 D1:D86A 10 6F - - .db VX_CALL0_NEG, 111 - 178 D1:D86C 1A 6F - - .db VX_CALL1_NEG, 111 - 179 D1:D86E 10 6E - - .db VX_CALL0_NEG, 110 - 180 D1:D870 1A 6E - - .db VX_CALL1_NEG, 110 - 181 D1:D872 10 6D - - .db VX_CALL0_NEG, 109 - 182 D1:D874 1A 6D - - .db VX_CALL1_NEG, 109 - 183 D1:D876 10 6C - - .db VX_CALL0_NEG, 108 - 184 D1:D878 1A 6C - - .db VX_CALL1_NEG, 108 - 185 D1:D87A 10 6B - - .db VX_CALL0_NEG, 107 - 186 D1:D87C 1A 6B - - .db VX_CALL1_NEG, 107 - 187 D1:D87E 10 6A - - .db VX_CALL0_NEG, 106 - 188 D1:D880 1A 6A - - .db VX_CALL1_NEG, 106 - 189 D1:D882 10 69 - - .db VX_CALL0_NEG, 105 - 190 D1:D884 1A 69 - - .db VX_CALL1_NEG, 105 - 191 D1:D886 10 68 - - .db VX_CALL0_NEG, 104 - 192 D1:D888 1A 68 - - .db VX_CALL1_NEG, 104 - 193 D1:D88A 10 67 - - .db VX_CALL0_NEG, 103 - 194 D1:D88C 1A 67 - - .db VX_CALL1_NEG, 103 - 195 D1:D88E 10 66 - - .db VX_CALL0_NEG, 102 - 196 D1:D890 1A 66 - - .db VX_CALL1_NEG, 102 - 197 D1:D892 10 65 - - .db VX_CALL0_NEG, 101 - 198 D1:D894 1A 65 - - .db VX_CALL1_NEG, 101 - 199 D1:D896 10 64 - - .db VX_CALL0_NEG, 100 - 200 D1:D898 1A 64 - - .db VX_CALL1_NEG, 100 - 201 D1:D89A 10 63 - - .db VX_CALL0_NEG, 99 - 202 D1:D89C 1A 63 - - .db VX_CALL1_NEG, 99 - 203 D1:D89E 10 62 - - .db VX_CALL0_NEG, 98 - 204 D1:D8A0 1A 62 - - .db VX_CALL1_NEG, 98 - 205 D1:D8A2 10 61 - - .db VX_CALL0_NEG, 97 - 206 D1:D8A4 1A 61 - - .db VX_CALL1_NEG, 97 - 207 D1:D8A6 10 60 - - .db VX_CALL0_NEG, 96 - 208 D1:D8A8 1A 60 - - .db VX_CALL1_NEG, 96 - 209 D1:D8AA 10 5F - - .db VX_CALL0_NEG, 95 - 210 D1:D8AC 1A 5F - - .db VX_CALL1_NEG, 95 - 211 D1:D8AE 10 5E - - .db VX_CALL0_NEG, 94 - 212 D1:D8B0 1A 5E - - .db VX_CALL1_NEG, 94 - 213 D1:D8B2 10 5D - - .db VX_CALL0_NEG, 93 - 214 D1:D8B4 1A 5D - - .db VX_CALL1_NEG, 93 - 215 D1:D8B6 10 5C - - .db VX_CALL0_NEG, 92 - 216 D1:D8B8 1A 5C - - .db VX_CALL1_NEG, 92 - 217 D1:D8BA 10 5B - - .db VX_CALL0_NEG, 91 - 218 D1:D8BC 1A 5B - - .db VX_CALL1_NEG, 91 - 219 D1:D8BE 10 5A - - .db VX_CALL0_NEG, 90 - 220 D1:D8C0 1A 5A - - .db VX_CALL1_NEG, 90 - 221 D1:D8C2 10 59 - - .db VX_CALL0_NEG, 89 - 222 D1:D8C4 1A 59 - - .db VX_CALL1_NEG, 89 - 223 D1:D8C6 10 58 - - .db VX_CALL0_NEG, 88 - 224 D1:D8C8 1A 58 - - .db VX_CALL1_NEG, 88 - 225 D1:D8CA 10 57 - - .db VX_CALL0_NEG, 87 - 226 D1:D8CC 1A 57 - - .db VX_CALL1_NEG, 87 - 227 D1:D8CE 10 56 - - .db VX_CALL0_NEG, 86 - 228 D1:D8D0 1A 56 - - .db VX_CALL1_NEG, 86 - 229 D1:D8D2 10 55 - - .db VX_CALL0_NEG, 85 - 230 D1:D8D4 1A 55 - - .db VX_CALL1_NEG, 85 - 231 D1:D8D6 10 54 - - .db VX_CALL0_NEG, 84 - 232 D1:D8D8 1A 54 - - .db VX_CALL1_NEG, 84 - 233 D1:D8DA 10 53 - - .db VX_CALL0_NEG, 83 - 234 D1:D8DC 1A 53 - - .db VX_CALL1_NEG, 83 - 235 D1:D8DE 10 52 - - .db VX_CALL0_NEG, 82 - 236 D1:D8E0 1A 52 - - .db VX_CALL1_NEG, 82 - 237 D1:D8E2 10 51 - - .db VX_CALL0_NEG, 81 - 238 D1:D8E4 1A 51 - - .db VX_CALL1_NEG, 81 - 239 D1:D8E6 10 50 - - .db VX_CALL0_NEG, 80 - 240 D1:D8E8 1A 50 - - .db VX_CALL1_NEG, 80 - 241 D1:D8EA 10 4F - - .db VX_CALL0_NEG, 79 - 242 D1:D8EC 1A 4F - - .db VX_CALL1_NEG, 79 - 243 D1:D8EE 10 4E - - .db VX_CALL0_NEG, 78 - 244 D1:D8F0 1A 4E - - .db VX_CALL1_NEG, 78 - 245 D1:D8F2 10 4D - - .db VX_CALL0_NEG, 77 - 246 D1:D8F4 1A 4D - - .db VX_CALL1_NEG, 77 - 247 D1:D8F6 10 4C - - .db VX_CALL0_NEG, 76 - 248 D1:D8F8 1A 4C - - .db VX_CALL1_NEG, 76 - 249 D1:D8FA 10 4B - - .db VX_CALL0_NEG, 75 - 250 D1:D8FC 1A 4B - - .db VX_CALL1_NEG, 75 - 251 D1:D8FE 10 4A - - .db VX_CALL0_NEG, 74 - 252 D1:D900 1A 4A - - .db VX_CALL1_NEG, 74 - 253 D1:D902 10 49 - - .db VX_CALL0_NEG, 73 - 254 D1:D904 1A 49 - - .db VX_CALL1_NEG, 73 - 255 D1:D906 10 48 - - .db VX_CALL0_NEG, 72 - 256 D1:D908 1A 48 - - .db VX_CALL1_NEG, 72 - 257 D1:D90A 10 47 - - .db VX_CALL0_NEG, 71 - 258 D1:D90C 1A 47 - - .db VX_CALL1_NEG, 71 - 259 D1:D90E 10 46 - - .db VX_CALL0_NEG, 70 - 260 D1:D910 1A 46 - - .db VX_CALL1_NEG, 70 - 261 D1:D912 10 45 - - .db VX_CALL0_NEG, 69 - 262 D1:D914 1A 45 - - .db VX_CALL1_NEG, 69 - 263 D1:D916 10 44 - - .db VX_CALL0_NEG, 68 - 264 D1:D918 1A 44 - - .db VX_CALL1_NEG, 68 - 265 D1:D91A 10 43 - - .db VX_CALL0_NEG, 67 - 266 D1:D91C 1A 43 - - .db VX_CALL1_NEG, 67 - 267 D1:D91E 10 42 - - .db VX_CALL0_NEG, 66 - 268 D1:D920 1A 42 - - .db VX_CALL1_NEG, 66 - 269 D1:D922 10 41 - - .db VX_CALL0_NEG, 65 - 270 D1:D924 1A 41 - - .db VX_CALL1_NEG, 65 - 271 D1:D926 10 40 - - .db VX_CALL0_NEG, 64 - 272 D1:D928 1A 40 - - .db VX_CALL1_NEG, 64 - 273 D1:D92A 10 3F - - .db VX_CALL0_NEG, 63 - 274 D1:D92C 1A 3F - - .db VX_CALL1_NEG, 63 - 275 D1:D92E 10 3E - - .db VX_CALL0_NEG, 62 - 276 D1:D930 1A 3E - - .db VX_CALL1_NEG, 62 - 277 D1:D932 10 3D - - .db VX_CALL0_NEG, 61 - 278 D1:D934 1A 3D - - .db VX_CALL1_NEG, 61 - 279 D1:D936 10 3C - - .db VX_CALL0_NEG, 60 - 280 D1:D938 1A 3C - - .db VX_CALL1_NEG, 60 - 281 D1:D93A 10 3B - - .db VX_CALL0_NEG, 59 - 282 D1:D93C 1A 3B - - .db VX_CALL1_NEG, 59 - 283 D1:D93E 10 3A - - .db VX_CALL0_NEG, 58 - 284 D1:D940 1A 3A - - .db VX_CALL1_NEG, 58 - 285 D1:D942 10 39 - - .db VX_CALL0_NEG, 57 - 286 D1:D944 1A 39 - - .db VX_CALL1_NEG, 57 - 287 D1:D946 10 38 - - .db VX_CALL0_NEG, 56 - 288 D1:D948 1A 38 - - .db VX_CALL1_NEG, 56 - 289 D1:D94A 10 37 - - .db VX_CALL0_NEG, 55 - 290 D1:D94C 1A 37 - - .db VX_CALL1_NEG, 55 - 291 D1:D94E 10 36 - - .db VX_CALL0_NEG, 54 - 292 D1:D950 1A 36 - - .db VX_CALL1_NEG, 54 - 293 D1:D952 10 35 - - .db VX_CALL0_NEG, 53 - 294 D1:D954 1A 35 - - .db VX_CALL1_NEG, 53 - 295 D1:D956 10 34 - - .db VX_CALL0_NEG, 52 - 296 D1:D958 1A 34 - - .db VX_CALL1_NEG, 52 - 297 D1:D95A 10 33 - - .db VX_CALL0_NEG, 51 - 298 D1:D95C 1A 33 - - .db VX_CALL1_NEG, 51 - 299 D1:D95E 10 32 - - .db VX_CALL0_NEG, 50 - 300 D1:D960 1A 32 - - .db VX_CALL1_NEG, 50 - 301 D1:D962 10 31 - - .db VX_CALL0_NEG, 49 - 302 D1:D964 1A 31 - - .db VX_CALL1_NEG, 49 - 303 D1:D966 10 30 - - .db VX_CALL0_NEG, 48 - 304 D1:D968 1A 30 - - .db VX_CALL1_NEG, 48 - 305 D1:D96A 10 2F - - .db VX_CALL0_NEG, 47 - 306 D1:D96C 1A 2F - - .db VX_CALL1_NEG, 47 - 307 D1:D96E 10 2E - - .db VX_CALL0_NEG, 46 - 308 D1:D970 1A 2E - - .db VX_CALL1_NEG, 46 - 309 D1:D972 10 2D - - .db VX_CALL0_NEG, 45 - 310 D1:D974 1A 2D - - .db VX_CALL1_NEG, 45 - 311 D1:D976 10 2C - - .db VX_CALL0_NEG, 44 - 312 D1:D978 1A 2C - - .db VX_CALL1_NEG, 44 - 313 D1:D97A 10 2B - - .db VX_CALL0_NEG, 43 - 314 D1:D97C 1A 2B - - .db VX_CALL1_NEG, 43 - 315 D1:D97E 10 2A - - .db VX_CALL0_NEG, 42 - 316 D1:D980 1A 2A - - .db VX_CALL1_NEG, 42 - 317 D1:D982 10 29 - - .db VX_CALL0_NEG, 41 - 318 D1:D984 1A 29 - - .db VX_CALL1_NEG, 41 - 319 D1:D986 10 28 - - .db VX_CALL0_NEG, 40 - 320 D1:D988 1A 28 - - .db VX_CALL1_NEG, 40 - 321 D1:D98A 10 27 - - .db VX_CALL0_NEG, 39 - 322 D1:D98C 1A 27 - - .db VX_CALL1_NEG, 39 - 323 D1:D98E 10 26 - - .db VX_CALL0_NEG, 38 - 324 D1:D990 1A 26 - - .db VX_CALL1_NEG, 38 - 325 D1:D992 10 25 - - .db VX_CALL0_NEG, 37 - 326 D1:D994 1A 25 - - .db VX_CALL1_NEG, 37 - 327 D1:D996 10 24 - - .db VX_CALL0_NEG, 36 - 328 D1:D998 1A 24 - - .db VX_CALL1_NEG, 36 - 329 D1:D99A 10 23 - - .db VX_CALL0_NEG, 35 - 330 D1:D99C 1A 23 - - .db VX_CALL1_NEG, 35 - 331 D1:D99E 10 22 - - .db VX_CALL0_NEG, 34 - 332 D1:D9A0 1A 22 - - .db VX_CALL1_NEG, 34 - 333 D1:D9A2 10 21 - - .db VX_CALL0_NEG, 33 - 334 D1:D9A4 1A 21 - - .db VX_CALL1_NEG, 33 - 335 D1:D9A6 10 20 - - .db VX_CALL0_NEG, 32 - 336 D1:D9A8 1A 20 - - .db VX_CALL1_NEG, 32 - 337 D1:D9AA 10 1F - - .db VX_CALL0_NEG, 31 - 338 D1:D9AC 1A 1F - - .db VX_CALL1_NEG, 31 - 339 D1:D9AE 10 1E - - .db VX_CALL0_NEG, 30 - 340 D1:D9B0 1A 1E - - .db VX_CALL1_NEG, 30 - 341 D1:D9B2 10 1D - - .db VX_CALL0_NEG, 29 - 342 D1:D9B4 1A 1D - - .db VX_CALL1_NEG, 29 - 343 D1:D9B6 10 1C - - .db VX_CALL0_NEG, 28 - 344 D1:D9B8 1A 1C - - .db VX_CALL1_NEG, 28 - 345 D1:D9BA 10 1B - - .db VX_CALL0_NEG, 27 - 346 D1:D9BC 1A 1B - - .db VX_CALL1_NEG, 27 - 347 D1:D9BE 10 1A - - .db VX_CALL0_NEG, 26 - 348 D1:D9C0 1A 1A - - .db VX_CALL1_NEG, 26 - 349 D1:D9C2 10 19 - - .db VX_CALL0_NEG, 25 - 350 D1:D9C4 1A 19 - - .db VX_CALL1_NEG, 25 - 351 D1:D9C6 10 18 - - .db VX_CALL0_NEG, 24 - 352 D1:D9C8 1A 18 - - .db VX_CALL1_NEG, 24 - 353 D1:D9CA 10 17 - - .db VX_CALL0_NEG, 23 - 354 D1:D9CC 1A 17 - - .db VX_CALL1_NEG, 23 - 355 D1:D9CE 10 16 - - .db VX_CALL0_NEG, 22 - 356 D1:D9D0 1A 16 - - .db VX_CALL1_NEG, 22 - 357 D1:D9D2 10 15 - - .db VX_CALL0_NEG, 21 - 358 D1:D9D4 1A 15 - - .db VX_CALL1_NEG, 21 - 359 D1:D9D6 10 14 - - .db VX_CALL0_NEG, 20 - 360 D1:D9D8 1A 14 - - .db VX_CALL1_NEG, 20 - 361 D1:D9DA 10 13 - - .db VX_CALL0_NEG, 19 - 362 D1:D9DC 1A 13 - - .db VX_CALL1_NEG, 19 - 363 D1:D9DE 10 12 - - .db VX_CALL0_NEG, 18 - 364 D1:D9E0 1A 12 - - .db VX_CALL1_NEG, 18 - 365 D1:D9E2 10 11 - - .db VX_CALL0_NEG, 17 - 366 D1:D9E4 1A 11 - - .db VX_CALL1_NEG, 17 - 367 D1:D9E6 10 10 - - .db VX_CALL0_NEG, 16 - 368 D1:D9E8 1A 10 - - .db VX_CALL1_NEG, 16 - 369 D1:D9EA 10 0F - - .db VX_CALL0_NEG, 15 - 370 D1:D9EC 1A 0F - - .db VX_CALL1_NEG, 15 - 371 D1:D9EE 10 0E - - .db VX_CALL0_NEG, 14 - 372 D1:D9F0 1A 0E - - .db VX_CALL1_NEG, 14 - 373 D1:D9F2 10 0D - - .db VX_CALL0_NEG, 13 - 374 D1:D9F4 1A 0D - - .db VX_CALL1_NEG, 13 - 375 D1:D9F6 10 0C - - .db VX_CALL0_NEG, 12 - 376 D1:D9F8 1A 0C - - .db VX_CALL1_NEG, 12 - 377 D1:D9FA 10 0B - - .db VX_CALL0_NEG, 11 - 378 D1:D9FC 1A 0B - - .db VX_CALL1_NEG, 11 - 379 D1:D9FE 10 0A - - .db VX_CALL0_NEG, 10 - 380 D1:DA00 1A 0A - - .db VX_CALL1_NEG, 10 - 381 D1:DA02 10 09 - - .db VX_CALL0_NEG, 9 - 382 D1:DA04 1A 09 - - .db VX_CALL1_NEG, 9 - 383 D1:DA06 10 08 - - .db VX_CALL0_NEG, 8 - 384 D1:DA08 1A 08 - - .db VX_CALL1_NEG, 8 - 385 D1:DA0A 10 07 - - .db VX_CALL0_NEG, 7 - 386 D1:DA0C 1A 07 - - .db VX_CALL1_NEG, 7 - 387 D1:DA0E 10 06 - - .db VX_CALL0_NEG, 6 - 388 D1:DA10 1A 06 - - .db VX_CALL1_NEG, 6 - 389 D1:DA12 10 05 - - .db VX_CALL0_NEG, 5 - 390 D1:DA14 1A 05 - - .db VX_CALL1_NEG, 5 - 391 D1:DA16 10 04 - - .db VX_CALL0_NEG, 4 - 392 D1:DA18 1A 04 - - .db VX_CALL1_NEG, 4 - 393 D1:DA1A 10 03 - - .db VX_CALL0_NEG, 3 - 394 D1:DA1C 1A 03 - - .db VX_CALL1_NEG, 3 - 395 D1:DA1E 10 02 - - .db VX_CALL0_NEG, 2 - 396 D1:DA20 1A 02 - - .db VX_CALL1_NEG, 2 - 397 D1:DA22 10 01 - - .db VX_CALL0_NEG, 1 - 398 D1:DA24 1A 01 - - .db VX_CALL1_NEG, 1 - 399 D1:DA26 - - - - vxPixelShaderLengthLUT: - 400 D1:DA26 26 01 - - .db VX_CALL_NULL, 1 - 401 D1:DA28 19 01 - - .db VX_CALL1_POS, 1 - 402 D1:DA2A 23 02 - - .db VX_CALL0_POS, 2 - 403 D1:DA2C 19 02 - - .db VX_CALL1_POS, 2 - 404 D1:DA2E 23 03 - - .db VX_CALL0_POS, 3 - 405 D1:DA30 19 03 - - .db VX_CALL1_POS, 3 - 406 D1:DA32 23 04 - - .db VX_CALL0_POS, 4 - 407 D1:DA34 19 04 - - .db VX_CALL1_POS, 4 - 408 D1:DA36 23 05 - - .db VX_CALL0_POS, 5 - 409 D1:DA38 19 05 - - .db VX_CALL1_POS, 5 - 410 D1:DA3A 23 06 - - .db VX_CALL0_POS, 6 - 411 D1:DA3C 19 06 - - .db VX_CALL1_POS, 6 - 412 D1:DA3E 23 07 - - .db VX_CALL0_POS, 7 - 413 D1:DA40 19 07 - - .db VX_CALL1_POS, 7 - 414 D1:DA42 23 08 - - .db VX_CALL0_POS, 8 - 415 D1:DA44 19 08 - - .db VX_CALL1_POS, 8 - 416 D1:DA46 23 09 - - .db VX_CALL0_POS, 9 - 417 D1:DA48 19 09 - - .db VX_CALL1_POS, 9 - 418 D1:DA4A 23 0A - - .db VX_CALL0_POS, 10 - 419 D1:DA4C 19 0A - - .db VX_CALL1_POS, 10 - 420 D1:DA4E 23 0B - - .db VX_CALL0_POS, 11 - 421 D1:DA50 19 0B - - .db VX_CALL1_POS, 11 - 422 D1:DA52 23 0C - - .db VX_CALL0_POS, 12 - 423 D1:DA54 19 0C - - .db VX_CALL1_POS, 12 - 424 D1:DA56 23 0D - - .db VX_CALL0_POS, 13 - 425 D1:DA58 19 0D - - .db VX_CALL1_POS, 13 - 426 D1:DA5A 23 0E - - .db VX_CALL0_POS, 14 - 427 D1:DA5C 19 0E - - .db VX_CALL1_POS, 14 - 428 D1:DA5E 23 0F - - .db VX_CALL0_POS, 15 - 429 D1:DA60 19 0F - - .db VX_CALL1_POS, 15 - 430 D1:DA62 23 10 - - .db VX_CALL0_POS, 16 - 431 D1:DA64 19 10 - - .db VX_CALL1_POS, 16 - 432 D1:DA66 23 11 - - .db VX_CALL0_POS, 17 - 433 D1:DA68 19 11 - - .db VX_CALL1_POS, 17 - 434 D1:DA6A 23 12 - - .db VX_CALL0_POS, 18 - 435 D1:DA6C 19 12 - - .db VX_CALL1_POS, 18 - 436 D1:DA6E 23 13 - - .db VX_CALL0_POS, 19 - 437 D1:DA70 19 13 - - .db VX_CALL1_POS, 19 - 438 D1:DA72 23 14 - - .db VX_CALL0_POS, 20 - 439 D1:DA74 19 14 - - .db VX_CALL1_POS, 20 - 440 D1:DA76 23 15 - - .db VX_CALL0_POS, 21 - 441 D1:DA78 19 15 - - .db VX_CALL1_POS, 21 - 442 D1:DA7A 23 16 - - .db VX_CALL0_POS, 22 - 443 D1:DA7C 19 16 - - .db VX_CALL1_POS, 22 - 444 D1:DA7E 23 17 - - .db VX_CALL0_POS, 23 - 445 D1:DA80 19 17 - - .db VX_CALL1_POS, 23 - 446 D1:DA82 23 18 - - .db VX_CALL0_POS, 24 - 447 D1:DA84 19 18 - - .db VX_CALL1_POS, 24 - 448 D1:DA86 23 19 - - .db VX_CALL0_POS, 25 - 449 D1:DA88 19 19 - - .db VX_CALL1_POS, 25 - 450 D1:DA8A 23 1A - - .db VX_CALL0_POS, 26 - 451 D1:DA8C 19 1A - - .db VX_CALL1_POS, 26 - 452 D1:DA8E 23 1B - - .db VX_CALL0_POS, 27 - 453 D1:DA90 19 1B - - .db VX_CALL1_POS, 27 - 454 D1:DA92 23 1C - - .db VX_CALL0_POS, 28 - 455 D1:DA94 19 1C - - .db VX_CALL1_POS, 28 - 456 D1:DA96 23 1D - - .db VX_CALL0_POS, 29 - 457 D1:DA98 19 1D - - .db VX_CALL1_POS, 29 - 458 D1:DA9A 23 1E - - .db VX_CALL0_POS, 30 - 459 D1:DA9C 19 1E - - .db VX_CALL1_POS, 30 - 460 D1:DA9E 23 1F - - .db VX_CALL0_POS, 31 - 461 D1:DAA0 19 1F - - .db VX_CALL1_POS, 31 - 462 D1:DAA2 23 20 - - .db VX_CALL0_POS, 32 - 463 D1:DAA4 19 20 - - .db VX_CALL1_POS, 32 - 464 D1:DAA6 23 21 - - .db VX_CALL0_POS, 33 - 465 D1:DAA8 19 21 - - .db VX_CALL1_POS, 33 - 466 D1:DAAA 23 22 - - .db VX_CALL0_POS, 34 - 467 D1:DAAC 19 22 - - .db VX_CALL1_POS, 34 - 468 D1:DAAE 23 23 - - .db VX_CALL0_POS, 35 - 469 D1:DAB0 19 23 - - .db VX_CALL1_POS, 35 - 470 D1:DAB2 23 24 - - .db VX_CALL0_POS, 36 - 471 D1:DAB4 19 24 - - .db VX_CALL1_POS, 36 - 472 D1:DAB6 23 25 - - .db VX_CALL0_POS, 37 - 473 D1:DAB8 19 25 - - .db VX_CALL1_POS, 37 - 474 D1:DABA 23 26 - - .db VX_CALL0_POS, 38 - 475 D1:DABC 19 26 - - .db VX_CALL1_POS, 38 - 476 D1:DABE 23 27 - - .db VX_CALL0_POS, 39 - 477 D1:DAC0 19 27 - - .db VX_CALL1_POS, 39 - 478 D1:DAC2 23 28 - - .db VX_CALL0_POS, 40 - 479 D1:DAC4 19 28 - - .db VX_CALL1_POS, 40 - 480 D1:DAC6 23 29 - - .db VX_CALL0_POS, 41 - 481 D1:DAC8 19 29 - - .db VX_CALL1_POS, 41 - 482 D1:DACA 23 2A - - .db VX_CALL0_POS, 42 - 483 D1:DACC 19 2A - - .db VX_CALL1_POS, 42 - 484 D1:DACE 23 2B - - .db VX_CALL0_POS, 43 - 485 D1:DAD0 19 2B - - .db VX_CALL1_POS, 43 - 486 D1:DAD2 23 2C - - .db VX_CALL0_POS, 44 - 487 D1:DAD4 19 2C - - .db VX_CALL1_POS, 44 - 488 D1:DAD6 23 2D - - .db VX_CALL0_POS, 45 - 489 D1:DAD8 19 2D - - .db VX_CALL1_POS, 45 - 490 D1:DADA 23 2E - - .db VX_CALL0_POS, 46 - 491 D1:DADC 19 2E - - .db VX_CALL1_POS, 46 - 492 D1:DADE 23 2F - - .db VX_CALL0_POS, 47 - 493 D1:DAE0 19 2F - - .db VX_CALL1_POS, 47 - 494 D1:DAE2 23 30 - - .db VX_CALL0_POS, 48 - 495 D1:DAE4 19 30 - - .db VX_CALL1_POS, 48 - 496 D1:DAE6 23 31 - - .db VX_CALL0_POS, 49 - 497 D1:DAE8 19 31 - - .db VX_CALL1_POS, 49 - 498 D1:DAEA 23 32 - - .db VX_CALL0_POS, 50 - 499 D1:DAEC 19 32 - - .db VX_CALL1_POS, 50 - 500 D1:DAEE 23 33 - - .db VX_CALL0_POS, 51 - 501 D1:DAF0 19 33 - - .db VX_CALL1_POS, 51 - 502 D1:DAF2 23 34 - - .db VX_CALL0_POS, 52 - 503 D1:DAF4 19 34 - - .db VX_CALL1_POS, 52 - 504 D1:DAF6 23 35 - - .db VX_CALL0_POS, 53 - 505 D1:DAF8 19 35 - - .db VX_CALL1_POS, 53 - 506 D1:DAFA 23 36 - - .db VX_CALL0_POS, 54 - 507 D1:DAFC 19 36 - - .db VX_CALL1_POS, 54 - 508 D1:DAFE 23 37 - - .db VX_CALL0_POS, 55 - 509 D1:DB00 19 37 - - .db VX_CALL1_POS, 55 - 510 D1:DB02 23 38 - - .db VX_CALL0_POS, 56 - 511 D1:DB04 19 38 - - .db VX_CALL1_POS, 56 - 512 D1:DB06 23 39 - - .db VX_CALL0_POS, 57 - 513 D1:DB08 19 39 - - .db VX_CALL1_POS, 57 - 514 D1:DB0A 23 3A - - .db VX_CALL0_POS, 58 - 515 D1:DB0C 19 3A - - .db VX_CALL1_POS, 58 - 516 D1:DB0E 23 3B - - .db VX_CALL0_POS, 59 - 517 D1:DB10 19 3B - - .db VX_CALL1_POS, 59 - 518 D1:DB12 23 3C - - .db VX_CALL0_POS, 60 - 519 D1:DB14 19 3C - - .db VX_CALL1_POS, 60 - 520 D1:DB16 23 3D - - .db VX_CALL0_POS, 61 - 521 D1:DB18 19 3D - - .db VX_CALL1_POS, 61 - 522 D1:DB1A 23 3E - - .db VX_CALL0_POS, 62 - 523 D1:DB1C 19 3E - - .db VX_CALL1_POS, 62 - 524 D1:DB1E 23 3F - - .db VX_CALL0_POS, 63 - 525 D1:DB20 19 3F - - .db VX_CALL1_POS, 63 - 526 D1:DB22 23 40 - - .db VX_CALL0_POS, 64 - 527 D1:DB24 19 40 - - .db VX_CALL1_POS, 64 - 528 D1:DB26 23 41 - - .db VX_CALL0_POS, 65 - 529 D1:DB28 19 41 - - .db VX_CALL1_POS, 65 - 530 D1:DB2A 23 42 - - .db VX_CALL0_POS, 66 - 531 D1:DB2C 19 42 - - .db VX_CALL1_POS, 66 - 532 D1:DB2E 23 43 - - .db VX_CALL0_POS, 67 - 533 D1:DB30 19 43 - - .db VX_CALL1_POS, 67 - 534 D1:DB32 23 44 - - .db VX_CALL0_POS, 68 - 535 D1:DB34 19 44 - - .db VX_CALL1_POS, 68 - 536 D1:DB36 23 45 - - .db VX_CALL0_POS, 69 - 537 D1:DB38 19 45 - - .db VX_CALL1_POS, 69 - 538 D1:DB3A 23 46 - - .db VX_CALL0_POS, 70 - 539 D1:DB3C 19 46 - - .db VX_CALL1_POS, 70 - 540 D1:DB3E 23 47 - - .db VX_CALL0_POS, 71 - 541 D1:DB40 19 47 - - .db VX_CALL1_POS, 71 - 542 D1:DB42 23 48 - - .db VX_CALL0_POS, 72 - 543 D1:DB44 19 48 - - .db VX_CALL1_POS, 72 - 544 D1:DB46 23 49 - - .db VX_CALL0_POS, 73 - 545 D1:DB48 19 49 - - .db VX_CALL1_POS, 73 - 546 D1:DB4A 23 4A - - .db VX_CALL0_POS, 74 - 547 D1:DB4C 19 4A - - .db VX_CALL1_POS, 74 - 548 D1:DB4E 23 4B - - .db VX_CALL0_POS, 75 - 549 D1:DB50 19 4B - - .db VX_CALL1_POS, 75 - 550 D1:DB52 23 4C - - .db VX_CALL0_POS, 76 - 551 D1:DB54 19 4C - - .db VX_CALL1_POS, 76 - 552 D1:DB56 23 4D - - .db VX_CALL0_POS, 77 - 553 D1:DB58 19 4D - - .db VX_CALL1_POS, 77 - 554 D1:DB5A 23 4E - - .db VX_CALL0_POS, 78 - 555 D1:DB5C 19 4E - - .db VX_CALL1_POS, 78 - 556 D1:DB5E 23 4F - - .db VX_CALL0_POS, 79 - 557 D1:DB60 19 4F - - .db VX_CALL1_POS, 79 - 558 D1:DB62 23 50 - - .db VX_CALL0_POS, 80 - 559 D1:DB64 19 50 - - .db VX_CALL1_POS, 80 - 560 D1:DB66 23 51 - - .db VX_CALL0_POS, 81 - 561 D1:DB68 19 51 - - .db VX_CALL1_POS, 81 - 562 D1:DB6A 23 52 - - .db VX_CALL0_POS, 82 - 563 D1:DB6C 19 52 - - .db VX_CALL1_POS, 82 - 564 D1:DB6E 23 53 - - .db VX_CALL0_POS, 83 - 565 D1:DB70 19 53 - - .db VX_CALL1_POS, 83 - 566 D1:DB72 23 54 - - .db VX_CALL0_POS, 84 - 567 D1:DB74 19 54 - - .db VX_CALL1_POS, 84 - 568 D1:DB76 23 55 - - .db VX_CALL0_POS, 85 - 569 D1:DB78 19 55 - - .db VX_CALL1_POS, 85 - 570 D1:DB7A 23 56 - - .db VX_CALL0_POS, 86 - 571 D1:DB7C 19 56 - - .db VX_CALL1_POS, 86 - 572 D1:DB7E 23 57 - - .db VX_CALL0_POS, 87 - 573 D1:DB80 19 57 - - .db VX_CALL1_POS, 87 - 574 D1:DB82 23 58 - - .db VX_CALL0_POS, 88 - 575 D1:DB84 19 58 - - .db VX_CALL1_POS, 88 - 576 D1:DB86 23 59 - - .db VX_CALL0_POS, 89 - 577 D1:DB88 19 59 - - .db VX_CALL1_POS, 89 - 578 D1:DB8A 23 5A - - .db VX_CALL0_POS, 90 - 579 D1:DB8C 19 5A - - .db VX_CALL1_POS, 90 - 580 D1:DB8E 23 5B - - .db VX_CALL0_POS, 91 - 581 D1:DB90 19 5B - - .db VX_CALL1_POS, 91 - 582 D1:DB92 23 5C - - .db VX_CALL0_POS, 92 - 583 D1:DB94 19 5C - - .db VX_CALL1_POS, 92 - 584 D1:DB96 23 5D - - .db VX_CALL0_POS, 93 - 585 D1:DB98 19 5D - - .db VX_CALL1_POS, 93 - 586 D1:DB9A 23 5E - - .db VX_CALL0_POS, 94 - 587 D1:DB9C 19 5E - - .db VX_CALL1_POS, 94 - 588 D1:DB9E 23 5F - - .db VX_CALL0_POS, 95 - 589 D1:DBA0 19 5F - - .db VX_CALL1_POS, 95 - 590 D1:DBA2 23 60 - - .db VX_CALL0_POS, 96 - 591 D1:DBA4 19 60 - - .db VX_CALL1_POS, 96 - 592 D1:DBA6 23 61 - - .db VX_CALL0_POS, 97 - 593 D1:DBA8 19 61 - - .db VX_CALL1_POS, 97 - 594 D1:DBAA 23 62 - - .db VX_CALL0_POS, 98 - 595 D1:DBAC 19 62 - - .db VX_CALL1_POS, 98 - 596 D1:DBAE 23 63 - - .db VX_CALL0_POS, 99 - 597 D1:DBB0 19 63 - - .db VX_CALL1_POS, 99 - 598 D1:DBB2 23 64 - - .db VX_CALL0_POS, 100 - 599 D1:DBB4 19 64 - - .db VX_CALL1_POS, 100 - 600 D1:DBB6 23 65 - - .db VX_CALL0_POS, 101 - 601 D1:DBB8 19 65 - - .db VX_CALL1_POS, 101 - 602 D1:DBBA 23 66 - - .db VX_CALL0_POS, 102 - 603 D1:DBBC 19 66 - - .db VX_CALL1_POS, 102 - 604 D1:DBBE 23 67 - - .db VX_CALL0_POS, 103 - 605 D1:DBC0 19 67 - - .db VX_CALL1_POS, 103 - 606 D1:DBC2 23 68 - - .db VX_CALL0_POS, 104 - 607 D1:DBC4 19 68 - - .db VX_CALL1_POS, 104 - 608 D1:DBC6 23 69 - - .db VX_CALL0_POS, 105 - 609 D1:DBC8 19 69 - - .db VX_CALL1_POS, 105 - 610 D1:DBCA 23 6A - - .db VX_CALL0_POS, 106 - 611 D1:DBCC 19 6A - - .db VX_CALL1_POS, 106 - 612 D1:DBCE 23 6B - - .db VX_CALL0_POS, 107 - 613 D1:DBD0 19 6B - - .db VX_CALL1_POS, 107 - 614 D1:DBD2 23 6C - - .db VX_CALL0_POS, 108 - 615 D1:DBD4 19 6C - - .db VX_CALL1_POS, 108 - 616 D1:DBD6 23 6D - - .db VX_CALL0_POS, 109 - 617 D1:DBD8 19 6D - - .db VX_CALL1_POS, 109 - 618 D1:DBDA 23 6E - - .db VX_CALL0_POS, 110 - 619 D1:DBDC 19 6E - - .db VX_CALL1_POS, 110 - 620 D1:DBDE 23 6F - - .db VX_CALL0_POS, 111 - 621 D1:DBE0 19 6F - - .db VX_CALL1_POS, 111 - 622 D1:DBE2 23 70 - - .db VX_CALL0_POS, 112 - 623 D1:DBE4 19 70 - - .db VX_CALL1_POS, 112 - 624 D1:DBE6 23 71 - - .db VX_CALL0_POS, 113 - 625 D1:DBE8 19 71 - - .db VX_CALL1_POS, 113 - 626 D1:DBEA 23 72 - - .db VX_CALL0_POS, 114 - 627 D1:DBEC 19 72 - - .db VX_CALL1_POS, 114 - 628 D1:DBEE 23 73 - - .db VX_CALL0_POS, 115 - 629 D1:DBF0 19 73 - - .db VX_CALL1_POS, 115 - 630 D1:DBF2 23 74 - - .db VX_CALL0_POS, 116 - 631 D1:DBF4 19 74 - - .db VX_CALL1_POS, 116 - 632 D1:DBF6 23 75 - - .db VX_CALL0_POS, 117 - 633 D1:DBF8 19 75 - - .db VX_CALL1_POS, 117 - 634 D1:DBFA 23 76 - - .db VX_CALL0_POS, 118 - 635 D1:DBFC 19 76 - - .db VX_CALL1_POS, 118 - 636 D1:DBFE 23 77 - - .db VX_CALL0_POS, 119 - 637 D1:DC00 19 77 - - .db VX_CALL1_POS, 119 - 638 D1:DC02 23 78 - - .db VX_CALL0_POS, 120 - 639 D1:DC04 19 78 - - .db VX_CALL1_POS, 120 - 640 D1:DC06 23 79 - - .db VX_CALL0_POS, 121 - 641 D1:DC08 19 79 - - .db VX_CALL1_POS, 121 - 642 D1:DC0A 23 7A - - .db VX_CALL0_POS, 122 - 643 D1:DC0C 19 7A - - .db VX_CALL1_POS, 122 - 644 D1:DC0E 23 7B - - .db VX_CALL0_POS, 123 - 645 D1:DC10 19 7B - - .db VX_CALL1_POS, 123 - 646 D1:DC12 23 7C - - .db VX_CALL0_POS, 124 - 647 D1:DC14 19 7C - - .db VX_CALL1_POS, 124 - 648 D1:DC16 23 7D - - .db VX_CALL0_POS, 125 - 649 D1:DC18 19 7D - - .db VX_CALL1_POS, 125 - 650 D1:DC1A 23 7E - - .db VX_CALL0_POS, 126 - 651 D1:DC1C 19 7E - - .db VX_CALL1_POS, 126 - 652 D1:DC1E 23 7F - - .db VX_CALL0_POS, 127 - 653 D1:DC20 19 7F - - .db VX_CALL1_POS, 127 - 654 D1:DC22 23 80 - - .db VX_CALL0_POS, 128 - 655 D1:DC24 19 80 - - .db VX_CALL1_POS, 128 - 656 D1:DC26 23 81 - - .db VX_CALL0_POS, 129 - 657 D1:DC28 19 81 - - .db VX_CALL1_POS, 129 - 658 D1:DC2A 23 82 - - .db VX_CALL0_POS, 130 - 659 D1:DC2C 19 82 - - .db VX_CALL1_POS, 130 - 660 D1:DC2E 23 83 - - .db VX_CALL0_POS, 131 - 661 D1:DC30 19 83 - - .db VX_CALL1_POS, 131 - 662 D1:DC32 23 84 - - .db VX_CALL0_POS, 132 - 663 D1:DC34 19 84 - - .db VX_CALL1_POS, 132 - 664 D1:DC36 23 85 - - .db VX_CALL0_POS, 133 - 665 D1:DC38 19 85 - - .db VX_CALL1_POS, 133 - 666 D1:DC3A 23 86 - - .db VX_CALL0_POS, 134 - 667 D1:DC3C 19 86 - - .db VX_CALL1_POS, 134 - 668 D1:DC3E 23 87 - - .db VX_CALL0_POS, 135 - 669 D1:DC40 19 87 - - .db VX_CALL1_POS, 135 - 670 D1:DC42 23 88 - - .db VX_CALL0_POS, 136 - 671 D1:DC44 19 88 - - .db VX_CALL1_POS, 136 - 672 D1:DC46 23 89 - - .db VX_CALL0_POS, 137 - 673 D1:DC48 19 89 - - .db VX_CALL1_POS, 137 - 674 D1:DC4A 23 8A - - .db VX_CALL0_POS, 138 - 675 D1:DC4C 19 8A - - .db VX_CALL1_POS, 138 - 676 D1:DC4E 23 8B - - .db VX_CALL0_POS, 139 - 677 D1:DC50 19 8B - - .db VX_CALL1_POS, 139 - 678 D1:DC52 23 8C - - .db VX_CALL0_POS, 140 - 679 D1:DC54 19 8C - - .db VX_CALL1_POS, 140 - 680 D1:DC56 23 8D - - .db VX_CALL0_POS, 141 - 681 D1:DC58 19 8D - - .db VX_CALL1_POS, 141 - 682 D1:DC5A 23 8E - - .db VX_CALL0_POS, 142 - 683 D1:DC5C 19 8E - - .db VX_CALL1_POS, 142 - 684 D1:DC5E 23 8F - - .db VX_CALL0_POS, 143 - 685 D1:DC60 19 8F - - .db VX_CALL1_POS, 143 - 686 D1:DC62 23 90 - - .db VX_CALL0_POS, 144 - 687 D1:DC64 19 90 - - .db VX_CALL1_POS, 144 - 688 D1:DC66 23 91 - - .db VX_CALL0_POS, 145 - 689 D1:DC68 19 91 - - .db VX_CALL1_POS, 145 - 690 D1:DC6A 23 92 - - .db VX_CALL0_POS, 146 - 691 D1:DC6C 19 92 - - .db VX_CALL1_POS, 146 - 692 D1:DC6E 23 93 - - .db VX_CALL0_POS, 147 - 693 D1:DC70 19 93 - - .db VX_CALL1_POS, 147 - 694 D1:DC72 23 94 - - .db VX_CALL0_POS, 148 - 695 D1:DC74 19 94 - - .db VX_CALL1_POS, 148 - 696 D1:DC76 23 95 - - .db VX_CALL0_POS, 149 - 697 D1:DC78 19 95 - - .db VX_CALL1_POS, 149 - 698 D1:DC7A 23 96 - - .db VX_CALL0_POS, 150 - 699 D1:DC7C 19 96 - - .db VX_CALL1_POS, 150 - 700 D1:DC7E 23 97 - - .db VX_CALL0_POS, 151 - 701 D1:DC80 19 97 - - .db VX_CALL1_POS, 151 - 702 D1:DC82 23 98 - - .db VX_CALL0_POS, 152 - 703 D1:DC84 19 98 - - .db VX_CALL1_POS, 152 - 704 D1:DC86 23 99 - - .db VX_CALL0_POS, 153 - 705 D1:DC88 19 99 - - .db VX_CALL1_POS, 153 - 706 D1:DC8A 23 9A - - .db VX_CALL0_POS, 154 - 707 D1:DC8C 19 9A - - .db VX_CALL1_POS, 154 - 708 D1:DC8E 23 9B - - .db VX_CALL0_POS, 155 - 709 D1:DC90 19 9B - - .db VX_CALL1_POS, 155 - 710 D1:DC92 23 9C - - .db VX_CALL0_POS, 156 - 711 D1:DC94 19 9C - - .db VX_CALL1_POS, 156 - 712 D1:DC96 23 9D - - .db VX_CALL0_POS, 157 - 713 D1:DC98 19 9D - - .db VX_CALL1_POS, 157 - 714 D1:DC9A 23 9E - - .db VX_CALL0_POS, 158 - 715 D1:DC9C 19 9E - - .db VX_CALL1_POS, 158 - 716 D1:DC9E 23 9F - - .db VX_CALL0_POS, 159 - 717 D1:DCA0 19 9F - - .db VX_CALL1_POS, 159 - 718 D1:DCA2 23 A0 - - .db VX_CALL0_POS, 160 - 719 D1:DCA4 19 A0 - - .db VX_CALL1_POS, 160 - 720 D1:DCA6 - - - - vxPixelShaderExitLUT: - 721 D1:DCA6 4C 00 - - .db VX_CALL_EXIT, 0 - 722 D1:DCA8 - - - - #comment - 723 D1:DCA8 - 724 D1:DCA8 lut table : - 725 D1:DCA8 ; aligned to 2 boundary - 726 D1:DCA8 ; call is within vxPixelShader and vxPixelShader+VX_PIXEL_SHADER_SUBSIZE - 727 D1:DCA8 ; for length = 0 jump to vxPixelShader+VX_PIXEL_SHADER_SUBSIZE*2+2 - 728 D1:DCA8 ; for length < 0 jump to vxPixelShader+VX_PIXEL_SHADER_SUBSIZE-1 and VX_PIXEL_SHADER_SUBSIZE*2+vxPixelShader-1 - 729 D1:DCA8 - 730 D1:DCA8 - 731 D1:DCA8 - 732 D1:DCA8 define ld (de+) ld (de),a \ inc de - 733 D1:DCA8 #define or (de+) ex de,hl \ or (hl) \ ex de,hl \ inc de - 734 D1:DCA8 #define and (de+) ex de,hl \ and (hl) \ ex de,hl \ inc de - 735 D1:DCA8 #define xor (de+) ex de,hl \ xor (hl) \ ex de,hl \ inc de - 736 D1:DCA8 - 737 D1:DCA8 ; lightning : 11 bytes, 32 cycles/pixel - 738 D1:DCA8 ld a, h ; get v to pass to next part - 739 D1:DCA8 add hl, sp ; v=v+dv (du on high) - 740 D1:DCA8 exx ; swap - 741 D1:DCA8 ld h, a ; paste v on high byte - 742 D1:DCA8 ld c, (hl) ; fetch texture, and get index to color table in same time - 743 D1:DCA8 adc hl, de ; u=u+du (on low) - 744 D1:DCA8 ld a, (bc) ; fetch lighted color - 745 D1:DCA8 exx ; swap - 746 D1:DCA8 ldpx ; write pixel and next - 747 D1:DCA8 - 748 D1:DCA8 - 749 D1:DCA8 vxRegister0Interpolation: - 750 D1:DCA8 ; bc = y-size, ix = adress - 751 D1:DCA8 ; de= error , iy = position - 752 D1:DCA8 ; sp= 320, sps = stack - 753 D1:DCA8 ld a, c - 754 D1:DCA8 ; compute error - 755 D1:DCA8 scf - 756 D1:DCA8 sbc hl, hl - 757 D1:DCA8 ld l, a - 758 D1:DCA8 sbc hl, de - 759 D1:DCA8 sra h - 760 D1:DCA8 rr l - 761 D1:DCA8 neg - 762 D1:DCA8 vxRegister0Loop: - 763 D1:DCA8 add hl, de - 764 D1:DCA8 jr nc, vxRegister0Next - 765 D1:DCA8 vxRegister0Restore: - 766 D1:DCA8 .db $DD - 767 D1:DCA8 vxRegister0Increment=$ - 768 D1:DCA8 nop - 769 D1:DCA8 add hl, bc - 770 D1:DCA8 jr c, vxRegister0Restore - 771 D1:DCA8 vxRegister0Next: - 772 D1:DCA8 ld (iy+VX_REGISTER0), ix ; this is framebuffer adress - 773 D1:DCA8 add ix, sp - 774 D1:DCA8 lea iy, iy+12 - 775 D1:DCA8 dec a - 776 D1:DCA8 jr nz, vxRegister0Loop - 777 D1:DCA8 ; magic end bytes - 778 D1:DCA8 ld bc, vxPixelShaderExitLUT/2+1 - 779 D1:DCA8 ld (iy+VX_REGISTER1), bc - 780 D1:DCA8 ld bc, -1 - 781 D1:DCA8 ld (iy+VX_REGISTER0), bc - 782 D1:DCA8 - 783 D1:DCA8 ;; lutadress = (-fb_reg1+LUTbase/2+fb_reg0)*2 = (fb_reg0-fb_reg1)*2+LUTbase - 784 D1:DCA8 - 785 D1:DCA8 ; do calculation for longest-smallest - 786 D1:DCA8 ; if length > 0, longest is at right, so draw right to left - 787 D1:DCA8 - 788 D1:DCA8 - 789 D1:DCA8 #endcomment + 68 D1:D7BF - - - - + 69 D1:D7BF - - - - #define VX_CALL0_POS (VX_PIXEL_SHADER_SUBSIZE*2-1+VX_PIXEL_SHADER_CODE)%256 + 70 D1:D7BF - - - - #define VX_CALL1_POS (VX_PIXEL_SHADER_SUBSIZE-1+VX_PIXEL_SHADER_CODE)%256 + 71 D1:D7BF - - - - #define VX_CALL_NULL ((VX_PIXEL_SHADER_SUBSIZE+1)*2+VX_PIXEL_SHADER_CODE)%256 + 72 D1:D7BF - - - - #define VX_CALL1_NEG (VX_PIXEL_SHADER_SUBSIZE+VX_PIXEL_SHADER_CODE)%256 + 73 D1:D7BF - - - - #define VX_CALL0_NEG (VX_PIXEL_SHADER_CODE)%256 + 74 D1:D7BF - - - - #define VX_CALL_EXIT (VX_PIXEL_SHADER_CODE+60)%256 + 75 D1:D7BF - - - - + 76 D1:D7BF - - - - ; pad to two bytes + 77 D1:D7BF 00 - - - .align 2 + 78 D1:D7C0 1A A1 - - .db VX_CALL1_NEG, 161 + 79 D1:D7C2 10 A0 - - .db VX_CALL0_NEG, 160 + 80 D1:D7C4 1A A0 - - .db VX_CALL1_NEG, 160 + 81 D1:D7C6 10 9F - - .db VX_CALL0_NEG, 159 + 82 D1:D7C8 1A 9F - - .db VX_CALL1_NEG, 159 + 83 D1:D7CA 10 9E - - .db VX_CALL0_NEG, 158 + 84 D1:D7CC 1A 9E - - .db VX_CALL1_NEG, 158 + 85 D1:D7CE 10 9D - - .db VX_CALL0_NEG, 157 + 86 D1:D7D0 1A 9D - - .db VX_CALL1_NEG, 157 + 87 D1:D7D2 10 9C - - .db VX_CALL0_NEG, 156 + 88 D1:D7D4 1A 9C - - .db VX_CALL1_NEG, 156 + 89 D1:D7D6 10 9B - - .db VX_CALL0_NEG, 155 + 90 D1:D7D8 1A 9B - - .db VX_CALL1_NEG, 155 + 91 D1:D7DA 10 9A - - .db VX_CALL0_NEG, 154 + 92 D1:D7DC 1A 9A - - .db VX_CALL1_NEG, 154 + 93 D1:D7DE 10 99 - - .db VX_CALL0_NEG, 153 + 94 D1:D7E0 1A 99 - - .db VX_CALL1_NEG, 153 + 95 D1:D7E2 10 98 - - .db VX_CALL0_NEG, 152 + 96 D1:D7E4 1A 98 - - .db VX_CALL1_NEG, 152 + 97 D1:D7E6 10 97 - - .db VX_CALL0_NEG, 151 + 98 D1:D7E8 1A 97 - - .db VX_CALL1_NEG, 151 + 99 D1:D7EA 10 96 - - .db VX_CALL0_NEG, 150 + 100 D1:D7EC 1A 96 - - .db VX_CALL1_NEG, 150 + 101 D1:D7EE 10 95 - - .db VX_CALL0_NEG, 149 + 102 D1:D7F0 1A 95 - - .db VX_CALL1_NEG, 149 + 103 D1:D7F2 10 94 - - .db VX_CALL0_NEG, 148 + 104 D1:D7F4 1A 94 - - .db VX_CALL1_NEG, 148 + 105 D1:D7F6 10 93 - - .db VX_CALL0_NEG, 147 + 106 D1:D7F8 1A 93 - - .db VX_CALL1_NEG, 147 + 107 D1:D7FA 10 92 - - .db VX_CALL0_NEG, 146 + 108 D1:D7FC 1A 92 - - .db VX_CALL1_NEG, 146 + 109 D1:D7FE 10 91 - - .db VX_CALL0_NEG, 145 + 110 D1:D800 1A 91 - - .db VX_CALL1_NEG, 145 + 111 D1:D802 10 90 - - .db VX_CALL0_NEG, 144 + 112 D1:D804 1A 90 - - .db VX_CALL1_NEG, 144 + 113 D1:D806 10 8F - - .db VX_CALL0_NEG, 143 + 114 D1:D808 1A 8F - - .db VX_CALL1_NEG, 143 + 115 D1:D80A 10 8E - - .db VX_CALL0_NEG, 142 + 116 D1:D80C 1A 8E - - .db VX_CALL1_NEG, 142 + 117 D1:D80E 10 8D - - .db VX_CALL0_NEG, 141 + 118 D1:D810 1A 8D - - .db VX_CALL1_NEG, 141 + 119 D1:D812 10 8C - - .db VX_CALL0_NEG, 140 + 120 D1:D814 1A 8C - - .db VX_CALL1_NEG, 140 + 121 D1:D816 10 8B - - .db VX_CALL0_NEG, 139 + 122 D1:D818 1A 8B - - .db VX_CALL1_NEG, 139 + 123 D1:D81A 10 8A - - .db VX_CALL0_NEG, 138 + 124 D1:D81C 1A 8A - - .db VX_CALL1_NEG, 138 + 125 D1:D81E 10 89 - - .db VX_CALL0_NEG, 137 + 126 D1:D820 1A 89 - - .db VX_CALL1_NEG, 137 + 127 D1:D822 10 88 - - .db VX_CALL0_NEG, 136 + 128 D1:D824 1A 88 - - .db VX_CALL1_NEG, 136 + 129 D1:D826 10 87 - - .db VX_CALL0_NEG, 135 + 130 D1:D828 1A 87 - - .db VX_CALL1_NEG, 135 + 131 D1:D82A 10 86 - - .db VX_CALL0_NEG, 134 + 132 D1:D82C 1A 86 - - .db VX_CALL1_NEG, 134 + 133 D1:D82E 10 85 - - .db VX_CALL0_NEG, 133 + 134 D1:D830 1A 85 - - .db VX_CALL1_NEG, 133 + 135 D1:D832 10 84 - - .db VX_CALL0_NEG, 132 + 136 D1:D834 1A 84 - - .db VX_CALL1_NEG, 132 + 137 D1:D836 10 83 - - .db VX_CALL0_NEG, 131 + 138 D1:D838 1A 83 - - .db VX_CALL1_NEG, 131 + 139 D1:D83A 10 82 - - .db VX_CALL0_NEG, 130 + 140 D1:D83C 1A 82 - - .db VX_CALL1_NEG, 130 + 141 D1:D83E 10 81 - - .db VX_CALL0_NEG, 129 + 142 D1:D840 1A 81 - - .db VX_CALL1_NEG, 129 + 143 D1:D842 10 80 - - .db VX_CALL0_NEG, 128 + 144 D1:D844 1A 80 - - .db VX_CALL1_NEG, 128 + 145 D1:D846 10 7F - - .db VX_CALL0_NEG, 127 + 146 D1:D848 1A 7F - - .db VX_CALL1_NEG, 127 + 147 D1:D84A 10 7E - - .db VX_CALL0_NEG, 126 + 148 D1:D84C 1A 7E - - .db VX_CALL1_NEG, 126 + 149 D1:D84E 10 7D - - .db VX_CALL0_NEG, 125 + 150 D1:D850 1A 7D - - .db VX_CALL1_NEG, 125 + 151 D1:D852 10 7C - - .db VX_CALL0_NEG, 124 + 152 D1:D854 1A 7C - - .db VX_CALL1_NEG, 124 + 153 D1:D856 10 7B - - .db VX_CALL0_NEG, 123 + 154 D1:D858 1A 7B - - .db VX_CALL1_NEG, 123 + 155 D1:D85A 10 7A - - .db VX_CALL0_NEG, 122 + 156 D1:D85C 1A 7A - - .db VX_CALL1_NEG, 122 + 157 D1:D85E 10 79 - - .db VX_CALL0_NEG, 121 + 158 D1:D860 1A 79 - - .db VX_CALL1_NEG, 121 + 159 D1:D862 10 78 - - .db VX_CALL0_NEG, 120 + 160 D1:D864 1A 78 - - .db VX_CALL1_NEG, 120 + 161 D1:D866 10 77 - - .db VX_CALL0_NEG, 119 + 162 D1:D868 1A 77 - - .db VX_CALL1_NEG, 119 + 163 D1:D86A 10 76 - - .db VX_CALL0_NEG, 118 + 164 D1:D86C 1A 76 - - .db VX_CALL1_NEG, 118 + 165 D1:D86E 10 75 - - .db VX_CALL0_NEG, 117 + 166 D1:D870 1A 75 - - .db VX_CALL1_NEG, 117 + 167 D1:D872 10 74 - - .db VX_CALL0_NEG, 116 + 168 D1:D874 1A 74 - - .db VX_CALL1_NEG, 116 + 169 D1:D876 10 73 - - .db VX_CALL0_NEG, 115 + 170 D1:D878 1A 73 - - .db VX_CALL1_NEG, 115 + 171 D1:D87A 10 72 - - .db VX_CALL0_NEG, 114 + 172 D1:D87C 1A 72 - - .db VX_CALL1_NEG, 114 + 173 D1:D87E 10 71 - - .db VX_CALL0_NEG, 113 + 174 D1:D880 1A 71 - - .db VX_CALL1_NEG, 113 + 175 D1:D882 10 70 - - .db VX_CALL0_NEG, 112 + 176 D1:D884 1A 70 - - .db VX_CALL1_NEG, 112 + 177 D1:D886 10 6F - - .db VX_CALL0_NEG, 111 + 178 D1:D888 1A 6F - - .db VX_CALL1_NEG, 111 + 179 D1:D88A 10 6E - - .db VX_CALL0_NEG, 110 + 180 D1:D88C 1A 6E - - .db VX_CALL1_NEG, 110 + 181 D1:D88E 10 6D - - .db VX_CALL0_NEG, 109 + 182 D1:D890 1A 6D - - .db VX_CALL1_NEG, 109 + 183 D1:D892 10 6C - - .db VX_CALL0_NEG, 108 + 184 D1:D894 1A 6C - - .db VX_CALL1_NEG, 108 + 185 D1:D896 10 6B - - .db VX_CALL0_NEG, 107 + 186 D1:D898 1A 6B - - .db VX_CALL1_NEG, 107 + 187 D1:D89A 10 6A - - .db VX_CALL0_NEG, 106 + 188 D1:D89C 1A 6A - - .db VX_CALL1_NEG, 106 + 189 D1:D89E 10 69 - - .db VX_CALL0_NEG, 105 + 190 D1:D8A0 1A 69 - - .db VX_CALL1_NEG, 105 + 191 D1:D8A2 10 68 - - .db VX_CALL0_NEG, 104 + 192 D1:D8A4 1A 68 - - .db VX_CALL1_NEG, 104 + 193 D1:D8A6 10 67 - - .db VX_CALL0_NEG, 103 + 194 D1:D8A8 1A 67 - - .db VX_CALL1_NEG, 103 + 195 D1:D8AA 10 66 - - .db VX_CALL0_NEG, 102 + 196 D1:D8AC 1A 66 - - .db VX_CALL1_NEG, 102 + 197 D1:D8AE 10 65 - - .db VX_CALL0_NEG, 101 + 198 D1:D8B0 1A 65 - - .db VX_CALL1_NEG, 101 + 199 D1:D8B2 10 64 - - .db VX_CALL0_NEG, 100 + 200 D1:D8B4 1A 64 - - .db VX_CALL1_NEG, 100 + 201 D1:D8B6 10 63 - - .db VX_CALL0_NEG, 99 + 202 D1:D8B8 1A 63 - - .db VX_CALL1_NEG, 99 + 203 D1:D8BA 10 62 - - .db VX_CALL0_NEG, 98 + 204 D1:D8BC 1A 62 - - .db VX_CALL1_NEG, 98 + 205 D1:D8BE 10 61 - - .db VX_CALL0_NEG, 97 + 206 D1:D8C0 1A 61 - - .db VX_CALL1_NEG, 97 + 207 D1:D8C2 10 60 - - .db VX_CALL0_NEG, 96 + 208 D1:D8C4 1A 60 - - .db VX_CALL1_NEG, 96 + 209 D1:D8C6 10 5F - - .db VX_CALL0_NEG, 95 + 210 D1:D8C8 1A 5F - - .db VX_CALL1_NEG, 95 + 211 D1:D8CA 10 5E - - .db VX_CALL0_NEG, 94 + 212 D1:D8CC 1A 5E - - .db VX_CALL1_NEG, 94 + 213 D1:D8CE 10 5D - - .db VX_CALL0_NEG, 93 + 214 D1:D8D0 1A 5D - - .db VX_CALL1_NEG, 93 + 215 D1:D8D2 10 5C - - .db VX_CALL0_NEG, 92 + 216 D1:D8D4 1A 5C - - .db VX_CALL1_NEG, 92 + 217 D1:D8D6 10 5B - - .db VX_CALL0_NEG, 91 + 218 D1:D8D8 1A 5B - - .db VX_CALL1_NEG, 91 + 219 D1:D8DA 10 5A - - .db VX_CALL0_NEG, 90 + 220 D1:D8DC 1A 5A - - .db VX_CALL1_NEG, 90 + 221 D1:D8DE 10 59 - - .db VX_CALL0_NEG, 89 + 222 D1:D8E0 1A 59 - - .db VX_CALL1_NEG, 89 + 223 D1:D8E2 10 58 - - .db VX_CALL0_NEG, 88 + 224 D1:D8E4 1A 58 - - .db VX_CALL1_NEG, 88 + 225 D1:D8E6 10 57 - - .db VX_CALL0_NEG, 87 + 226 D1:D8E8 1A 57 - - .db VX_CALL1_NEG, 87 + 227 D1:D8EA 10 56 - - .db VX_CALL0_NEG, 86 + 228 D1:D8EC 1A 56 - - .db VX_CALL1_NEG, 86 + 229 D1:D8EE 10 55 - - .db VX_CALL0_NEG, 85 + 230 D1:D8F0 1A 55 - - .db VX_CALL1_NEG, 85 + 231 D1:D8F2 10 54 - - .db VX_CALL0_NEG, 84 + 232 D1:D8F4 1A 54 - - .db VX_CALL1_NEG, 84 + 233 D1:D8F6 10 53 - - .db VX_CALL0_NEG, 83 + 234 D1:D8F8 1A 53 - - .db VX_CALL1_NEG, 83 + 235 D1:D8FA 10 52 - - .db VX_CALL0_NEG, 82 + 236 D1:D8FC 1A 52 - - .db VX_CALL1_NEG, 82 + 237 D1:D8FE 10 51 - - .db VX_CALL0_NEG, 81 + 238 D1:D900 1A 51 - - .db VX_CALL1_NEG, 81 + 239 D1:D902 10 50 - - .db VX_CALL0_NEG, 80 + 240 D1:D904 1A 50 - - .db VX_CALL1_NEG, 80 + 241 D1:D906 10 4F - - .db VX_CALL0_NEG, 79 + 242 D1:D908 1A 4F - - .db VX_CALL1_NEG, 79 + 243 D1:D90A 10 4E - - .db VX_CALL0_NEG, 78 + 244 D1:D90C 1A 4E - - .db VX_CALL1_NEG, 78 + 245 D1:D90E 10 4D - - .db VX_CALL0_NEG, 77 + 246 D1:D910 1A 4D - - .db VX_CALL1_NEG, 77 + 247 D1:D912 10 4C - - .db VX_CALL0_NEG, 76 + 248 D1:D914 1A 4C - - .db VX_CALL1_NEG, 76 + 249 D1:D916 10 4B - - .db VX_CALL0_NEG, 75 + 250 D1:D918 1A 4B - - .db VX_CALL1_NEG, 75 + 251 D1:D91A 10 4A - - .db VX_CALL0_NEG, 74 + 252 D1:D91C 1A 4A - - .db VX_CALL1_NEG, 74 + 253 D1:D91E 10 49 - - .db VX_CALL0_NEG, 73 + 254 D1:D920 1A 49 - - .db VX_CALL1_NEG, 73 + 255 D1:D922 10 48 - - .db VX_CALL0_NEG, 72 + 256 D1:D924 1A 48 - - .db VX_CALL1_NEG, 72 + 257 D1:D926 10 47 - - .db VX_CALL0_NEG, 71 + 258 D1:D928 1A 47 - - .db VX_CALL1_NEG, 71 + 259 D1:D92A 10 46 - - .db VX_CALL0_NEG, 70 + 260 D1:D92C 1A 46 - - .db VX_CALL1_NEG, 70 + 261 D1:D92E 10 45 - - .db VX_CALL0_NEG, 69 + 262 D1:D930 1A 45 - - .db VX_CALL1_NEG, 69 + 263 D1:D932 10 44 - - .db VX_CALL0_NEG, 68 + 264 D1:D934 1A 44 - - .db VX_CALL1_NEG, 68 + 265 D1:D936 10 43 - - .db VX_CALL0_NEG, 67 + 266 D1:D938 1A 43 - - .db VX_CALL1_NEG, 67 + 267 D1:D93A 10 42 - - .db VX_CALL0_NEG, 66 + 268 D1:D93C 1A 42 - - .db VX_CALL1_NEG, 66 + 269 D1:D93E 10 41 - - .db VX_CALL0_NEG, 65 + 270 D1:D940 1A 41 - - .db VX_CALL1_NEG, 65 + 271 D1:D942 10 40 - - .db VX_CALL0_NEG, 64 + 272 D1:D944 1A 40 - - .db VX_CALL1_NEG, 64 + 273 D1:D946 10 3F - - .db VX_CALL0_NEG, 63 + 274 D1:D948 1A 3F - - .db VX_CALL1_NEG, 63 + 275 D1:D94A 10 3E - - .db VX_CALL0_NEG, 62 + 276 D1:D94C 1A 3E - - .db VX_CALL1_NEG, 62 + 277 D1:D94E 10 3D - - .db VX_CALL0_NEG, 61 + 278 D1:D950 1A 3D - - .db VX_CALL1_NEG, 61 + 279 D1:D952 10 3C - - .db VX_CALL0_NEG, 60 + 280 D1:D954 1A 3C - - .db VX_CALL1_NEG, 60 + 281 D1:D956 10 3B - - .db VX_CALL0_NEG, 59 + 282 D1:D958 1A 3B - - .db VX_CALL1_NEG, 59 + 283 D1:D95A 10 3A - - .db VX_CALL0_NEG, 58 + 284 D1:D95C 1A 3A - - .db VX_CALL1_NEG, 58 + 285 D1:D95E 10 39 - - .db VX_CALL0_NEG, 57 + 286 D1:D960 1A 39 - - .db VX_CALL1_NEG, 57 + 287 D1:D962 10 38 - - .db VX_CALL0_NEG, 56 + 288 D1:D964 1A 38 - - .db VX_CALL1_NEG, 56 + 289 D1:D966 10 37 - - .db VX_CALL0_NEG, 55 + 290 D1:D968 1A 37 - - .db VX_CALL1_NEG, 55 + 291 D1:D96A 10 36 - - .db VX_CALL0_NEG, 54 + 292 D1:D96C 1A 36 - - .db VX_CALL1_NEG, 54 + 293 D1:D96E 10 35 - - .db VX_CALL0_NEG, 53 + 294 D1:D970 1A 35 - - .db VX_CALL1_NEG, 53 + 295 D1:D972 10 34 - - .db VX_CALL0_NEG, 52 + 296 D1:D974 1A 34 - - .db VX_CALL1_NEG, 52 + 297 D1:D976 10 33 - - .db VX_CALL0_NEG, 51 + 298 D1:D978 1A 33 - - .db VX_CALL1_NEG, 51 + 299 D1:D97A 10 32 - - .db VX_CALL0_NEG, 50 + 300 D1:D97C 1A 32 - - .db VX_CALL1_NEG, 50 + 301 D1:D97E 10 31 - - .db VX_CALL0_NEG, 49 + 302 D1:D980 1A 31 - - .db VX_CALL1_NEG, 49 + 303 D1:D982 10 30 - - .db VX_CALL0_NEG, 48 + 304 D1:D984 1A 30 - - .db VX_CALL1_NEG, 48 + 305 D1:D986 10 2F - - .db VX_CALL0_NEG, 47 + 306 D1:D988 1A 2F - - .db VX_CALL1_NEG, 47 + 307 D1:D98A 10 2E - - .db VX_CALL0_NEG, 46 + 308 D1:D98C 1A 2E - - .db VX_CALL1_NEG, 46 + 309 D1:D98E 10 2D - - .db VX_CALL0_NEG, 45 + 310 D1:D990 1A 2D - - .db VX_CALL1_NEG, 45 + 311 D1:D992 10 2C - - .db VX_CALL0_NEG, 44 + 312 D1:D994 1A 2C - - .db VX_CALL1_NEG, 44 + 313 D1:D996 10 2B - - .db VX_CALL0_NEG, 43 + 314 D1:D998 1A 2B - - .db VX_CALL1_NEG, 43 + 315 D1:D99A 10 2A - - .db VX_CALL0_NEG, 42 + 316 D1:D99C 1A 2A - - .db VX_CALL1_NEG, 42 + 317 D1:D99E 10 29 - - .db VX_CALL0_NEG, 41 + 318 D1:D9A0 1A 29 - - .db VX_CALL1_NEG, 41 + 319 D1:D9A2 10 28 - - .db VX_CALL0_NEG, 40 + 320 D1:D9A4 1A 28 - - .db VX_CALL1_NEG, 40 + 321 D1:D9A6 10 27 - - .db VX_CALL0_NEG, 39 + 322 D1:D9A8 1A 27 - - .db VX_CALL1_NEG, 39 + 323 D1:D9AA 10 26 - - .db VX_CALL0_NEG, 38 + 324 D1:D9AC 1A 26 - - .db VX_CALL1_NEG, 38 + 325 D1:D9AE 10 25 - - .db VX_CALL0_NEG, 37 + 326 D1:D9B0 1A 25 - - .db VX_CALL1_NEG, 37 + 327 D1:D9B2 10 24 - - .db VX_CALL0_NEG, 36 + 328 D1:D9B4 1A 24 - - .db VX_CALL1_NEG, 36 + 329 D1:D9B6 10 23 - - .db VX_CALL0_NEG, 35 + 330 D1:D9B8 1A 23 - - .db VX_CALL1_NEG, 35 + 331 D1:D9BA 10 22 - - .db VX_CALL0_NEG, 34 + 332 D1:D9BC 1A 22 - - .db VX_CALL1_NEG, 34 + 333 D1:D9BE 10 21 - - .db VX_CALL0_NEG, 33 + 334 D1:D9C0 1A 21 - - .db VX_CALL1_NEG, 33 + 335 D1:D9C2 10 20 - - .db VX_CALL0_NEG, 32 + 336 D1:D9C4 1A 20 - - .db VX_CALL1_NEG, 32 + 337 D1:D9C6 10 1F - - .db VX_CALL0_NEG, 31 + 338 D1:D9C8 1A 1F - - .db VX_CALL1_NEG, 31 + 339 D1:D9CA 10 1E - - .db VX_CALL0_NEG, 30 + 340 D1:D9CC 1A 1E - - .db VX_CALL1_NEG, 30 + 341 D1:D9CE 10 1D - - .db VX_CALL0_NEG, 29 + 342 D1:D9D0 1A 1D - - .db VX_CALL1_NEG, 29 + 343 D1:D9D2 10 1C - - .db VX_CALL0_NEG, 28 + 344 D1:D9D4 1A 1C - - .db VX_CALL1_NEG, 28 + 345 D1:D9D6 10 1B - - .db VX_CALL0_NEG, 27 + 346 D1:D9D8 1A 1B - - .db VX_CALL1_NEG, 27 + 347 D1:D9DA 10 1A - - .db VX_CALL0_NEG, 26 + 348 D1:D9DC 1A 1A - - .db VX_CALL1_NEG, 26 + 349 D1:D9DE 10 19 - - .db VX_CALL0_NEG, 25 + 350 D1:D9E0 1A 19 - - .db VX_CALL1_NEG, 25 + 351 D1:D9E2 10 18 - - .db VX_CALL0_NEG, 24 + 352 D1:D9E4 1A 18 - - .db VX_CALL1_NEG, 24 + 353 D1:D9E6 10 17 - - .db VX_CALL0_NEG, 23 + 354 D1:D9E8 1A 17 - - .db VX_CALL1_NEG, 23 + 355 D1:D9EA 10 16 - - .db VX_CALL0_NEG, 22 + 356 D1:D9EC 1A 16 - - .db VX_CALL1_NEG, 22 + 357 D1:D9EE 10 15 - - .db VX_CALL0_NEG, 21 + 358 D1:D9F0 1A 15 - - .db VX_CALL1_NEG, 21 + 359 D1:D9F2 10 14 - - .db VX_CALL0_NEG, 20 + 360 D1:D9F4 1A 14 - - .db VX_CALL1_NEG, 20 + 361 D1:D9F6 10 13 - - .db VX_CALL0_NEG, 19 + 362 D1:D9F8 1A 13 - - .db VX_CALL1_NEG, 19 + 363 D1:D9FA 10 12 - - .db VX_CALL0_NEG, 18 + 364 D1:D9FC 1A 12 - - .db VX_CALL1_NEG, 18 + 365 D1:D9FE 10 11 - - .db VX_CALL0_NEG, 17 + 366 D1:DA00 1A 11 - - .db VX_CALL1_NEG, 17 + 367 D1:DA02 10 10 - - .db VX_CALL0_NEG, 16 + 368 D1:DA04 1A 10 - - .db VX_CALL1_NEG, 16 + 369 D1:DA06 10 0F - - .db VX_CALL0_NEG, 15 + 370 D1:DA08 1A 0F - - .db VX_CALL1_NEG, 15 + 371 D1:DA0A 10 0E - - .db VX_CALL0_NEG, 14 + 372 D1:DA0C 1A 0E - - .db VX_CALL1_NEG, 14 + 373 D1:DA0E 10 0D - - .db VX_CALL0_NEG, 13 + 374 D1:DA10 1A 0D - - .db VX_CALL1_NEG, 13 + 375 D1:DA12 10 0C - - .db VX_CALL0_NEG, 12 + 376 D1:DA14 1A 0C - - .db VX_CALL1_NEG, 12 + 377 D1:DA16 10 0B - - .db VX_CALL0_NEG, 11 + 378 D1:DA18 1A 0B - - .db VX_CALL1_NEG, 11 + 379 D1:DA1A 10 0A - - .db VX_CALL0_NEG, 10 + 380 D1:DA1C 1A 0A - - .db VX_CALL1_NEG, 10 + 381 D1:DA1E 10 09 - - .db VX_CALL0_NEG, 9 + 382 D1:DA20 1A 09 - - .db VX_CALL1_NEG, 9 + 383 D1:DA22 10 08 - - .db VX_CALL0_NEG, 8 + 384 D1:DA24 1A 08 - - .db VX_CALL1_NEG, 8 + 385 D1:DA26 10 07 - - .db VX_CALL0_NEG, 7 + 386 D1:DA28 1A 07 - - .db VX_CALL1_NEG, 7 + 387 D1:DA2A 10 06 - - .db VX_CALL0_NEG, 6 + 388 D1:DA2C 1A 06 - - .db VX_CALL1_NEG, 6 + 389 D1:DA2E 10 05 - - .db VX_CALL0_NEG, 5 + 390 D1:DA30 1A 05 - - .db VX_CALL1_NEG, 5 + 391 D1:DA32 10 04 - - .db VX_CALL0_NEG, 4 + 392 D1:DA34 1A 04 - - .db VX_CALL1_NEG, 4 + 393 D1:DA36 10 03 - - .db VX_CALL0_NEG, 3 + 394 D1:DA38 1A 03 - - .db VX_CALL1_NEG, 3 + 395 D1:DA3A 10 02 - - .db VX_CALL0_NEG, 2 + 396 D1:DA3C 1A 02 - - .db VX_CALL1_NEG, 2 + 397 D1:DA3E 10 01 - - .db VX_CALL0_NEG, 1 + 398 D1:DA40 1A 01 - - .db VX_CALL1_NEG, 1 + 399 D1:DA42 - - - - vxPixelShaderLengthLUT: + 400 D1:DA42 26 01 - - .db VX_CALL_NULL, 1 + 401 D1:DA44 19 01 - - .db VX_CALL1_POS, 1 + 402 D1:DA46 23 02 - - .db VX_CALL0_POS, 2 + 403 D1:DA48 19 02 - - .db VX_CALL1_POS, 2 + 404 D1:DA4A 23 03 - - .db VX_CALL0_POS, 3 + 405 D1:DA4C 19 03 - - .db VX_CALL1_POS, 3 + 406 D1:DA4E 23 04 - - .db VX_CALL0_POS, 4 + 407 D1:DA50 19 04 - - .db VX_CALL1_POS, 4 + 408 D1:DA52 23 05 - - .db VX_CALL0_POS, 5 + 409 D1:DA54 19 05 - - .db VX_CALL1_POS, 5 + 410 D1:DA56 23 06 - - .db VX_CALL0_POS, 6 + 411 D1:DA58 19 06 - - .db VX_CALL1_POS, 6 + 412 D1:DA5A 23 07 - - .db VX_CALL0_POS, 7 + 413 D1:DA5C 19 07 - - .db VX_CALL1_POS, 7 + 414 D1:DA5E 23 08 - - .db VX_CALL0_POS, 8 + 415 D1:DA60 19 08 - - .db VX_CALL1_POS, 8 + 416 D1:DA62 23 09 - - .db VX_CALL0_POS, 9 + 417 D1:DA64 19 09 - - .db VX_CALL1_POS, 9 + 418 D1:DA66 23 0A - - .db VX_CALL0_POS, 10 + 419 D1:DA68 19 0A - - .db VX_CALL1_POS, 10 + 420 D1:DA6A 23 0B - - .db VX_CALL0_POS, 11 + 421 D1:DA6C 19 0B - - .db VX_CALL1_POS, 11 + 422 D1:DA6E 23 0C - - .db VX_CALL0_POS, 12 + 423 D1:DA70 19 0C - - .db VX_CALL1_POS, 12 + 424 D1:DA72 23 0D - - .db VX_CALL0_POS, 13 + 425 D1:DA74 19 0D - - .db VX_CALL1_POS, 13 + 426 D1:DA76 23 0E - - .db VX_CALL0_POS, 14 + 427 D1:DA78 19 0E - - .db VX_CALL1_POS, 14 + 428 D1:DA7A 23 0F - - .db VX_CALL0_POS, 15 + 429 D1:DA7C 19 0F - - .db VX_CALL1_POS, 15 + 430 D1:DA7E 23 10 - - .db VX_CALL0_POS, 16 + 431 D1:DA80 19 10 - - .db VX_CALL1_POS, 16 + 432 D1:DA82 23 11 - - .db VX_CALL0_POS, 17 + 433 D1:DA84 19 11 - - .db VX_CALL1_POS, 17 + 434 D1:DA86 23 12 - - .db VX_CALL0_POS, 18 + 435 D1:DA88 19 12 - - .db VX_CALL1_POS, 18 + 436 D1:DA8A 23 13 - - .db VX_CALL0_POS, 19 + 437 D1:DA8C 19 13 - - .db VX_CALL1_POS, 19 + 438 D1:DA8E 23 14 - - .db VX_CALL0_POS, 20 + 439 D1:DA90 19 14 - - .db VX_CALL1_POS, 20 + 440 D1:DA92 23 15 - - .db VX_CALL0_POS, 21 + 441 D1:DA94 19 15 - - .db VX_CALL1_POS, 21 + 442 D1:DA96 23 16 - - .db VX_CALL0_POS, 22 + 443 D1:DA98 19 16 - - .db VX_CALL1_POS, 22 + 444 D1:DA9A 23 17 - - .db VX_CALL0_POS, 23 + 445 D1:DA9C 19 17 - - .db VX_CALL1_POS, 23 + 446 D1:DA9E 23 18 - - .db VX_CALL0_POS, 24 + 447 D1:DAA0 19 18 - - .db VX_CALL1_POS, 24 + 448 D1:DAA2 23 19 - - .db VX_CALL0_POS, 25 + 449 D1:DAA4 19 19 - - .db VX_CALL1_POS, 25 + 450 D1:DAA6 23 1A - - .db VX_CALL0_POS, 26 + 451 D1:DAA8 19 1A - - .db VX_CALL1_POS, 26 + 452 D1:DAAA 23 1B - - .db VX_CALL0_POS, 27 + 453 D1:DAAC 19 1B - - .db VX_CALL1_POS, 27 + 454 D1:DAAE 23 1C - - .db VX_CALL0_POS, 28 + 455 D1:DAB0 19 1C - - .db VX_CALL1_POS, 28 + 456 D1:DAB2 23 1D - - .db VX_CALL0_POS, 29 + 457 D1:DAB4 19 1D - - .db VX_CALL1_POS, 29 + 458 D1:DAB6 23 1E - - .db VX_CALL0_POS, 30 + 459 D1:DAB8 19 1E - - .db VX_CALL1_POS, 30 + 460 D1:DABA 23 1F - - .db VX_CALL0_POS, 31 + 461 D1:DABC 19 1F - - .db VX_CALL1_POS, 31 + 462 D1:DABE 23 20 - - .db VX_CALL0_POS, 32 + 463 D1:DAC0 19 20 - - .db VX_CALL1_POS, 32 + 464 D1:DAC2 23 21 - - .db VX_CALL0_POS, 33 + 465 D1:DAC4 19 21 - - .db VX_CALL1_POS, 33 + 466 D1:DAC6 23 22 - - .db VX_CALL0_POS, 34 + 467 D1:DAC8 19 22 - - .db VX_CALL1_POS, 34 + 468 D1:DACA 23 23 - - .db VX_CALL0_POS, 35 + 469 D1:DACC 19 23 - - .db VX_CALL1_POS, 35 + 470 D1:DACE 23 24 - - .db VX_CALL0_POS, 36 + 471 D1:DAD0 19 24 - - .db VX_CALL1_POS, 36 + 472 D1:DAD2 23 25 - - .db VX_CALL0_POS, 37 + 473 D1:DAD4 19 25 - - .db VX_CALL1_POS, 37 + 474 D1:DAD6 23 26 - - .db VX_CALL0_POS, 38 + 475 D1:DAD8 19 26 - - .db VX_CALL1_POS, 38 + 476 D1:DADA 23 27 - - .db VX_CALL0_POS, 39 + 477 D1:DADC 19 27 - - .db VX_CALL1_POS, 39 + 478 D1:DADE 23 28 - - .db VX_CALL0_POS, 40 + 479 D1:DAE0 19 28 - - .db VX_CALL1_POS, 40 + 480 D1:DAE2 23 29 - - .db VX_CALL0_POS, 41 + 481 D1:DAE4 19 29 - - .db VX_CALL1_POS, 41 + 482 D1:DAE6 23 2A - - .db VX_CALL0_POS, 42 + 483 D1:DAE8 19 2A - - .db VX_CALL1_POS, 42 + 484 D1:DAEA 23 2B - - .db VX_CALL0_POS, 43 + 485 D1:DAEC 19 2B - - .db VX_CALL1_POS, 43 + 486 D1:DAEE 23 2C - - .db VX_CALL0_POS, 44 + 487 D1:DAF0 19 2C - - .db VX_CALL1_POS, 44 + 488 D1:DAF2 23 2D - - .db VX_CALL0_POS, 45 + 489 D1:DAF4 19 2D - - .db VX_CALL1_POS, 45 + 490 D1:DAF6 23 2E - - .db VX_CALL0_POS, 46 + 491 D1:DAF8 19 2E - - .db VX_CALL1_POS, 46 + 492 D1:DAFA 23 2F - - .db VX_CALL0_POS, 47 + 493 D1:DAFC 19 2F - - .db VX_CALL1_POS, 47 + 494 D1:DAFE 23 30 - - .db VX_CALL0_POS, 48 + 495 D1:DB00 19 30 - - .db VX_CALL1_POS, 48 + 496 D1:DB02 23 31 - - .db VX_CALL0_POS, 49 + 497 D1:DB04 19 31 - - .db VX_CALL1_POS, 49 + 498 D1:DB06 23 32 - - .db VX_CALL0_POS, 50 + 499 D1:DB08 19 32 - - .db VX_CALL1_POS, 50 + 500 D1:DB0A 23 33 - - .db VX_CALL0_POS, 51 + 501 D1:DB0C 19 33 - - .db VX_CALL1_POS, 51 + 502 D1:DB0E 23 34 - - .db VX_CALL0_POS, 52 + 503 D1:DB10 19 34 - - .db VX_CALL1_POS, 52 + 504 D1:DB12 23 35 - - .db VX_CALL0_POS, 53 + 505 D1:DB14 19 35 - - .db VX_CALL1_POS, 53 + 506 D1:DB16 23 36 - - .db VX_CALL0_POS, 54 + 507 D1:DB18 19 36 - - .db VX_CALL1_POS, 54 + 508 D1:DB1A 23 37 - - .db VX_CALL0_POS, 55 + 509 D1:DB1C 19 37 - - .db VX_CALL1_POS, 55 + 510 D1:DB1E 23 38 - - .db VX_CALL0_POS, 56 + 511 D1:DB20 19 38 - - .db VX_CALL1_POS, 56 + 512 D1:DB22 23 39 - - .db VX_CALL0_POS, 57 + 513 D1:DB24 19 39 - - .db VX_CALL1_POS, 57 + 514 D1:DB26 23 3A - - .db VX_CALL0_POS, 58 + 515 D1:DB28 19 3A - - .db VX_CALL1_POS, 58 + 516 D1:DB2A 23 3B - - .db VX_CALL0_POS, 59 + 517 D1:DB2C 19 3B - - .db VX_CALL1_POS, 59 + 518 D1:DB2E 23 3C - - .db VX_CALL0_POS, 60 + 519 D1:DB30 19 3C - - .db VX_CALL1_POS, 60 + 520 D1:DB32 23 3D - - .db VX_CALL0_POS, 61 + 521 D1:DB34 19 3D - - .db VX_CALL1_POS, 61 + 522 D1:DB36 23 3E - - .db VX_CALL0_POS, 62 + 523 D1:DB38 19 3E - - .db VX_CALL1_POS, 62 + 524 D1:DB3A 23 3F - - .db VX_CALL0_POS, 63 + 525 D1:DB3C 19 3F - - .db VX_CALL1_POS, 63 + 526 D1:DB3E 23 40 - - .db VX_CALL0_POS, 64 + 527 D1:DB40 19 40 - - .db VX_CALL1_POS, 64 + 528 D1:DB42 23 41 - - .db VX_CALL0_POS, 65 + 529 D1:DB44 19 41 - - .db VX_CALL1_POS, 65 + 530 D1:DB46 23 42 - - .db VX_CALL0_POS, 66 + 531 D1:DB48 19 42 - - .db VX_CALL1_POS, 66 + 532 D1:DB4A 23 43 - - .db VX_CALL0_POS, 67 + 533 D1:DB4C 19 43 - - .db VX_CALL1_POS, 67 + 534 D1:DB4E 23 44 - - .db VX_CALL0_POS, 68 + 535 D1:DB50 19 44 - - .db VX_CALL1_POS, 68 + 536 D1:DB52 23 45 - - .db VX_CALL0_POS, 69 + 537 D1:DB54 19 45 - - .db VX_CALL1_POS, 69 + 538 D1:DB56 23 46 - - .db VX_CALL0_POS, 70 + 539 D1:DB58 19 46 - - .db VX_CALL1_POS, 70 + 540 D1:DB5A 23 47 - - .db VX_CALL0_POS, 71 + 541 D1:DB5C 19 47 - - .db VX_CALL1_POS, 71 + 542 D1:DB5E 23 48 - - .db VX_CALL0_POS, 72 + 543 D1:DB60 19 48 - - .db VX_CALL1_POS, 72 + 544 D1:DB62 23 49 - - .db VX_CALL0_POS, 73 + 545 D1:DB64 19 49 - - .db VX_CALL1_POS, 73 + 546 D1:DB66 23 4A - - .db VX_CALL0_POS, 74 + 547 D1:DB68 19 4A - - .db VX_CALL1_POS, 74 + 548 D1:DB6A 23 4B - - .db VX_CALL0_POS, 75 + 549 D1:DB6C 19 4B - - .db VX_CALL1_POS, 75 + 550 D1:DB6E 23 4C - - .db VX_CALL0_POS, 76 + 551 D1:DB70 19 4C - - .db VX_CALL1_POS, 76 + 552 D1:DB72 23 4D - - .db VX_CALL0_POS, 77 + 553 D1:DB74 19 4D - - .db VX_CALL1_POS, 77 + 554 D1:DB76 23 4E - - .db VX_CALL0_POS, 78 + 555 D1:DB78 19 4E - - .db VX_CALL1_POS, 78 + 556 D1:DB7A 23 4F - - .db VX_CALL0_POS, 79 + 557 D1:DB7C 19 4F - - .db VX_CALL1_POS, 79 + 558 D1:DB7E 23 50 - - .db VX_CALL0_POS, 80 + 559 D1:DB80 19 50 - - .db VX_CALL1_POS, 80 + 560 D1:DB82 23 51 - - .db VX_CALL0_POS, 81 + 561 D1:DB84 19 51 - - .db VX_CALL1_POS, 81 + 562 D1:DB86 23 52 - - .db VX_CALL0_POS, 82 + 563 D1:DB88 19 52 - - .db VX_CALL1_POS, 82 + 564 D1:DB8A 23 53 - - .db VX_CALL0_POS, 83 + 565 D1:DB8C 19 53 - - .db VX_CALL1_POS, 83 + 566 D1:DB8E 23 54 - - .db VX_CALL0_POS, 84 + 567 D1:DB90 19 54 - - .db VX_CALL1_POS, 84 + 568 D1:DB92 23 55 - - .db VX_CALL0_POS, 85 + 569 D1:DB94 19 55 - - .db VX_CALL1_POS, 85 + 570 D1:DB96 23 56 - - .db VX_CALL0_POS, 86 + 571 D1:DB98 19 56 - - .db VX_CALL1_POS, 86 + 572 D1:DB9A 23 57 - - .db VX_CALL0_POS, 87 + 573 D1:DB9C 19 57 - - .db VX_CALL1_POS, 87 + 574 D1:DB9E 23 58 - - .db VX_CALL0_POS, 88 + 575 D1:DBA0 19 58 - - .db VX_CALL1_POS, 88 + 576 D1:DBA2 23 59 - - .db VX_CALL0_POS, 89 + 577 D1:DBA4 19 59 - - .db VX_CALL1_POS, 89 + 578 D1:DBA6 23 5A - - .db VX_CALL0_POS, 90 + 579 D1:DBA8 19 5A - - .db VX_CALL1_POS, 90 + 580 D1:DBAA 23 5B - - .db VX_CALL0_POS, 91 + 581 D1:DBAC 19 5B - - .db VX_CALL1_POS, 91 + 582 D1:DBAE 23 5C - - .db VX_CALL0_POS, 92 + 583 D1:DBB0 19 5C - - .db VX_CALL1_POS, 92 + 584 D1:DBB2 23 5D - - .db VX_CALL0_POS, 93 + 585 D1:DBB4 19 5D - - .db VX_CALL1_POS, 93 + 586 D1:DBB6 23 5E - - .db VX_CALL0_POS, 94 + 587 D1:DBB8 19 5E - - .db VX_CALL1_POS, 94 + 588 D1:DBBA 23 5F - - .db VX_CALL0_POS, 95 + 589 D1:DBBC 19 5F - - .db VX_CALL1_POS, 95 + 590 D1:DBBE 23 60 - - .db VX_CALL0_POS, 96 + 591 D1:DBC0 19 60 - - .db VX_CALL1_POS, 96 + 592 D1:DBC2 23 61 - - .db VX_CALL0_POS, 97 + 593 D1:DBC4 19 61 - - .db VX_CALL1_POS, 97 + 594 D1:DBC6 23 62 - - .db VX_CALL0_POS, 98 + 595 D1:DBC8 19 62 - - .db VX_CALL1_POS, 98 + 596 D1:DBCA 23 63 - - .db VX_CALL0_POS, 99 + 597 D1:DBCC 19 63 - - .db VX_CALL1_POS, 99 + 598 D1:DBCE 23 64 - - .db VX_CALL0_POS, 100 + 599 D1:DBD0 19 64 - - .db VX_CALL1_POS, 100 + 600 D1:DBD2 23 65 - - .db VX_CALL0_POS, 101 + 601 D1:DBD4 19 65 - - .db VX_CALL1_POS, 101 + 602 D1:DBD6 23 66 - - .db VX_CALL0_POS, 102 + 603 D1:DBD8 19 66 - - .db VX_CALL1_POS, 102 + 604 D1:DBDA 23 67 - - .db VX_CALL0_POS, 103 + 605 D1:DBDC 19 67 - - .db VX_CALL1_POS, 103 + 606 D1:DBDE 23 68 - - .db VX_CALL0_POS, 104 + 607 D1:DBE0 19 68 - - .db VX_CALL1_POS, 104 + 608 D1:DBE2 23 69 - - .db VX_CALL0_POS, 105 + 609 D1:DBE4 19 69 - - .db VX_CALL1_POS, 105 + 610 D1:DBE6 23 6A - - .db VX_CALL0_POS, 106 + 611 D1:DBE8 19 6A - - .db VX_CALL1_POS, 106 + 612 D1:DBEA 23 6B - - .db VX_CALL0_POS, 107 + 613 D1:DBEC 19 6B - - .db VX_CALL1_POS, 107 + 614 D1:DBEE 23 6C - - .db VX_CALL0_POS, 108 + 615 D1:DBF0 19 6C - - .db VX_CALL1_POS, 108 + 616 D1:DBF2 23 6D - - .db VX_CALL0_POS, 109 + 617 D1:DBF4 19 6D - - .db VX_CALL1_POS, 109 + 618 D1:DBF6 23 6E - - .db VX_CALL0_POS, 110 + 619 D1:DBF8 19 6E - - .db VX_CALL1_POS, 110 + 620 D1:DBFA 23 6F - - .db VX_CALL0_POS, 111 + 621 D1:DBFC 19 6F - - .db VX_CALL1_POS, 111 + 622 D1:DBFE 23 70 - - .db VX_CALL0_POS, 112 + 623 D1:DC00 19 70 - - .db VX_CALL1_POS, 112 + 624 D1:DC02 23 71 - - .db VX_CALL0_POS, 113 + 625 D1:DC04 19 71 - - .db VX_CALL1_POS, 113 + 626 D1:DC06 23 72 - - .db VX_CALL0_POS, 114 + 627 D1:DC08 19 72 - - .db VX_CALL1_POS, 114 + 628 D1:DC0A 23 73 - - .db VX_CALL0_POS, 115 + 629 D1:DC0C 19 73 - - .db VX_CALL1_POS, 115 + 630 D1:DC0E 23 74 - - .db VX_CALL0_POS, 116 + 631 D1:DC10 19 74 - - .db VX_CALL1_POS, 116 + 632 D1:DC12 23 75 - - .db VX_CALL0_POS, 117 + 633 D1:DC14 19 75 - - .db VX_CALL1_POS, 117 + 634 D1:DC16 23 76 - - .db VX_CALL0_POS, 118 + 635 D1:DC18 19 76 - - .db VX_CALL1_POS, 118 + 636 D1:DC1A 23 77 - - .db VX_CALL0_POS, 119 + 637 D1:DC1C 19 77 - - .db VX_CALL1_POS, 119 + 638 D1:DC1E 23 78 - - .db VX_CALL0_POS, 120 + 639 D1:DC20 19 78 - - .db VX_CALL1_POS, 120 + 640 D1:DC22 23 79 - - .db VX_CALL0_POS, 121 + 641 D1:DC24 19 79 - - .db VX_CALL1_POS, 121 + 642 D1:DC26 23 7A - - .db VX_CALL0_POS, 122 + 643 D1:DC28 19 7A - - .db VX_CALL1_POS, 122 + 644 D1:DC2A 23 7B - - .db VX_CALL0_POS, 123 + 645 D1:DC2C 19 7B - - .db VX_CALL1_POS, 123 + 646 D1:DC2E 23 7C - - .db VX_CALL0_POS, 124 + 647 D1:DC30 19 7C - - .db VX_CALL1_POS, 124 + 648 D1:DC32 23 7D - - .db VX_CALL0_POS, 125 + 649 D1:DC34 19 7D - - .db VX_CALL1_POS, 125 + 650 D1:DC36 23 7E - - .db VX_CALL0_POS, 126 + 651 D1:DC38 19 7E - - .db VX_CALL1_POS, 126 + 652 D1:DC3A 23 7F - - .db VX_CALL0_POS, 127 + 653 D1:DC3C 19 7F - - .db VX_CALL1_POS, 127 + 654 D1:DC3E 23 80 - - .db VX_CALL0_POS, 128 + 655 D1:DC40 19 80 - - .db VX_CALL1_POS, 128 + 656 D1:DC42 23 81 - - .db VX_CALL0_POS, 129 + 657 D1:DC44 19 81 - - .db VX_CALL1_POS, 129 + 658 D1:DC46 23 82 - - .db VX_CALL0_POS, 130 + 659 D1:DC48 19 82 - - .db VX_CALL1_POS, 130 + 660 D1:DC4A 23 83 - - .db VX_CALL0_POS, 131 + 661 D1:DC4C 19 83 - - .db VX_CALL1_POS, 131 + 662 D1:DC4E 23 84 - - .db VX_CALL0_POS, 132 + 663 D1:DC50 19 84 - - .db VX_CALL1_POS, 132 + 664 D1:DC52 23 85 - - .db VX_CALL0_POS, 133 + 665 D1:DC54 19 85 - - .db VX_CALL1_POS, 133 + 666 D1:DC56 23 86 - - .db VX_CALL0_POS, 134 + 667 D1:DC58 19 86 - - .db VX_CALL1_POS, 134 + 668 D1:DC5A 23 87 - - .db VX_CALL0_POS, 135 + 669 D1:DC5C 19 87 - - .db VX_CALL1_POS, 135 + 670 D1:DC5E 23 88 - - .db VX_CALL0_POS, 136 + 671 D1:DC60 19 88 - - .db VX_CALL1_POS, 136 + 672 D1:DC62 23 89 - - .db VX_CALL0_POS, 137 + 673 D1:DC64 19 89 - - .db VX_CALL1_POS, 137 + 674 D1:DC66 23 8A - - .db VX_CALL0_POS, 138 + 675 D1:DC68 19 8A - - .db VX_CALL1_POS, 138 + 676 D1:DC6A 23 8B - - .db VX_CALL0_POS, 139 + 677 D1:DC6C 19 8B - - .db VX_CALL1_POS, 139 + 678 D1:DC6E 23 8C - - .db VX_CALL0_POS, 140 + 679 D1:DC70 19 8C - - .db VX_CALL1_POS, 140 + 680 D1:DC72 23 8D - - .db VX_CALL0_POS, 141 + 681 D1:DC74 19 8D - - .db VX_CALL1_POS, 141 + 682 D1:DC76 23 8E - - .db VX_CALL0_POS, 142 + 683 D1:DC78 19 8E - - .db VX_CALL1_POS, 142 + 684 D1:DC7A 23 8F - - .db VX_CALL0_POS, 143 + 685 D1:DC7C 19 8F - - .db VX_CALL1_POS, 143 + 686 D1:DC7E 23 90 - - .db VX_CALL0_POS, 144 + 687 D1:DC80 19 90 - - .db VX_CALL1_POS, 144 + 688 D1:DC82 23 91 - - .db VX_CALL0_POS, 145 + 689 D1:DC84 19 91 - - .db VX_CALL1_POS, 145 + 690 D1:DC86 23 92 - - .db VX_CALL0_POS, 146 + 691 D1:DC88 19 92 - - .db VX_CALL1_POS, 146 + 692 D1:DC8A 23 93 - - .db VX_CALL0_POS, 147 + 693 D1:DC8C 19 93 - - .db VX_CALL1_POS, 147 + 694 D1:DC8E 23 94 - - .db VX_CALL0_POS, 148 + 695 D1:DC90 19 94 - - .db VX_CALL1_POS, 148 + 696 D1:DC92 23 95 - - .db VX_CALL0_POS, 149 + 697 D1:DC94 19 95 - - .db VX_CALL1_POS, 149 + 698 D1:DC96 23 96 - - .db VX_CALL0_POS, 150 + 699 D1:DC98 19 96 - - .db VX_CALL1_POS, 150 + 700 D1:DC9A 23 97 - - .db VX_CALL0_POS, 151 + 701 D1:DC9C 19 97 - - .db VX_CALL1_POS, 151 + 702 D1:DC9E 23 98 - - .db VX_CALL0_POS, 152 + 703 D1:DCA0 19 98 - - .db VX_CALL1_POS, 152 + 704 D1:DCA2 23 99 - - .db VX_CALL0_POS, 153 + 705 D1:DCA4 19 99 - - .db VX_CALL1_POS, 153 + 706 D1:DCA6 23 9A - - .db VX_CALL0_POS, 154 + 707 D1:DCA8 19 9A - - .db VX_CALL1_POS, 154 + 708 D1:DCAA 23 9B - - .db VX_CALL0_POS, 155 + 709 D1:DCAC 19 9B - - .db VX_CALL1_POS, 155 + 710 D1:DCAE 23 9C - - .db VX_CALL0_POS, 156 + 711 D1:DCB0 19 9C - - .db VX_CALL1_POS, 156 + 712 D1:DCB2 23 9D - - .db VX_CALL0_POS, 157 + 713 D1:DCB4 19 9D - - .db VX_CALL1_POS, 157 + 714 D1:DCB6 23 9E - - .db VX_CALL0_POS, 158 + 715 D1:DCB8 19 9E - - .db VX_CALL1_POS, 158 + 716 D1:DCBA 23 9F - - .db VX_CALL0_POS, 159 + 717 D1:DCBC 19 9F - - .db VX_CALL1_POS, 159 + 718 D1:DCBE 23 A0 - - .db VX_CALL0_POS, 160 + 719 D1:DCC0 19 A0 - - .db VX_CALL1_POS, 160 + 720 D1:DCC2 - - - - vxPixelShaderExitLUT: + 721 D1:DCC2 4C 00 - - .db VX_CALL_EXIT, 0 + 722 D1:DCC4 - - - - #comment + 723 D1:DCC4 + 724 D1:DCC4 lut table : + 725 D1:DCC4 ; aligned to 2 boundary + 726 D1:DCC4 ; call is within vxPixelShader and vxPixelShader+VX_PIXEL_SHADER_SUBSIZE + 727 D1:DCC4 ; for length = 0 jump to vxPixelShader+VX_PIXEL_SHADER_SUBSIZE*2+2 + 728 D1:DCC4 ; for length < 0 jump to vxPixelShader+VX_PIXEL_SHADER_SUBSIZE-1 and VX_PIXEL_SHADER_SUBSIZE*2+vxPixelShader-1 + 729 D1:DCC4 + 730 D1:DCC4 + 731 D1:DCC4 + 732 D1:DCC4 define ld (de+) ld (de),a \ inc de + 733 D1:DCC4 #define or (de+) ex de,hl \ or (hl) \ ex de,hl \ inc de + 734 D1:DCC4 #define and (de+) ex de,hl \ and (hl) \ ex de,hl \ inc de + 735 D1:DCC4 #define xor (de+) ex de,hl \ xor (hl) \ ex de,hl \ inc de + 736 D1:DCC4 + 737 D1:DCC4 ; lightning : 11 bytes, 32 cycles/pixel + 738 D1:DCC4 ld a, h ; get v to pass to next part + 739 D1:DCC4 add hl, sp ; v=v+dv (du on high) + 740 D1:DCC4 exx ; swap + 741 D1:DCC4 ld h, a ; paste v on high byte + 742 D1:DCC4 ld c, (hl) ; fetch texture, and get index to color table in same time + 743 D1:DCC4 adc hl, de ; u=u+du (on low) + 744 D1:DCC4 ld a, (bc) ; fetch lighted color + 745 D1:DCC4 exx ; swap + 746 D1:DCC4 ldpx ; write pixel and next + 747 D1:DCC4 + 748 D1:DCC4 + 749 D1:DCC4 vxRegister0Interpolation: + 750 D1:DCC4 ; bc = y-size, ix = adress + 751 D1:DCC4 ; de= error , iy = position + 752 D1:DCC4 ; sp= 320, sps = stack + 753 D1:DCC4 ld a, c + 754 D1:DCC4 ; compute error + 755 D1:DCC4 scf + 756 D1:DCC4 sbc hl, hl + 757 D1:DCC4 ld l, a + 758 D1:DCC4 sbc hl, de + 759 D1:DCC4 sra h + 760 D1:DCC4 rr l + 761 D1:DCC4 neg + 762 D1:DCC4 vxRegister0Loop: + 763 D1:DCC4 add hl, de + 764 D1:DCC4 jr nc, vxRegister0Next + 765 D1:DCC4 vxRegister0Restore: + 766 D1:DCC4 .db $DD + 767 D1:DCC4 vxRegister0Increment=$ + 768 D1:DCC4 nop + 769 D1:DCC4 add hl, bc + 770 D1:DCC4 jr c, vxRegister0Restore + 771 D1:DCC4 vxRegister0Next: + 772 D1:DCC4 ld (iy+VX_REGISTER0), ix ; this is framebuffer adress + 773 D1:DCC4 add ix, sp + 774 D1:DCC4 lea iy, iy+12 + 775 D1:DCC4 dec a + 776 D1:DCC4 jr nz, vxRegister0Loop + 777 D1:DCC4 ; magic end bytes + 778 D1:DCC4 ld bc, vxPixelShaderExitLUT/2+1 + 779 D1:DCC4 ld (iy+VX_REGISTER1), bc + 780 D1:DCC4 ld bc, -1 + 781 D1:DCC4 ld (iy+VX_REGISTER0), bc + 782 D1:DCC4 + 783 D1:DCC4 ;; lutadress = (-fb_reg1+LUTbase/2+fb_reg0)*2 = (fb_reg0-fb_reg1)*2+LUTbase + 784 D1:DCC4 + 785 D1:DCC4 ; do calculation for longest-smallest + 786 D1:DCC4 ; if length > 0, longest is at right, so draw right to left + 787 D1:DCC4 + 788 D1:DCC4 + 789 D1:DCC4 #endcomment Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolation.ez80" - 596 D1:DCA8 - - - - - 597 D1:DCA8 - - - - - 598 D1:DCA8 - - - - vxTexturePolygon: - 599 D1:DCA8 D6 02 - - sub a, 2 - 600 D1:DCAA 47 - - - ld b, a - 601 D1:DCAB FD 27 00 - ld hl, (iy+0) - 602 D1:DCAE - - - - vxTextureCyclicLoop: - 603 D1:DCAE C5 - - - push bc - 604 D1:DCAF FD 07 03 - ld bc, (iy+3) - 605 D1:DCB2 FD 17 06 - ld de, (iy+6) - 606 D1:DCB5 E5 - - - push hl - 607 D1:DCB6 FD E5 - - push iy - 608 D1:DCB8 E5 - - - push hl - 609 D1:DCB9 C5 - - - push bc - 610 D1:DCBA D5 - - - push de - 611 D1:DCBB CD 55 BD D1 call vxNClip - 612 D1:DCBF D1 - - - pop de - 613 D1:DCC0 C1 - - - pop bc - 614 D1:DCC1 E1 - - - pop hl - 615 D1:DCC2 D4 0D 08 E3 call nc,vxTextureTriangleNoClip - 616 D1:DCC6 FD E1 - - pop iy - 617 D1:DCC8 ED 33 03 - lea iy, iy+3 - 618 D1:DCCB E1 - - - pop hl - 619 D1:DCCC C1 - - - pop bc - 620 D1:DCCD 05 - - - dec b - 621 D1:DCCE C2 AE DC D1 jp nz, vxTextureCyclicLoop - 622 D1:DCD2 C9 - - - ret - 623 D1:DCD3 - - - - - 624 D1:DCD3 - - - - VX_INVERSE_TABLE: - 625 D1:DCD3 FE FF - - .dw 65534 ; position 0, so nothing in fact (div by 0) - 626 D1:DCD5 FE FF - - .dw 65534 ; corrected - 627 D1:DCD7 FF 7F - - .dw 32767 - 628 D1:DCD9 54 55 - - .dw 21844 - 629 D1:DCDB FF 3F - - .dw 16383 - 630 D1:DCDD 32 33 - - .dw 13106 - 631 D1:DCDF A9 2A - - .dw 10921 - 632 D1:DCE1 91 24 - - .dw 9361 - 633 D1:DCE3 FF 1F - - .dw 8191 - 634 D1:DCE5 70 1C - - .dw 7280 - 635 D1:DCE7 98 19 - - .dw 6552 - 636 D1:DCE9 44 17 - - .dw 5956 - 637 D1:DCEB 54 15 - - .dw 5460 - 638 D1:DCED B0 13 - - .dw 5040 - 639 D1:DCEF 48 12 - - .dw 4680 - 640 D1:DCF1 10 11 - - .dw 4368 - 641 D1:DCF3 FF 0F - - .dw 4095 - 642 D1:DCF5 0E 0F - - .dw 3854 - 643 D1:DCF7 37 0E - - .dw 3639 - 644 D1:DCF9 78 0D - - .dw 3448 - 645 D1:DCFB CB 0C - - .dw 3275 - 646 D1:DCFD 2F 0C - - .dw 3119 - 647 D1:DCFF A1 0B - - .dw 2977 - 648 D1:DD01 20 0B - - .dw 2848 - 649 D1:DD03 A9 0A - - .dw 2729 - 650 D1:DD05 3C 0A - - .dw 2620 - 651 D1:DD07 D7 09 - - .dw 2519 - 652 D1:DD09 7A 09 - - .dw 2426 - 653 D1:DD0B 23 09 - - .dw 2339 - 654 D1:DD0D D2 08 - - .dw 2258 - 655 D1:DD0F 87 08 - - .dw 2183 - 656 D1:DD11 41 08 - - .dw 2113 - 657 D1:DD13 FF 07 - - .dw 2047 - 658 D1:DD15 C0 07 - - .dw 1984 - 659 D1:DD17 86 07 - - .dw 1926 - 660 D1:DD19 4F 07 - - .dw 1871 - 661 D1:DD1B 1B 07 - - .dw 1819 - 662 D1:DD1D EA 06 - - .dw 1770 - 663 D1:DD1F BB 06 - - .dw 1723 - 664 D1:DD21 8F 06 - - .dw 1679 - 665 D1:DD23 65 06 - - .dw 1637 - 666 D1:DD25 3D 06 - - .dw 1597 - 667 D1:DD27 17 06 - - .dw 1559 - 668 D1:DD29 F3 05 - - .dw 1523 - 669 D1:DD2B D0 05 - - .dw 1488 - 670 D1:DD2D AF 05 - - .dw 1455 - 671 D1:DD2F 8F 05 - - .dw 1423 - 672 D1:DD31 71 05 - - .dw 1393 - 673 D1:DD33 54 05 - - .dw 1364 - 674 D1:DD35 38 05 - - .dw 1336 - 675 D1:DD37 1D 05 - - .dw 1309 - 676 D1:DD39 04 05 - - .dw 1284 - 677 D1:DD3B EB 04 - - .dw 1259 - 678 D1:DD3D D3 04 - - .dw 1235 - 679 D1:DD3F BC 04 - - .dw 1212 - 680 D1:DD41 A6 04 - - .dw 1190 - 681 D1:DD43 91 04 - - .dw 1169 - 682 D1:DD45 7C 04 - - .dw 1148 - 683 D1:DD47 68 04 - - .dw 1128 - 684 D1:DD49 55 04 - - .dw 1109 - 685 D1:DD4B 43 04 - - .dw 1091 - 686 D1:DD4D 31 04 - - .dw 1073 - 687 D1:DD4F 20 04 - - .dw 1056 - 688 D1:DD51 0F 04 - - .dw 1039 - 689 D1:DD53 FF 03 - - .dw 1023 - 690 D1:DD55 EF 03 - - .dw 1007 - 691 D1:DD57 DF 03 - - .dw 991 - 692 D1:DD59 D1 03 - - .dw 977 - 693 D1:DD5B C2 03 - - .dw 962 - 694 D1:DD5D B4 03 - - .dw 948 - 695 D1:DD5F A7 03 - - .dw 935 - 696 D1:DD61 9A 03 - - .dw 922 - 697 D1:DD63 8D 03 - - .dw 909 - 698 D1:DD65 80 03 - - .dw 896 - 699 D1:DD67 74 03 - - .dw 884 - 700 D1:DD69 68 03 - - .dw 872 - 701 D1:DD6B 5D 03 - - .dw 861 - 702 D1:DD6D 52 03 - - .dw 850 - 703 D1:DD6F 47 03 - - .dw 839 - 704 D1:DD71 3C 03 - - .dw 828 - 705 D1:DD73 32 03 - - .dw 818 - 706 D1:DD75 28 03 - - .dw 808 - 707 D1:DD77 1E 03 - - .dw 798 - 708 D1:DD79 14 03 - - .dw 788 - 709 D1:DD7B 0B 03 - - .dw 779 - 710 D1:DD7D 02 03 - - .dw 770 - 711 D1:DD7F F9 02 - - .dw 761 - 712 D1:DD81 F0 02 - - .dw 752 - 713 D1:DD83 E7 02 - - .dw 743 - 714 D1:DD85 DF 02 - - .dw 735 - 715 D1:DD87 D7 02 - - .dw 727 - 716 D1:DD89 CF 02 - - .dw 719 - 717 D1:DD8B C7 02 - - .dw 711 - 718 D1:DD8D BF 02 - - .dw 703 - 719 D1:DD8F B8 02 - - .dw 696 - 720 D1:DD91 B0 02 - - .dw 688 - 721 D1:DD93 A9 02 - - .dw 681 - 722 D1:DD95 A2 02 - - .dw 674 - 723 D1:DD97 9B 02 - - .dw 667 - 724 D1:DD99 94 02 - - .dw 660 - 725 D1:DD9B 8E 02 - - .dw 654 - 726 D1:DD9D 87 02 - - .dw 647 - 727 D1:DD9F 81 02 - - .dw 641 - 728 D1:DDA1 7B 02 - - .dw 635 - 729 D1:DDA3 75 02 - - .dw 629 - 730 D1:DDA5 6F 02 - - .dw 623 - 731 D1:DDA7 69 02 - - .dw 617 - 732 D1:DDA9 63 02 - - .dw 611 - 733 D1:DDAB 5D 02 - - .dw 605 - 734 D1:DDAD 58 02 - - .dw 600 - 735 D1:DDAF 52 02 - - .dw 594 - 736 D1:DDB1 4D 02 - - .dw 589 - 737 D1:DDB3 48 02 - - .dw 584 - 738 D1:DDB5 42 02 - - .dw 578 - 739 D1:DDB7 3D 02 - - .dw 573 - 740 D1:DDB9 38 02 - - .dw 568 - 741 D1:DDBB 33 02 - - .dw 563 - 742 D1:DDBD 2F 02 - - .dw 559 - 743 D1:DDBF 2A 02 - - .dw 554 - 744 D1:DDC1 25 02 - - .dw 549 - 745 D1:DDC3 21 02 - - .dw 545 - 746 D1:DDC5 1C 02 - - .dw 540 - 747 D1:DDC7 18 02 - - .dw 536 - 748 D1:DDC9 13 02 - - .dw 531 - 749 D1:DDCB 0F 02 - - .dw 527 - 750 D1:DDCD 0B 02 - - .dw 523 - 751 D1:DDCF 07 02 - - .dw 519 - 752 D1:DDD1 03 02 - - .dw 515 - 753 D1:DDD3 FF 01 - - .dw 511 - 754 D1:DDD5 FB 01 - - .dw 507 - 755 D1:DDD7 F7 01 - - .dw 503 - 756 D1:DDD9 F3 01 - - .dw 499 - 757 D1:DDDB EF 01 - - .dw 495 - 758 D1:DDDD EB 01 - - .dw 491 - 759 D1:DDDF E8 01 - - .dw 488 - 760 D1:DDE1 E4 01 - - .dw 484 - 761 D1:DDE3 E0 01 - - .dw 480 - 762 D1:DDE5 DD 01 - - .dw 477 - 763 D1:DDE7 D9 01 - - .dw 473 - 764 D1:DDE9 D6 01 - - .dw 470 - 765 D1:DDEB D3 01 - - .dw 467 - 766 D1:DDED CF 01 - - .dw 463 - 767 D1:DDEF CC 01 - - .dw 460 - 768 D1:DDF1 C9 01 - - .dw 457 - 769 D1:DDF3 C6 01 - - .dw 454 - 770 D1:DDF5 C2 01 - - .dw 450 - 771 D1:DDF7 BF 01 - - .dw 447 - 772 D1:DDF9 BC 01 - - .dw 444 - 773 D1:DDFB B9 01 - - .dw 441 - 774 D1:DDFD B6 01 - - .dw 438 - 775 D1:DDFF B3 01 - - .dw 435 - 776 D1:DE01 B1 01 - - .dw 433 - 777 D1:DE03 AE 01 - - .dw 430 - 778 D1:DE05 AB 01 - - .dw 427 - 779 D1:DE07 A8 01 - - .dw 424 - 780 D1:DE09 A5 01 - - .dw 421 - 781 D1:DE0B A3 01 - - .dw 419 - 782 D1:DE0D A0 01 - - .dw 416 - 783 D1:DE0F 9D 01 - - .dw 413 - 784 D1:DE11 9B 01 - - .dw 411 - 785 D1:DE13 98 01 - - .dw 408 - 786 D1:DE15 96 01 - - .dw 406 - 787 D1:DE17 93 01 - - .dw 403 - 788 D1:DE19 91 01 - - .dw 401 - 789 D1:DE1B 8E 01 - - .dw 398 - 790 D1:DE1D 8C 01 - - .dw 396 - 791 D1:DE1F 89 01 - - .dw 393 - 792 D1:DE21 87 01 - - .dw 391 - 793 D1:DE23 85 01 - - .dw 389 - 794 D1:DE25 82 01 - - .dw 386 - 795 D1:DE27 80 01 - - .dw 384 - 796 D1:DE29 7E 01 - - .dw 382 - 797 D1:DE2B 7C 01 - - .dw 380 - 798 D1:DE2D 79 01 - - .dw 377 - 799 D1:DE2F 77 01 - - .dw 375 - 800 D1:DE31 75 01 - - .dw 373 - 801 D1:DE33 73 01 - - .dw 371 - 802 D1:DE35 71 01 - - .dw 369 - 803 D1:DE37 6F 01 - - .dw 367 - 804 D1:DE39 6D 01 - - .dw 365 - 805 D1:DE3B 6B 01 - - .dw 363 - 806 D1:DE3D 69 01 - - .dw 361 - 807 D1:DE3F 67 01 - - .dw 359 - 808 D1:DE41 65 01 - - .dw 357 - 809 D1:DE43 63 01 - - .dw 355 - 810 D1:DE45 61 01 - - .dw 353 - 811 D1:DE47 5F 01 - - .dw 351 - 812 D1:DE49 5D 01 - - .dw 349 - 813 D1:DE4B 5B 01 - - .dw 347 - 814 D1:DE4D 59 01 - - .dw 345 - 815 D1:DE4F 57 01 - - .dw 343 - 816 D1:DE51 56 01 - - .dw 342 - 817 D1:DE53 54 01 - - .dw 340 - 818 D1:DE55 52 01 - - .dw 338 - 819 D1:DE57 50 01 - - .dw 336 - 820 D1:DE59 4F 01 - - .dw 335 - 821 D1:DE5B 4D 01 - - .dw 333 - 822 D1:DE5D 4B 01 - - .dw 331 - 823 D1:DE5F 49 01 - - .dw 329 - 824 D1:DE61 48 01 - - .dw 328 - 825 D1:DE63 46 01 - - .dw 326 - 826 D1:DE65 45 01 - - .dw 325 - 827 D1:DE67 43 01 - - .dw 323 - 828 D1:DE69 41 01 - - .dw 321 - 829 D1:DE6B 40 01 - - .dw 320 - 830 D1:DE6D 3E 01 - - .dw 318 - 831 D1:DE6F 3D 01 - - .dw 317 - 832 D1:DE71 3B 01 - - .dw 315 - 833 D1:DE73 3A 01 - - .dw 314 - 834 D1:DE75 38 01 - - .dw 312 - 835 D1:DE77 37 01 - - .dw 311 - 836 D1:DE79 35 01 - - .dw 309 - 837 D1:DE7B 34 01 - - .dw 308 - 838 D1:DE7D 32 01 - - .dw 306 - 839 D1:DE7F 31 01 - - .dw 305 - 840 D1:DE81 2F 01 - - .dw 303 - 841 D1:DE83 2E 01 - - .dw 302 - 842 D1:DE85 2D 01 - - .dw 301 - 843 D1:DE87 2B 01 - - .dw 299 - 844 D1:DE89 2A 01 - - .dw 298 - 845 D1:DE8B 28 01 - - .dw 296 - 846 D1:DE8D 27 01 - - .dw 295 - 847 D1:DE8F 26 01 - - .dw 294 - 848 D1:DE91 24 01 - - .dw 292 - 849 D1:DE93 23 01 - - .dw 291 - 850 D1:DE95 22 01 - - .dw 290 - 851 D1:DE97 20 01 - - .dw 288 - 852 D1:DE99 1F 01 - - .dw 287 - 853 D1:DE9B 1E 01 - - .dw 286 - 854 D1:DE9D 1D 01 - - .dw 285 - 855 D1:DE9F 1B 01 - - .dw 283 - 856 D1:DEA1 1A 01 - - .dw 282 - 857 D1:DEA3 19 01 - - .dw 281 - 858 D1:DEA5 18 01 - - .dw 280 - 859 D1:DEA7 17 01 - - .dw 279 - 860 D1:DEA9 15 01 - - .dw 277 - 861 D1:DEAB 14 01 - - .dw 276 - 862 D1:DEAD 13 01 - - .dw 275 - 863 D1:DEAF 12 01 - - .dw 274 - 864 D1:DEB1 11 01 - - .dw 273 - 865 D1:DEB3 10 01 - - .dw 272 - 866 D1:DEB5 0E 01 - - .dw 270 - 867 D1:DEB7 0D 01 - - .dw 269 - 868 D1:DEB9 0C 01 - - .dw 268 - 869 D1:DEBB 0B 01 - - .dw 267 - 870 D1:DEBD 0A 01 - - .dw 266 - 871 D1:DEBF 09 01 - - .dw 265 - 872 D1:DEC1 08 01 - - .dw 264 - 873 D1:DEC3 07 01 - - .dw 263 - 874 D1:DEC5 06 01 - - .dw 262 - 875 D1:DEC7 05 01 - - .dw 261 - 876 D1:DEC9 04 01 - - .dw 260 - 877 D1:DECB 03 01 - - .dw 259 - 878 D1:DECD 02 01 - - .dw 258 - 879 D1:DECF 01 01 - - .dw 257 - 880 D1:DED1 00 01 - - .dw 256 - 881 D1:DED3 FF 00 - - .dw 255 - 882 D1:DED5 FE 00 - - .dw 254 - 883 D1:DED7 FD 00 - - .dw 253 - 884 D1:DED9 FC 00 - - .dw 252 - 885 D1:DEDB FB 00 - - .dw 251 - 886 D1:DEDD FA 00 - - .dw 250 - 887 D1:DEDF F9 00 - - .dw 249 - 888 D1:DEE1 F8 00 - - .dw 248 - 889 D1:DEE3 F7 00 - - .dw 247 - 890 D1:DEE5 F6 00 - - .dw 246 - 891 D1:DEE7 F5 00 - - .dw 245 - 892 D1:DEE9 F4 00 - - .dw 244 - 893 D1:DEEB F3 00 - - .dw 243 - 894 D1:DEED F2 00 - - .dw 242 - 895 D1:DEEF F1 00 - - .dw 241 - 896 D1:DEF1 F0 00 - - .dw 240 - 897 D1:DEF3 EF 00 - - .dw 239 - 898 D1:DEF5 EF 00 - - .dw 239 - 899 D1:DEF7 EE 00 - - .dw 238 - 900 D1:DEF9 ED 00 - - .dw 237 - 901 D1:DEFB EC 00 - - .dw 236 - 902 D1:DEFD EB 00 - - .dw 235 - 903 D1:DEFF EA 00 - - .dw 234 - 904 D1:DF01 E9 00 - - .dw 233 - 905 D1:DF03 E9 00 - - .dw 233 - 906 D1:DF05 E8 00 - - .dw 232 - 907 D1:DF07 E7 00 - - .dw 231 - 908 D1:DF09 E6 00 - - .dw 230 - 909 D1:DF0B E5 00 - - .dw 229 - 910 D1:DF0D E4 00 - - .dw 228 - 911 D1:DF0F E4 00 - - .dw 228 - 912 D1:DF11 E3 00 - - .dw 227 - 913 D1:DF13 E2 00 - - .dw 226 - 914 D1:DF15 E1 00 - - .dw 225 - 915 D1:DF17 E0 00 - - .dw 224 - 916 D1:DF19 E0 00 - - .dw 224 - 917 D1:DF1B DF 00 - - .dw 223 - 918 D1:DF1D DE 00 - - .dw 222 - 919 D1:DF1F DD 00 - - .dw 221 - 920 D1:DF21 DD 00 - - .dw 221 - 921 D1:DF23 DC 00 - - .dw 220 - 922 D1:DF25 DB 00 - - .dw 219 - 923 D1:DF27 DA 00 - - .dw 218 - 924 D1:DF29 DA 00 - - .dw 218 - 925 D1:DF2B D9 00 - - .dw 217 - 926 D1:DF2D D8 00 - - .dw 216 - 927 D1:DF2F D8 00 - - .dw 216 - 928 D1:DF31 D7 00 - - .dw 215 - 929 D1:DF33 D6 00 - - .dw 214 - 930 D1:DF35 D5 00 - - .dw 213 - 931 D1:DF37 D5 00 - - .dw 213 - 932 D1:DF39 D4 00 - - .dw 212 - 933 D1:DF3B D3 00 - - .dw 211 - 934 D1:DF3D D3 00 - - .dw 211 - 935 D1:DF3F D2 00 - - .dw 210 - 936 D1:DF41 D1 00 - - .dw 209 - 937 D1:DF43 D1 00 - - .dw 209 - 938 D1:DF45 D0 00 - - .dw 208 - 939 D1:DF47 CF 00 - - .dw 207 - 940 D1:DF49 CF 00 - - .dw 207 - 941 D1:DF4B CE 00 - - .dw 206 - 942 D1:DF4D CD 00 - - .dw 205 - 943 D1:DF4F CD 00 - - .dw 205 - 944 D1:DF51 CC 00 - - .dw 204 + 596 D1:DCC4 - - - - + 597 D1:DCC4 - - - - + 598 D1:DCC4 - - - - vxTexturePolygon: + 599 D1:DCC4 D6 02 - - sub a, 2 + 600 D1:DCC6 47 - - - ld b, a + 601 D1:DCC7 FD 27 00 - ld hl, (iy+0) + 602 D1:DCCA - - - - vxTextureCyclicLoop: + 603 D1:DCCA C5 - - - push bc + 604 D1:DCCB FD 17 03 - ld de, (iy+3) + 605 D1:DCCE FD 07 06 - ld bc, (iy+6) + 606 D1:DCD1 E5 - - - push hl + 607 D1:DCD2 FD E5 - - push iy + 608 D1:DCD4 E5 - - - push hl + 609 D1:DCD5 C5 - - - push bc + 610 D1:DCD6 D5 - - - push de + 611 D1:DCD7 CD E8 BC D1 call vxNClip + 612 D1:DCDB D1 - - - pop de + 613 D1:DCDC C1 - - - pop bc + 614 D1:DCDD E1 - - - pop hl + 615 D1:DCDE D4 0D 08 E3 call nc,vxTextureTriangleNoClip + 616 D1:DCE2 FD E1 - - pop iy + 617 D1:DCE4 ED 33 03 - lea iy, iy+3 + 618 D1:DCE7 E1 - - - pop hl + 619 D1:DCE8 C1 - - - pop bc + 620 D1:DCE9 05 - - - dec b + 621 D1:DCEA C2 CA DC D1 jp nz, vxTextureCyclicLoop + 622 D1:DCEE C9 - - - ret + 623 D1:DCEF - - - - + 624 D1:DCEF - - - - VX_INVERSE_TABLE: + 625 D1:DCEF FE FF - - .dw 65534 ; position 0, so nothing in fact (div by 0) + 626 D1:DCF1 FE FF - - .dw 65534 ; corrected + 627 D1:DCF3 FF 7F - - .dw 32767 + 628 D1:DCF5 54 55 - - .dw 21844 + 629 D1:DCF7 FF 3F - - .dw 16383 + 630 D1:DCF9 32 33 - - .dw 13106 + 631 D1:DCFB A9 2A - - .dw 10921 + 632 D1:DCFD 91 24 - - .dw 9361 + 633 D1:DCFF FF 1F - - .dw 8191 + 634 D1:DD01 70 1C - - .dw 7280 + 635 D1:DD03 98 19 - - .dw 6552 + 636 D1:DD05 44 17 - - .dw 5956 + 637 D1:DD07 54 15 - - .dw 5460 + 638 D1:DD09 B0 13 - - .dw 5040 + 639 D1:DD0B 48 12 - - .dw 4680 + 640 D1:DD0D 10 11 - - .dw 4368 + 641 D1:DD0F FF 0F - - .dw 4095 + 642 D1:DD11 0E 0F - - .dw 3854 + 643 D1:DD13 37 0E - - .dw 3639 + 644 D1:DD15 78 0D - - .dw 3448 + 645 D1:DD17 CB 0C - - .dw 3275 + 646 D1:DD19 2F 0C - - .dw 3119 + 647 D1:DD1B A1 0B - - .dw 2977 + 648 D1:DD1D 20 0B - - .dw 2848 + 649 D1:DD1F A9 0A - - .dw 2729 + 650 D1:DD21 3C 0A - - .dw 2620 + 651 D1:DD23 D7 09 - - .dw 2519 + 652 D1:DD25 7A 09 - - .dw 2426 + 653 D1:DD27 23 09 - - .dw 2339 + 654 D1:DD29 D2 08 - - .dw 2258 + 655 D1:DD2B 87 08 - - .dw 2183 + 656 D1:DD2D 41 08 - - .dw 2113 + 657 D1:DD2F FF 07 - - .dw 2047 + 658 D1:DD31 C0 07 - - .dw 1984 + 659 D1:DD33 86 07 - - .dw 1926 + 660 D1:DD35 4F 07 - - .dw 1871 + 661 D1:DD37 1B 07 - - .dw 1819 + 662 D1:DD39 EA 06 - - .dw 1770 + 663 D1:DD3B BB 06 - - .dw 1723 + 664 D1:DD3D 8F 06 - - .dw 1679 + 665 D1:DD3F 65 06 - - .dw 1637 + 666 D1:DD41 3D 06 - - .dw 1597 + 667 D1:DD43 17 06 - - .dw 1559 + 668 D1:DD45 F3 05 - - .dw 1523 + 669 D1:DD47 D0 05 - - .dw 1488 + 670 D1:DD49 AF 05 - - .dw 1455 + 671 D1:DD4B 8F 05 - - .dw 1423 + 672 D1:DD4D 71 05 - - .dw 1393 + 673 D1:DD4F 54 05 - - .dw 1364 + 674 D1:DD51 38 05 - - .dw 1336 + 675 D1:DD53 1D 05 - - .dw 1309 + 676 D1:DD55 04 05 - - .dw 1284 + 677 D1:DD57 EB 04 - - .dw 1259 + 678 D1:DD59 D3 04 - - .dw 1235 + 679 D1:DD5B BC 04 - - .dw 1212 + 680 D1:DD5D A6 04 - - .dw 1190 + 681 D1:DD5F 91 04 - - .dw 1169 + 682 D1:DD61 7C 04 - - .dw 1148 + 683 D1:DD63 68 04 - - .dw 1128 + 684 D1:DD65 55 04 - - .dw 1109 + 685 D1:DD67 43 04 - - .dw 1091 + 686 D1:DD69 31 04 - - .dw 1073 + 687 D1:DD6B 20 04 - - .dw 1056 + 688 D1:DD6D 0F 04 - - .dw 1039 + 689 D1:DD6F FF 03 - - .dw 1023 + 690 D1:DD71 EF 03 - - .dw 1007 + 691 D1:DD73 DF 03 - - .dw 991 + 692 D1:DD75 D1 03 - - .dw 977 + 693 D1:DD77 C2 03 - - .dw 962 + 694 D1:DD79 B4 03 - - .dw 948 + 695 D1:DD7B A7 03 - - .dw 935 + 696 D1:DD7D 9A 03 - - .dw 922 + 697 D1:DD7F 8D 03 - - .dw 909 + 698 D1:DD81 80 03 - - .dw 896 + 699 D1:DD83 74 03 - - .dw 884 + 700 D1:DD85 68 03 - - .dw 872 + 701 D1:DD87 5D 03 - - .dw 861 + 702 D1:DD89 52 03 - - .dw 850 + 703 D1:DD8B 47 03 - - .dw 839 + 704 D1:DD8D 3C 03 - - .dw 828 + 705 D1:DD8F 32 03 - - .dw 818 + 706 D1:DD91 28 03 - - .dw 808 + 707 D1:DD93 1E 03 - - .dw 798 + 708 D1:DD95 14 03 - - .dw 788 + 709 D1:DD97 0B 03 - - .dw 779 + 710 D1:DD99 02 03 - - .dw 770 + 711 D1:DD9B F9 02 - - .dw 761 + 712 D1:DD9D F0 02 - - .dw 752 + 713 D1:DD9F E7 02 - - .dw 743 + 714 D1:DDA1 DF 02 - - .dw 735 + 715 D1:DDA3 D7 02 - - .dw 727 + 716 D1:DDA5 CF 02 - - .dw 719 + 717 D1:DDA7 C7 02 - - .dw 711 + 718 D1:DDA9 BF 02 - - .dw 703 + 719 D1:DDAB B8 02 - - .dw 696 + 720 D1:DDAD B0 02 - - .dw 688 + 721 D1:DDAF A9 02 - - .dw 681 + 722 D1:DDB1 A2 02 - - .dw 674 + 723 D1:DDB3 9B 02 - - .dw 667 + 724 D1:DDB5 94 02 - - .dw 660 + 725 D1:DDB7 8E 02 - - .dw 654 + 726 D1:DDB9 87 02 - - .dw 647 + 727 D1:DDBB 81 02 - - .dw 641 + 728 D1:DDBD 7B 02 - - .dw 635 + 729 D1:DDBF 75 02 - - .dw 629 + 730 D1:DDC1 6F 02 - - .dw 623 + 731 D1:DDC3 69 02 - - .dw 617 + 732 D1:DDC5 63 02 - - .dw 611 + 733 D1:DDC7 5D 02 - - .dw 605 + 734 D1:DDC9 58 02 - - .dw 600 + 735 D1:DDCB 52 02 - - .dw 594 + 736 D1:DDCD 4D 02 - - .dw 589 + 737 D1:DDCF 48 02 - - .dw 584 + 738 D1:DDD1 42 02 - - .dw 578 + 739 D1:DDD3 3D 02 - - .dw 573 + 740 D1:DDD5 38 02 - - .dw 568 + 741 D1:DDD7 33 02 - - .dw 563 + 742 D1:DDD9 2F 02 - - .dw 559 + 743 D1:DDDB 2A 02 - - .dw 554 + 744 D1:DDDD 25 02 - - .dw 549 + 745 D1:DDDF 21 02 - - .dw 545 + 746 D1:DDE1 1C 02 - - .dw 540 + 747 D1:DDE3 18 02 - - .dw 536 + 748 D1:DDE5 13 02 - - .dw 531 + 749 D1:DDE7 0F 02 - - .dw 527 + 750 D1:DDE9 0B 02 - - .dw 523 + 751 D1:DDEB 07 02 - - .dw 519 + 752 D1:DDED 03 02 - - .dw 515 + 753 D1:DDEF FF 01 - - .dw 511 + 754 D1:DDF1 FB 01 - - .dw 507 + 755 D1:DDF3 F7 01 - - .dw 503 + 756 D1:DDF5 F3 01 - - .dw 499 + 757 D1:DDF7 EF 01 - - .dw 495 + 758 D1:DDF9 EB 01 - - .dw 491 + 759 D1:DDFB E8 01 - - .dw 488 + 760 D1:DDFD E4 01 - - .dw 484 + 761 D1:DDFF E0 01 - - .dw 480 + 762 D1:DE01 DD 01 - - .dw 477 + 763 D1:DE03 D9 01 - - .dw 473 + 764 D1:DE05 D6 01 - - .dw 470 + 765 D1:DE07 D3 01 - - .dw 467 + 766 D1:DE09 CF 01 - - .dw 463 + 767 D1:DE0B CC 01 - - .dw 460 + 768 D1:DE0D C9 01 - - .dw 457 + 769 D1:DE0F C6 01 - - .dw 454 + 770 D1:DE11 C2 01 - - .dw 450 + 771 D1:DE13 BF 01 - - .dw 447 + 772 D1:DE15 BC 01 - - .dw 444 + 773 D1:DE17 B9 01 - - .dw 441 + 774 D1:DE19 B6 01 - - .dw 438 + 775 D1:DE1B B3 01 - - .dw 435 + 776 D1:DE1D B1 01 - - .dw 433 + 777 D1:DE1F AE 01 - - .dw 430 + 778 D1:DE21 AB 01 - - .dw 427 + 779 D1:DE23 A8 01 - - .dw 424 + 780 D1:DE25 A5 01 - - .dw 421 + 781 D1:DE27 A3 01 - - .dw 419 + 782 D1:DE29 A0 01 - - .dw 416 + 783 D1:DE2B 9D 01 - - .dw 413 + 784 D1:DE2D 9B 01 - - .dw 411 + 785 D1:DE2F 98 01 - - .dw 408 + 786 D1:DE31 96 01 - - .dw 406 + 787 D1:DE33 93 01 - - .dw 403 + 788 D1:DE35 91 01 - - .dw 401 + 789 D1:DE37 8E 01 - - .dw 398 + 790 D1:DE39 8C 01 - - .dw 396 + 791 D1:DE3B 89 01 - - .dw 393 + 792 D1:DE3D 87 01 - - .dw 391 + 793 D1:DE3F 85 01 - - .dw 389 + 794 D1:DE41 82 01 - - .dw 386 + 795 D1:DE43 80 01 - - .dw 384 + 796 D1:DE45 7E 01 - - .dw 382 + 797 D1:DE47 7C 01 - - .dw 380 + 798 D1:DE49 79 01 - - .dw 377 + 799 D1:DE4B 77 01 - - .dw 375 + 800 D1:DE4D 75 01 - - .dw 373 + 801 D1:DE4F 73 01 - - .dw 371 + 802 D1:DE51 71 01 - - .dw 369 + 803 D1:DE53 6F 01 - - .dw 367 + 804 D1:DE55 6D 01 - - .dw 365 + 805 D1:DE57 6B 01 - - .dw 363 + 806 D1:DE59 69 01 - - .dw 361 + 807 D1:DE5B 67 01 - - .dw 359 + 808 D1:DE5D 65 01 - - .dw 357 + 809 D1:DE5F 63 01 - - .dw 355 + 810 D1:DE61 61 01 - - .dw 353 + 811 D1:DE63 5F 01 - - .dw 351 + 812 D1:DE65 5D 01 - - .dw 349 + 813 D1:DE67 5B 01 - - .dw 347 + 814 D1:DE69 59 01 - - .dw 345 + 815 D1:DE6B 57 01 - - .dw 343 + 816 D1:DE6D 56 01 - - .dw 342 + 817 D1:DE6F 54 01 - - .dw 340 + 818 D1:DE71 52 01 - - .dw 338 + 819 D1:DE73 50 01 - - .dw 336 + 820 D1:DE75 4F 01 - - .dw 335 + 821 D1:DE77 4D 01 - - .dw 333 + 822 D1:DE79 4B 01 - - .dw 331 + 823 D1:DE7B 49 01 - - .dw 329 + 824 D1:DE7D 48 01 - - .dw 328 + 825 D1:DE7F 46 01 - - .dw 326 + 826 D1:DE81 45 01 - - .dw 325 + 827 D1:DE83 43 01 - - .dw 323 + 828 D1:DE85 41 01 - - .dw 321 + 829 D1:DE87 40 01 - - .dw 320 + 830 D1:DE89 3E 01 - - .dw 318 + 831 D1:DE8B 3D 01 - - .dw 317 + 832 D1:DE8D 3B 01 - - .dw 315 + 833 D1:DE8F 3A 01 - - .dw 314 + 834 D1:DE91 38 01 - - .dw 312 + 835 D1:DE93 37 01 - - .dw 311 + 836 D1:DE95 35 01 - - .dw 309 + 837 D1:DE97 34 01 - - .dw 308 + 838 D1:DE99 32 01 - - .dw 306 + 839 D1:DE9B 31 01 - - .dw 305 + 840 D1:DE9D 2F 01 - - .dw 303 + 841 D1:DE9F 2E 01 - - .dw 302 + 842 D1:DEA1 2D 01 - - .dw 301 + 843 D1:DEA3 2B 01 - - .dw 299 + 844 D1:DEA5 2A 01 - - .dw 298 + 845 D1:DEA7 28 01 - - .dw 296 + 846 D1:DEA9 27 01 - - .dw 295 + 847 D1:DEAB 26 01 - - .dw 294 + 848 D1:DEAD 24 01 - - .dw 292 + 849 D1:DEAF 23 01 - - .dw 291 + 850 D1:DEB1 22 01 - - .dw 290 + 851 D1:DEB3 20 01 - - .dw 288 + 852 D1:DEB5 1F 01 - - .dw 287 + 853 D1:DEB7 1E 01 - - .dw 286 + 854 D1:DEB9 1D 01 - - .dw 285 + 855 D1:DEBB 1B 01 - - .dw 283 + 856 D1:DEBD 1A 01 - - .dw 282 + 857 D1:DEBF 19 01 - - .dw 281 + 858 D1:DEC1 18 01 - - .dw 280 + 859 D1:DEC3 17 01 - - .dw 279 + 860 D1:DEC5 15 01 - - .dw 277 + 861 D1:DEC7 14 01 - - .dw 276 + 862 D1:DEC9 13 01 - - .dw 275 + 863 D1:DECB 12 01 - - .dw 274 + 864 D1:DECD 11 01 - - .dw 273 + 865 D1:DECF 10 01 - - .dw 272 + 866 D1:DED1 0E 01 - - .dw 270 + 867 D1:DED3 0D 01 - - .dw 269 + 868 D1:DED5 0C 01 - - .dw 268 + 869 D1:DED7 0B 01 - - .dw 267 + 870 D1:DED9 0A 01 - - .dw 266 + 871 D1:DEDB 09 01 - - .dw 265 + 872 D1:DEDD 08 01 - - .dw 264 + 873 D1:DEDF 07 01 - - .dw 263 + 874 D1:DEE1 06 01 - - .dw 262 + 875 D1:DEE3 05 01 - - .dw 261 + 876 D1:DEE5 04 01 - - .dw 260 + 877 D1:DEE7 03 01 - - .dw 259 + 878 D1:DEE9 02 01 - - .dw 258 + 879 D1:DEEB 01 01 - - .dw 257 + 880 D1:DEED 00 01 - - .dw 256 + 881 D1:DEEF FF 00 - - .dw 255 + 882 D1:DEF1 FE 00 - - .dw 254 + 883 D1:DEF3 FD 00 - - .dw 253 + 884 D1:DEF5 FC 00 - - .dw 252 + 885 D1:DEF7 FB 00 - - .dw 251 + 886 D1:DEF9 FA 00 - - .dw 250 + 887 D1:DEFB F9 00 - - .dw 249 + 888 D1:DEFD F8 00 - - .dw 248 + 889 D1:DEFF F7 00 - - .dw 247 + 890 D1:DF01 F6 00 - - .dw 246 + 891 D1:DF03 F5 00 - - .dw 245 + 892 D1:DF05 F4 00 - - .dw 244 + 893 D1:DF07 F3 00 - - .dw 243 + 894 D1:DF09 F2 00 - - .dw 242 + 895 D1:DF0B F1 00 - - .dw 241 + 896 D1:DF0D F0 00 - - .dw 240 + 897 D1:DF0F EF 00 - - .dw 239 + 898 D1:DF11 EF 00 - - .dw 239 + 899 D1:DF13 EE 00 - - .dw 238 + 900 D1:DF15 ED 00 - - .dw 237 + 901 D1:DF17 EC 00 - - .dw 236 + 902 D1:DF19 EB 00 - - .dw 235 + 903 D1:DF1B EA 00 - - .dw 234 + 904 D1:DF1D E9 00 - - .dw 233 + 905 D1:DF1F E9 00 - - .dw 233 + 906 D1:DF21 E8 00 - - .dw 232 + 907 D1:DF23 E7 00 - - .dw 231 + 908 D1:DF25 E6 00 - - .dw 230 + 909 D1:DF27 E5 00 - - .dw 229 + 910 D1:DF29 E4 00 - - .dw 228 + 911 D1:DF2B E4 00 - - .dw 228 + 912 D1:DF2D E3 00 - - .dw 227 + 913 D1:DF2F E2 00 - - .dw 226 + 914 D1:DF31 E1 00 - - .dw 225 + 915 D1:DF33 E0 00 - - .dw 224 + 916 D1:DF35 E0 00 - - .dw 224 + 917 D1:DF37 DF 00 - - .dw 223 + 918 D1:DF39 DE 00 - - .dw 222 + 919 D1:DF3B DD 00 - - .dw 221 + 920 D1:DF3D DD 00 - - .dw 221 + 921 D1:DF3F DC 00 - - .dw 220 + 922 D1:DF41 DB 00 - - .dw 219 + 923 D1:DF43 DA 00 - - .dw 218 + 924 D1:DF45 DA 00 - - .dw 218 + 925 D1:DF47 D9 00 - - .dw 217 + 926 D1:DF49 D8 00 - - .dw 216 + 927 D1:DF4B D8 00 - - .dw 216 + 928 D1:DF4D D7 00 - - .dw 215 + 929 D1:DF4F D6 00 - - .dw 214 + 930 D1:DF51 D5 00 - - .dw 213 + 931 D1:DF53 D5 00 - - .dw 213 + 932 D1:DF55 D4 00 - - .dw 212 + 933 D1:DF57 D3 00 - - .dw 211 + 934 D1:DF59 D3 00 - - .dw 211 + 935 D1:DF5B D2 00 - - .dw 210 + 936 D1:DF5D D1 00 - - .dw 209 + 937 D1:DF5F D1 00 - - .dw 209 + 938 D1:DF61 D0 00 - - .dw 208 + 939 D1:DF63 CF 00 - - .dw 207 + 940 D1:DF65 CF 00 - - .dw 207 + 941 D1:DF67 CE 00 - - .dw 206 + 942 D1:DF69 CD 00 - - .dw 205 + 943 D1:DF6B CD 00 - - .dw 205 + 944 D1:DF6D CC 00 - - .dw 204 Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" - 13 D1:DF53 - - - - #include "vxData.inc" + 13 D1:DF6F - - - - #include "vxData.inc" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxData.inc" - 1 D1:DF53 - - - - ; lightmap - 2 D1:DF53 - - - - #define db .db - 3 D1:DF53 - - - - VX_COLOR_LUT_DATA: - 4 D1:DF53 00 00 00 00 + 1 D1:DF6F - - - - ; lightmap + 2 D1:DF6F - - - - #define db .db + 3 D1:DF6F - - - - VX_COLOR_LUT_DATA: + 4 D1:DF6F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @@ -10264,8426 +10222,8426 @@ Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxData.inc" FF FF FF FF F8 FA FC FD FF FF FF FF .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,32,32,32,32,32,32,32,33,32,32,32,32,32,32,32,33,32,32,32,32,32,32,32,33,32,32,32,32,32,32,32,33,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,0,0,0,1,1,1,2,2,0,0,0,1,1,1,2,2,0,0,0,1,1,1,2,2,8,8,8,9,9,9,10,10,0,0,0,1,1,1,2,2,0,0,0,1,1,1,2,2,0,0,0,1,1,1,2,2,8,8,8,9,9,9,10,10,0,0,0,1,1,1,2,2,0,0,0,1,1,1,2,2,0,0,0,1,1,1,2,2,8,8,8,9,9,9,10,10,32,32,32,33,33,33,34,34,32,32,32,33,33,33,34,34,32,32,32,33,33,33,34,34,40,40,40,41,41,41,42,42,32,32,32,33,33,33,34,34,32,32,32,33,33,33,34,34,32,32,32,33,33,33,34,34,40,40,40,41,41,41,42,42,32,32,32,33,33,33,34,34,32,32,32,33,33,33,34,34,32,32,32,33,33,33,34,34,40,40,40,41,41,41,42,42,64,64,64,65,65,65,66,66,64,64,64,65,65,65,66,66,64,64,64,65,65,65,66,66,72,72,72,73,73,73,74,74,64,64,64,65,65,65,66,66,64,64,64,65,65,65,66,66,64,64,64,65,65,65,66,66,72,72,72,73,73,73,74,74,0,0,0,1,1,2,2,2,0,0,0,1,1,2,2,2,0,0,0,1,1,2,2,2,8,8,8,9,9,10,10,10,0,0,0,1,1,2,2,2,0,0,0,1,1,2,2,2,0,0,0,1,1,2,2,2,8,8,8,9,9,10,10,10,0,0,0,1,1,2,2,2,0,0,0,1,1,2,2,2,0,0,0,1,1,2,2,2,8,8,8,9,9,10,10,10,32,32,32,33,33,34,34,34,32,32,32,33,33,34,34,34,32,32,32,33,33,34,34,34,40,40,40,41,41,42,42,42,32,32,32,33,33,34,34,34,32,32,32,33,33,34,34,34,32,32,32,33,33,34,34,34,40,40,40,41,41,42,42,42,64,64,64,65,65,66,66,66,64,64,64,65,65,66,66,66,64,64,64,65,65,66,66,66,72,72,72,73,73,74,74,74,64,64,64,65,65,66,66,66,64,64,64,65,65,66,66,66,64,64,64,65,65,66,66,66,72,72,72,73,73,74,74,74,64,64,64,65,65,66,66,66,64,64,64,65,65,66,66,66,64,64,64,65,65,66,66,66,72,72,72,73,73,74,74,74,0,0,1,1,1,2,2,3,0,0,1,1,1,2,2,3,8,8,9,9,9,10,10,11,8,8,9,9,9,10,10,11,0,0,1,1,1,2,2,3,0,0,1,1,1,2,2,3,8,8,9,9,9,10,10,11,8,8,9,9,9,10,10,11,32,32,33,33,33,34,34,35,32,32,33,33,33,34,34,35,40,40,41,41,41,42,42,43,40,40,41,41,41,42,42,43,32,32,33,33,33,34,34,35,32,32,33,33,33,34,34,35,40,40,41,41,41,42,42,43,40,40,41,41,41,42,42,43,32,32,33,33,33,34,34,35,32,32,33,33,33,34,34,35,40,40,41,41,41,42,42,43,40,40,41,41,41,42,42,43,64,64,65,65,65,66,66,67,64,64,65,65,65,66,66,67,72,72,73,73,73,74,74,75,72,72,73,73,73,74,74,75,64,64,65,65,65,66,66,67,64,64,65,65,65,66,66,67,72,72,73,73,73,74,74,75,72,72,73,73,73,74,74,75,96,96,97,97,97,98,98,99,96,96,97,97,97,98,98,99,104,104,105,105,105,106,106,107,104,104,105,105,105,106,106,107,0,0,1,1,2,2,3,3,0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11,8,8,9,9,10,10,11,11,0,0,1,1,2,2,3,3,0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11,8,8,9,9,10,10,11,11,32,32,33,33,34,34,35,35,32,32,33,33,34,34,35,35,40,40,41,41,42,42,43,43,40,40,41,41,42,42,43,43,32,32,33,33,34,34,35,35,32,32,33,33,34,34,35,35,40,40,41,41,42,42,43,43,40,40,41,41,42,42,43,43,64,64,65,65,66,66,67,67,64,64,65,65,66,66,67,67,72,72,73,73,74,74,75,75,72,72,73,73,74,74,75,75,64,64,65,65,66,66,67,67,64,64,65,65,66,66,67,67,72,72,73,73,74,74,75,75,72,72,73,73,74,74,75,75,96,96,97,97,98,98,99,99,96,96,97,97,98,98,99,99,104,104,105,105,106,106,107,107,104,104,105,105,106,106,107,107,96,96,97,97,98,98,99,99,96,96,97,97,98,98,99,99,104,104,105,105,106,106,107,107,104,104,105,105,106,106,107,107,0,0,1,1,2,2,3,4,0,0,1,1,2,2,3,4,8,8,9,9,10,10,11,12,8,8,9,9,10,10,11,12,0,0,1,1,2,2,3,4,0,0,1,1,2,2,3,4,8,8,9,9,10,10,11,12,8,8,9,9,10,10,11,12,32,32,33,33,34,34,35,36,32,32,33,33,34,34,35,36,40,40,41,41,42,42,43,44,40,40,41,41,42,42,43,44,32,32,33,33,34,34,35,36,32,32,33,33,34,34,35,36,40,40,41,41,42,42,43,44,40,40,41,41,42,42,43,44,64,64,65,65,66,66,67,68,64,64,65,65,66,66,67,68,72,72,73,73,74,74,75,76,72,72,73,73,74,74,75,76,64,64,65,65,66,66,67,68,64,64,65,65,66,66,67,68,72,72,73,73,74,74,75,76,72,72,73,73,74,74,75,76,96,96,97,97,98,98,99,100,96,96,97,97,98,98,99,100,104,104,105,105,106,106,107,108,104,104,105,105,106,106,107,108,128,128,129,129,130,130,131,132,128,128,129,129,130,130,131,132,136,136,137,137,138,138,139,140,136,136,137,137,138,138,139,140,0,0,1,2,2,3,3,4,0,0,1,2,2,3,3,4,8,8,9,10,10,11,11,12,16,16,17,18,18,19,19,20,0,0,1,2,2,3,3,4,0,0,1,2,2,3,3,4,8,8,9,10,10,11,11,12,16,16,17,18,18,19,19,20,32,32,33,34,34,35,35,36,32,32,33,34,34,35,35,36,40,40,41,42,42,43,43,44,48,48,49,50,50,51,51,52,64,64,65,66,66,67,67,68,64,64,65,66,66,67,67,68,72,72,73,74,74,75,75,76,80,80,81,82,82,83,83,84,64,64,65,66,66,67,67,68,64,64,65,66,66,67,67,68,72,72,73,74,74,75,75,76,80,80,81,82,82,83,83,84,96,96,97,98,98,99,99,100,96,96,97,98,98,99,99,100,104,104,105,106,106,107,107,108,112,112,113,114,114,115,115,116,96,96,97,98,98,99,99,100,96,96,97,98,98,99,99,100,104,104,105,106,106,107,107,108,112,112,113,114,114,115,115,116,128,128,129,130,130,131,131,132,128,128,129,130,130,131,131,132,136,136,137,138,138,139,139,140,144,144,145,146,146,147,147,148,0,0,1,2,2,3,4,4,0,0,1,2,2,3,4,4,8,8,9,10,10,11,12,12,16,16,17,18,18,19,20,20,0,0,1,2,2,3,4,4,0,0,1,2,2,3,4,4,8,8,9,10,10,11,12,12,16,16,17,18,18,19,20,20,32,32,33,34,34,35,36,36,32,32,33,34,34,35,36,36,40,40,41,42,42,43,44,44,48,48,49,50,50,51,52,52,64,64,65,66,66,67,68,68,64,64,65,66,66,67,68,68,72,72,73,74,74,75,76,76,80,80,81,82,82,83,84,84,64,64,65,66,66,67,68,68,64,64,65,66,66,67,68,68,72,72,73,74,74,75,76,76,80,80,81,82,82,83,84,84,96,96,97,98,98,99,100,100,96,96,97,98,98,99,100,100,104,104,105,106,106,107,108,108,112,112,113,114,114,115,116,116,128,128,129,130,130,131,132,132,128,128,129,130,130,131,132,132,136,136,137,138,138,139,140,140,144,144,145,146,146,147,148,148,128,128,129,130,130,131,132,132,128,128,129,130,130,131,132,132,136,136,137,138,138,139,140,140,144,144,145,146,146,147,148,148,0,0,1,2,3,3,4,5,0,0,1,2,3,3,4,5,8,8,9,10,11,11,12,13,16,16,17,18,19,19,20,21,0,0,1,2,3,3,4,5,0,0,1,2,3,3,4,5,8,8,9,10,11,11,12,13,16,16,17,18,19,19,20,21,32,32,33,34,35,35,36,37,32,32,33,34,35,35,36,37,40,40,41,42,43,43,44,45,48,48,49,50,51,51,52,53,64,64,65,66,67,67,68,69,64,64,65,66,67,67,68,69,72,72,73,74,75,75,76,77,80,80,81,82,83,83,84,85,96,96,97,98,99,99,100,101,96,96,97,98,99,99,100,101,104,104,105,106,107,107,108,109,112,112,113,114,115,115,116,117,96,96,97,98,99,99,100,101,96,96,97,98,99,99,100,101,104,104,105,106,107,107,108,109,112,112,113,114,115,115,116,117,128,128,129,130,131,131,132,133,128,128,129,130,131,131,132,133,136,136,137,138,139,139,140,141,144,144,145,146,147,147,148,149,160,160,161,162,163,163,164,165,160,160,161,162,163,163,164,165,168,168,169,170,171,171,172,173,176,176,177,178,179,179,180,181,0,0,1,2,3,4,5,5,0,0,1,2,3,4,5,5,8,8,9,10,11,12,13,13,16,16,17,18,19,20,21,21,0,0,1,2,3,4,5,5,0,0,1,2,3,4,5,5,8,8,9,10,11,12,13,13,16,16,17,18,19,20,21,21,32,32,33,34,35,36,37,37,32,32,33,34,35,36,37,37,40,40,41,42,43,44,45,45,48,48,49,50,51,52,53,53,64,64,65,66,67,68,69,69,64,64,65,66,67,68,69,69,72,72,73,74,75,76,77,77,80,80,81,82,83,84,85,85,96,96,97,98,99,100,101,101,96,96,97,98,99,100,101,101,104,104,105,106,107,108,109,109,112,112,113,114,115,116,117,117,128,128,129,130,131,132,133,133,128,128,129,130,131,132,133,133,136,136,137,138,139,140,141,141,144,144,145,146,147,148,149,149,160,160,161,162,163,164,165,165,160,160,161,162,163,164,165,165,168,168,169,170,171,172,173,173,176,176,177,178,179,180,181,181,160,160,161,162,163,164,165,165,160,160,161,162,163,164,165,165,168,168,169,170,171,172,173,173,176,176,177,178,179,180,181,181,0,1,1,2,3,4,5,6,8,9,9,10,11,12,13,14,8,9,9,10,11,12,13,14,16,17,17,18,19,20,21,22,32,33,33,34,35,36,37,38,40,41,41,42,43,44,45,46,40,41,41,42,43,44,45,46,48,49,49,50,51,52,53,54,32,33,33,34,35,36,37,38,40,41,41,42,43,44,45,46,40,41,41,42,43,44,45,46,48,49,49,50,51,52,53,54,64,65,65,66,67,68,69,70,72,73,73,74,75,76,77,78,72,73,73,74,75,76,77,78,80,81,81,82,83,84,85,86,96,97,97,98,99,100,101,102,104,105,105,106,107,108,109,110,104,105,105,106,107,108,109,110,112,113,113,114,115,116,117,118,128,129,129,130,131,132,133,134,136,137,137,138,139,140,141,142,136,137,137,138,139,140,141,142,144,145,145,146,147,148,149,150,160,161,161,162,163,164,165,166,168,169,169,170,171,172,173,174,168,169,169,170,171,172,173,174,176,177,177,178,179,180,181,182,192,193,193,194,195,196,197,198,200,201,201,202,203,204,205,206,200,201,201,202,203,204,205,206,208,209,209,210,211,212,213,214,0,1,2,2,3,4,5,6,8,9,10,10,11,12,13,14,16,17,18,18,19,20,21,22,16,17,18,18,19,20,21,22,32,33,34,34,35,36,37,38,40,41,42,42,43,44,45,46,48,49,50,50,51,52,53,54,48,49,50,50,51,52,53,54,64,65,66,66,67,68,69,70,72,73,74,74,75,76,77,78,80,81,82,82,83,84,85,86,80,81,82,82,83,84,85,86,64,65,66,66,67,68,69,70,72,73,74,74,75,76,77,78,80,81,82,82,83,84,85,86,80,81,82,82,83,84,85,86,96,97,98,98,99,100,101,102,104,105,106,106,107,108,109,110,112,113,114,114,115,116,117,118,112,113,114,114,115,116,117,118,128,129,130,130,131,132,133,134,136,137,138,138,139,140,141,142,144,145,146,146,147,148,149,150,144,145,146,146,147,148,149,150,160,161,162,162,163,164,165,166,168,169,170,170,171,172,173,174,176,177,178,178,179,180,181,182,176,177,178,178,179,180,181,182,192,193,194,194,195,196,197,198,200,201,202,202,203,204,205,206,208,209,210,210,211,212,213,214,208,209,210,210,211,212,213,214,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,0,1,2,3,4,6,7,7,8,9,10,11,12,14,15,15,16,17,18,19,20,22,23,23,24,25,26,27,28,30,31,31,32,33,34,35,36,38,39,39,40,41,42,43,44,46,47,47,48,49,50,51,52,54,55,55,56,57,58,59,60,62,63,63,64,65,66,67,68,70,71,71,72,73,74,75,76,78,79,79,80,81,82,83,84,86,87,87,88,89,90,91,92,94,95,95,96,97,98,99,100,102,103,103,104,105,106,107,108,110,111,111,112,113,114,115,116,118,119,119,120,121,122,123,124,126,127,127,128,129,130,131,132,134,135,135,136,137,138,139,140,142,143,143,144,145,146,147,148,150,151,151,152,153,154,155,156,158,159,159,192,193,194,195,196,198,199,199,200,201,202,203,204,206,207,207,208,209,210,211,212,214,215,215,216,217,218,219,220,222,223,223,224,225,226,227,228,230,231,231,232,233,234,235,236,238,239,239,240,241,242,243,244,246,247,247,248,249,250,251,252,254,255,255,224,225,226,227,228,230,231,231,232,233,234,235,236,238,239,239,240,241,242,243,244,246,247,247,248,249,250,251,252,254,255,255,0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15,16,17,18,19,21,22,23,23,24,25,26,27,29,30,31,31,32,33,34,35,37,38,39,39,40,41,42,43,45,46,47,47,48,49,50,51,53,54,55,55,56,57,58,59,61,62,63,63,64,65,66,67,69,70,71,71,72,73,74,75,77,78,79,79,80,81,82,83,85,86,87,87,88,89,90,91,93,94,95,95,96,97,98,99,101,102,103,103,104,105,106,107,109,110,111,111,112,113,114,115,117,118,119,119,120,121,122,123,125,126,127,127,160,161,162,163,165,166,167,167,168,169,170,171,173,174,175,175,176,177,178,179,181,182,183,183,184,185,186,187,189,190,191,191,192,193,194,195,197,198,199,199,200,201,202,203,205,206,207,207,208,209,210,211,213,214,215,215,216,217,218,219,221,222,223,223,224,225,226,227,229,230,231,231,232,233,234,235,237,238,239,239,240,241,242,243,245,246,247,247,248,249,250,251,253,254,255,255,224,225,226,227,229,230,231,231,232,233,234,235,237,238,239,239,240,241,242,243,245,246,247,247,248,249,250,251,253,254,255,255,0,1,2,4,5,6,7,7,8,9,10,12,13,14,15,15,16,17,18,20,21,22,23,23,24,25,26,28,29,30,31,31,32,33,34,36,37,38,39,39,40,41,42,44,45,46,47,47,48,49,50,52,53,54,55,55,56,57,58,60,61,62,63,63,64,65,66,68,69,70,71,71,72,73,74,76,77,78,79,79,80,81,82,84,85,86,87,87,88,89,90,92,93,94,95,95,128,129,130,132,133,134,135,135,136,137,138,140,141,142,143,143,144,145,146,148,149,150,151,151,152,153,154,156,157,158,159,159,160,161,162,164,165,166,167,167,168,169,170,172,173,174,175,175,176,177,178,180,181,182,183,183,184,185,186,188,189,190,191,191,192,193,194,196,197,198,199,199,200,201,202,204,205,206,207,207,208,209,210,212,213,214,215,215,216,217,218,220,221,222,223,223,224,225,226,228,229,230,231,231,232,233,234,236,237,238,239,239,240,241,242,244,245,246,247,247,248,249,250,252,253,254,255,255,224,225,226,228,229,230,231,231,232,233,234,236,237,238,239,239,240,241,242,244,245,246,247,247,248,249,250,252,253,254,255,255,0,1,2,4,5,7,7,7,8,9,10,12,13,15,15,15,16,17,18,20,21,23,23,23,24,25,26,28,29,31,31,31,32,33,34,36,37,39,39,39,40,41,42,44,45,47,47,47,48,49,50,52,53,55,55,55,56,57,58,60,61,63,63,63,64,65,66,68,69,71,71,71,72,73,74,76,77,79,79,79,80,81,82,84,85,87,87,87,88,89,90,92,93,95,95,95,128,129,130,132,133,135,135,135,136,137,138,140,141,143,143,143,144,145,146,148,149,151,151,151,152,153,154,156,157,159,159,159,160,161,162,164,165,167,167,167,168,169,170,172,173,175,175,175,176,177,178,180,181,183,183,183,184,185,186,188,189,191,191,191,224,225,226,228,229,231,231,231,232,233,234,236,237,239,239,239,240,241,242,244,245,247,247,247,248,249,250,252,253,255,255,255,224,225,226,228,229,231,231,231,232,233,234,236,237,239,239,239,240,241,242,244,245,247,247,247,248,249,250,252,253,255,255,255,224,225,226,228,229,231,231,231,232,233,234,236,237,239,239,239,240,241,242,244,245,247,247,247,248,249,250,252,253,255,255,255,0,1,3,4,5,7,7,7,8,9,11,12,13,15,15,15,24,25,27,28,29,31,31,31,24,25,27,28,29,31,31,31,32,33,35,36,37,39,39,39,40,41,43,44,45,47,47,47,56,57,59,60,61,63,63,63,56,57,59,60,61,63,63,63,96,97,99,100,101,103,103,103,104,105,107,108,109,111,111,111,120,121,123,124,125,127,127,127,120,121,123,124,125,127,127,127,128,129,131,132,133,135,135,135,136,137,139,140,141,143,143,143,152,153,155,156,157,159,159,159,152,153,155,156,157,159,159,159,160,161,163,164,165,167,167,167,168,169,171,172,173,175,175,175,184,185,187,188,189,191,191,191,184,185,187,188,189,191,191,191,224,225,227,228,229,231,231,231,232,233,235,236,237,239,239,239,248,249,251,252,253,255,255,255,248,249,251,252,253,255,255,255,224,225,227,228,229,231,231,231,232,233,235,236,237,239,239,239,248,249,251,252,253,255,255,255,248,249,251,252,253,255,255,255,224,225,227,228,229,231,231,231,232,233,235,236,237,239,239,239,248,249,251,252,253,255,255,255,248,249,251,252,253,255,255,255,0,1,3,4,6,7,7,7,8,9,11,12,14,15,15,15,24,25,27,28,30,31,31,31,24,25,27,28,30,31,31,31,32,33,35,36,38,39,39,39,40,41,43,44,46,47,47,47,56,57,59,60,62,63,63,63,56,57,59,60,62,63,63,63,96,97,99,100,102,103,103,103,104,105,107,108,110,111,111,111,120,121,123,124,126,127,127,127,120,121,123,124,126,127,127,127,128,129,131,132,134,135,135,135,136,137,139,140,142,143,143,143,152,153,155,156,158,159,159,159,152,153,155,156,158,159,159,159,192,193,195,196,198,199,199,199,200,201,203,204,206,207,207,207,216,217,219,220,222,223,223,223,216,217,219,220,222,223,223,223,224,225,227,228,230,231,231,231,232,233,235,236,238,239,239,239,248,249,251,252,254,255,255,255,248,249,251,252,254,255,255,255,224,225,227,228,230,231,231,231,232,233,235,236,238,239,239,239,248,249,251,252,254,255,255,255,248,249,251,252,254,255,255,255,224,225,227,228,230,231,231,231,232,233,235,236,238,239,239,239,248,249,251,252,254,255,255,255,248,249,251,252,254,255,255,255,0,1,3,4,6,7,7,7,8,9,11,12,14,15,15,15,24,25,27,28,30,31,31,31,24,25,27,28,30,31,31,31,32,33,35,36,38,39,39,39,40,41,43,44,46,47,47,47,56,57,59,60,62,63,63,63,56,57,59,60,62,63,63,63,96,97,99,100,102,103,103,103,104,105,107,108,110,111,111,111,120,121,123,124,126,127,127,127,120,121,123,124,126,127,127,127,128,129,131,132,134,135,135,135,136,137,139,140,142,143,143,143,152,153,155,156,158,159,159,159,152,153,155,156,158,159,159,159,192,193,195,196,198,199,199,199,200,201,203,204,206,207,207,207,216,217,219,220,222,223,223,223,216,217,219,220,222,223,223,223,224,225,227,228,230,231,231,231,232,233,235,236,238,239,239,239,248,249,251,252,254,255,255,255,248,249,251,252,254,255,255,255,224,225,227,228,230,231,231,231,232,233,235,236,238,239,239,239,248,249,251,252,254,255,255,255,248,249,251,252,254,255,255,255,224,225,227,228,230,231,231,231,232,233,235,236,238,239,239,239,248,249,251,252,254,255,255,255,248,249,251,252,254,255,255,255,0,1,3,5,6,7,7,7,8,9,11,13,14,15,15,15,24,25,27,29,30,31,31,31,24,25,27,29,30,31,31,31,32,33,35,37,38,39,39,39,40,41,43,45,46,47,47,47,56,57,59,61,62,63,63,63,56,57,59,61,62,63,63,63,96,97,99,101,102,103,103,103,104,105,107,109,110,111,111,111,120,121,123,125,126,127,127,127,120,121,123,125,126,127,127,127,160,161,163,165,166,167,167,167,168,169,171,173,174,175,175,175,184,185,187,189,190,191,191,191,184,185,187,189,190,191,191,191,192,193,195,197,198,199,199,199,200,201,203,205,206,207,207,207,216,217,219,221,222,223,223,223,216,217,219,221,222,223,223,223,224,225,227,229,230,231,231,231,232,233,235,237,238,239,239,239,248,249,251,253,254,255,255,255,248,249,251,253,254,255,255,255,224,225,227,229,230,231,231,231,232,233,235,237,238,239,239,239,248,249,251,253,254,255,255,255,248,249,251,253,254,255,255,255,224,225,227,229,230,231,231,231,232,233,235,237,238,239,239,239,248,249,251,253,254,255,255,255,248,249,251,253,254,255,255,255,0,1,3,5,6,7,7,7,8,9,11,13,14,15,15,15,24,25,27,29,30,31,31,31,24,25,27,29,30,31,31,31,32,33,35,37,38,39,39,39,40,41,43,45,46,47,47,47,56,57,59,61,62,63,63,63,56,57,59,61,62,63,63,63,96,97,99,101,102,103,103,103,104,105,107,109,110,111,111,111,120,121,123,125,126,127,127,127,120,121,123,125,126,127,127,127,160,161,163,165,166,167,167,167,168,169,171,173,174,175,175,175,184,185,187,189,190,191,191,191,184,185,187,189,190,191,191,191,192,193,195,197,198,199,199,199,200,201,203,205,206,207,207,207,216,217,219,221,222,223,223,223,216,217,219,221,222,223,223,223,224,225,227,229,230,231,231,231,232,233,235,237,238,239,239,239,248,249,251,253,254,255,255,255,248,249,251,253,254,255,255,255,224,225,227,229,230,231,231,231,232,233,235,237,238,239,239,239,248,249,251,253,254,255,255,255,248,249,251,253,254,255,255,255,224,225,227,229,230,231,231,231,232,233,235,237,238,239,239,239,248,249,251,253,254,255,255,255,248,249,251,253,254,255,255,255,0,1,3,5,7,7,7,7,8,9,11,13,15,15,15,15,24,25,27,29,31,31,31,31,24,25,27,29,31,31,31,31,32,33,35,37,39,39,39,39,40,41,43,45,47,47,47,47,56,57,59,61,63,63,63,63,56,57,59,61,63,63,63,63,96,97,99,101,103,103,103,103,104,105,107,109,111,111,111,111,120,121,123,125,127,127,127,127,120,121,123,125,127,127,127,127,160,161,163,165,167,167,167,167,168,169,171,173,175,175,175,175,184,185,187,189,191,191,191,191,184,185,187,189,191,191,191,191,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,0,1,3,5,7,7,7,7,8,9,11,13,15,15,15,15,24,25,27,29,31,31,31,31,24,25,27,29,31,31,31,31,32,33,35,37,39,39,39,39,40,41,43,45,47,47,47,47,56,57,59,61,63,63,63,63,56,57,59,61,63,63,63,63,96,97,99,101,103,103,103,103,104,105,107,109,111,111,111,111,120,121,123,125,127,127,127,127,120,121,123,125,127,127,127,127,160,161,163,165,167,167,167,167,168,169,171,173,175,175,175,175,184,185,187,189,191,191,191,191,184,185,187,189,191,191,191,191,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,0,2,3,5,7,7,7,7,16,18,19,21,23,23,23,23,24,26,27,29,31,31,31,31,24,26,27,29,31,31,31,31,64,66,67,69,71,71,71,71,80,82,83,85,87,87,87,87,88,90,91,93,95,95,95,95,88,90,91,93,95,95,95,95,96,98,99,101,103,103,103,103,112,114,115,117,119,119,119,119,120,122,123,125,127,127,127,127,120,122,123,125,127,127,127,127,160,162,163,165,167,167,167,167,176,178,179,181,183,183,183,183,184,186,187,189,191,191,191,191,184,186,187,189,191,191,191,191,224,226,227,229,231,231,231,231,240,242,243,245,247,247,247,247,248,250,251,253,255,255,255,255,248,250,251,253,255,255,255,255,224,226,227,229,231,231,231,231,240,242,243,245,247,247,247,247,248,250,251,253,255,255,255,255,248,250,251,253,255,255,255,255,224,226,227,229,231,231,231,231,240,242,243,245,247,247,247,247,248,250,251,253,255,255,255,255,248,250,251,253,255,255,255,255,224,226,227,229,231,231,231,231,240,242,243,245,247,247,247,247,248,250,251,253,255,255,255,255,248,250,251,253,255,255,255,255,0,2,4,5,7,7,7,7,16,18,20,21,23,23,23,23,24,26,28,29,31,31,31,31,24,26,28,29,31,31,31,31,64,66,68,69,71,71,71,71,80,82,84,85,87,87,87,87,88,90,92,93,95,95,95,95,88,90,92,93,95,95,95,95,128,130,132,133,135,135,135,135,144,146,148,149,151,151,151,151,152,154,156,157,159,159,159,159,152,154,156,157,159,159,159,159,160,162,164,165,167,167,167,167,176,178,180,181,183,183,183,183,184,186,188,189,191,191,191,191,184,186,188,189,191,191,191,191,224,226,228,229,231,231,231,231,240,242,244,245,247,247,247,247,248,250,252,253,255,255,255,255,248,250,252,253,255,255,255,255,224,226,228,229,231,231,231,231,240,242,244,245,247,247,247,247,248,250,252,253,255,255,255,255,248,250,252,253,255,255,255,255,224,226,228,229,231,231,231,231,240,242,244,245,247,247,247,247,248,250,252,253,255,255,255,255,248,250,252,253,255,255,255,255,224,226,228,229,231,231,231,231,240,242,244,245,247,247,247,247,248,250,252,253,255,255,255,255,248,250,252,253,255,255,255,255 - 5 D1:FF53 - - - - - 6 D1:FF53 - - - - ; sin LUT , this lut shouldn't cross 64K boundary ! - 7 D1:FF53 - - - - VX_SIN_LUT_DATA: - 8 D1:FF53 - - - - VX_SIN_TABLE_SIZE=512 - 9 D1:FF53 00 65 C9 2E + 5 D1:FF6F - - - - + 6 D1:FF6F - - - - ; sin LUT , this lut shouldn't cross 64K boundary ! + 7 D1:FF6F - - - - VX_SIN_LUT_DATA: + 8 D1:FF6F - - - - VX_SIN_TABLE_SIZE=512 + 9 D1:FF6F 00 65 C9 2E 92 F7 5B C0 .db 0,101,201,46,146,247,91,192 - 10 D1:FF5B 24 88 ED 51 + 10 D1:FF77 24 88 ED 51 B5 1A 7E E2 .db 36,136,237,81,181,26,126,226 - 11 D1:FF63 46 AA 0E 72 + 11 D1:FF7F 46 AA 0E 72 D6 39 9D 01 .db 70,170,14,114,214,57,157,1 - 12 D1:FF6B 64 C7 2B 8E + 12 D1:FF87 64 C7 2B 8E F1 54 B7 1A .db 100,199,43,142,241,84,183,26 - 13 D1:FF73 7C DF 41 A4 + 13 D1:FF8F 7C DF 41 A4 06 68 CA 2B .db 124,223,65,164,6,104,202,43 - 14 D1:FF7B 8D EE 50 B1 + 14 D1:FF97 8D EE 50 B1 12 73 D3 34 .db 141,238,80,177,18,115,211,52 - 15 D1:FF83 94 F4 54 B4 + 15 D1:FF9F 94 F4 54 B4 13 73 D2 31 .db 148,244,84,180,19,115,210,49 - 16 D1:FF8B 90 EE 4C AB + 16 D1:FFA7 90 EE 4C AB 09 66 C4 21 .db 144,238,76,171,9,102,196,33 - 17 D1:FF93 7E DB 37 93 + 17 D1:FFAF 7E DB 37 93 EF 4B A7 02 .db 126,219,55,147,239,75,167,2 - 18 D1:FF9B 5D B8 12 6C + 18 D1:FFB7 5D B8 12 6C C6 20 79 D3 .db 93,184,18,108,198,32,121,211 - 19 D1:FFA3 2B 84 DC 34 + 19 D1:FFBF 2B 84 DC 34 8C E3 3A 91 .db 43,132,220,52,140,227,58,145 - 20 D1:FFAB E7 3D 93 E8 + 20 D1:FFC7 E7 3D 93 E8 3D 92 E7 3B .db 231,61,147,232,61,146,231,59 - 21 D1:FFB3 8E E2 35 88 + 21 D1:FFCF 8E E2 35 88 DA 2C 7E CF .db 142,226,53,136,218,44,126,207 - 22 D1:FFBB 20 71 C1 11 + 22 D1:FFD7 20 71 C1 11 60 AF FE 4C .db 32,113,193,17,96,175,254,76 - 23 D1:FFC3 9A E7 35 81 + 23 D1:FFDF 9A E7 35 81 CE 1A 65 B0 .db 154,231,53,129,206,26,101,176 - 24 D1:FFCB FB 45 8F D8 + 24 D1:FFE7 FB 45 8F D8 21 6A B2 FA .db 251,69,143,216,33,106,178,250 - 25 D1:FFD3 41 88 CF 15 + 25 D1:FFEF 41 88 CF 15 5A 9F E4 28 .db 65,136,207,21,90,159,228,40 - 26 D1:FFDB 6C AF F2 34 + 26 D1:FFF7 6C AF F2 34 76 B8 F9 39 .db 108,175,242,52,118,184,249,57 - 27 D1:FFE3 79 B9 F8 36 + 27 D1:FFFF 79 B9 F8 36 74 B2 EF 2C .db 121,185,248,54,116,178,239,44 - 28 D1:FFEB 68 A3 DF 19 + 28 D2:0007 68 A3 DF 19 53 8D C6 FF .db 104,163,223,25,83,141,198,255 - 29 D1:FFF3 37 6E A5 DC + 29 D2:000F 37 6E A5 DC 12 48 7D B1 .db 55,110,165,220,18,72,125,177 - 30 D1:FFFB E5 18 4B 7E + 30 D2:0017 E5 18 4B 7E B0 E1 12 42 .db 229,24,75,126,176,225,18,66 - 31 D2:0003 71 A1 CF FD + 31 D2:001F 71 A1 CF FD 2B 58 84 B0 .db 113,161,207,253,43,88,132,176 - 32 D2:000B DB 06 30 59 + 32 D2:0027 DB 06 30 59 82 AB D3 FA .db 219,6,48,89,130,171,211,250 - 33 D2:0013 21 47 6D 92 + 33 D2:002F 21 47 6D 92 B6 DA FD 20 .db 33,71,109,146,182,218,253,32 - 34 D2:001B 42 64 85 A5 + 34 D2:0037 42 64 85 A5 C5 E4 03 21 .db 66,100,133,165,197,228,3,33 - 35 D2:0023 3F 5B 78 93 + 35 D2:003F 3F 5B 78 93 AF C9 E3 FC .db 63,91,120,147,175,201,227,252 - 36 D2:002B 15 2D 45 5C + 36 D2:0047 15 2D 45 5C 72 88 9D B1 .db 21,45,69,92,114,136,157,177 - 37 D2:0033 C5 D8 EB FD + 37 D2:004F C5 D8 EB FD 0F 20 30 40 .db 197,216,235,253,15,32,48,64 - 38 D2:003B 4F 5D 6B 78 + 38 D2:0057 4F 5D 6B 78 85 91 9C A7 .db 79,93,107,120,133,145,156,167 - 39 D2:0043 B1 BB C4 CC + 39 D2:005F B1 BB C4 CC D4 DB E1 E7 .db 177,187,196,204,212,219,225,231 - 40 D2:004B EC F1 F5 F8 + 40 D2:0067 EC F1 F5 F8 FB FD FF 00 .db 236,241,245,248,251,253,255,0 - 41 D2:0053 00 00 00 01 + 41 D2:006F 00 00 00 01 01 01 02 02 .db 0,0,0,1,1,1,2,2 - 42 D2:005B 03 03 03 04 + 42 D2:0077 03 03 03 04 04 05 05 05 .db 3,3,3,4,4,5,5,5 - 43 D2:0063 06 06 07 07 + 43 D2:007F 06 06 07 07 07 08 08 09 .db 6,6,7,7,7,8,8,9 - 44 D2:006B 09 09 0A 0A + 44 D2:0087 09 09 0A 0A 0A 0B 0B 0C .db 9,9,10,10,10,11,11,12 - 45 D2:0073 0C 0C 0D 0D + 45 D2:008F 0C 0C 0D 0D 0E 0E 0E 0F .db 12,12,13,13,14,14,14,15 - 46 D2:007B 0F 0F 10 10 + 46 D2:0097 0F 0F 10 10 11 11 11 12 .db 15,15,16,16,17,17,17,18 - 47 D2:0083 12 12 13 13 + 47 D2:009F 12 12 13 13 14 14 14 15 .db 18,18,19,19,20,20,20,21 - 48 D2:008B 15 15 16 16 + 48 D2:00A7 15 15 16 16 17 17 17 18 .db 21,21,22,22,23,23,23,24 - 49 D2:0093 18 18 19 19 + 49 D2:00AF 18 18 19 19 19 1A 1A 1B .db 24,24,25,25,25,26,26,27 - 50 D2:009B 1B 1B 1C 1C + 50 D2:00B7 1B 1B 1C 1C 1C 1D 1D 1D .db 27,27,28,28,28,29,29,29 - 51 D2:00A3 1E 1E 1E 1F + 51 D2:00BF 1E 1E 1E 1F 1F 1F 20 20 .db 30,30,30,31,31,31,32,32 - 52 D2:00AB 20 21 21 21 + 52 D2:00C7 20 21 21 21 22 22 22 23 .db 32,33,33,33,34,34,34,35 - 53 D2:00B3 23 23 24 24 + 53 D2:00CF 23 23 24 24 24 25 25 25 .db 35,35,36,36,36,37,37,37 - 54 D2:00BB 26 26 26 27 + 54 D2:00D7 26 26 26 27 27 27 27 28 .db 38,38,38,39,39,39,39,40 - 55 D2:00C3 28 28 29 29 + 55 D2:00DF 28 28 29 29 29 2A 2A 2A .db 40,40,41,41,41,42,42,42 - 56 D2:00CB 2A 2B 2B 2B + 56 D2:00E7 2A 2B 2B 2B 2C 2C 2C 2C .db 42,43,43,43,44,44,44,44 - 57 D2:00D3 2D 2D 2D 2E + 57 D2:00EF 2D 2D 2D 2E 2E 2E 2E 2F .db 45,45,45,46,46,46,46,47 - 58 D2:00DB 2F 2F 2F 30 + 58 D2:00F7 2F 2F 2F 30 30 30 30 31 .db 47,47,47,48,48,48,48,49 - 59 D2:00E3 31 31 31 32 + 59 D2:00FF 31 31 31 32 32 32 32 33 .db 49,49,49,50,50,50,50,51 - 60 D2:00EB 33 33 33 34 + 60 D2:0107 33 33 33 34 34 34 34 34 .db 51,51,51,52,52,52,52,52 - 61 D2:00F3 35 35 35 35 + 61 D2:010F 35 35 35 35 36 36 36 36 .db 53,53,53,53,54,54,54,54 - 62 D2:00FB 36 37 37 37 + 62 D2:0117 36 37 37 37 37 37 38 38 .db 54,55,55,55,55,55,56,56 - 63 D2:0103 38 38 38 38 + 63 D2:011F 38 38 38 38 39 39 39 39 .db 56,56,56,56,57,57,57,57 - 64 D2:010B 39 3A 3A 3A + 64 D2:0127 39 3A 3A 3A 3A 3A 3A 3A .db 57,58,58,58,58,58,58,58 - 65 D2:0113 3B 3B 3B 3B + 65 D2:012F 3B 3B 3B 3B 3B 3B 3B 3C .db 59,59,59,59,59,59,59,60 - 66 D2:011B 3C 3C 3C 3C + 66 D2:0137 3C 3C 3C 3C 3C 3C 3D 3D .db 60,60,60,60,60,60,61,61 - 67 D2:0123 3D 3D 3D 3D + 67 D2:013F 3D 3D 3D 3D 3D 3D 3D 3D .db 61,61,61,61,61,61,61,61 - 68 D2:012B 3E 3E 3E 3E + 68 D2:0147 3E 3E 3E 3E 3E 3E 3E 3E .db 62,62,62,62,62,62,62,62 - 69 D2:0133 3E 3E 3E 3E + 69 D2:014F 3E 3E 3E 3E 3F 3F 3F 3F .db 62,62,62,62,63,63,63,63 - 70 D2:013B 3F 3F 3F 3F + 70 D2:0157 3F 3F 3F 3F 3F 3F 3F 3F .db 63,63,63,63,63,63,63,63 - 71 D2:0143 3F 3F 3F 3F + 71 D2:015F 3F 3F 3F 3F 3F 3F 3F 3F .db 63,63,63,63,63,63,63,63 - 72 D2:014B 3F 3F 3F 3F + 72 D2:0167 3F 3F 3F 3F 3F 3F 3F 40 .db 63,63,63,63,63,63,63,64 Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" - 14 D2:0153 - - - - - 15 D2:0153 - - - - ; functions - 16 D2:0153 - - - - - 17 D2:0153 - - - - vxEngineInit: - 18 D2:0153 - - - - ; get indic off - 19 D2:0153 CD 48 08 02 call _RunIndicoff - 20 D2:0157 - - - - ; disable interrupt and start LCD interrupt - 21 D2:0157 CD 74 03 00 call _boot_ClearVRAM - 22 D2:015B F3 - - - di - 23 D2:015C 3A 1C 00 E3 ld a, (VX_LCD_IMSC) - 24 D2:0160 F6 04 - - or %00000100 - 25 D2:0162 32 1C 00 E3 ld (VX_LCD_IMSC), a - 26 D2:0166 - - - - - 27 D2:0166 - - - - ; setup 8bpp mode - 28 D2:0166 3E 27 - - ld a,VX_BPP8 - 29 D2:0168 32 18 00 E3 ld (VX_LCD_CTRL),a - 30 D2:016C - - - - ; load vram buffer - 31 D2:016C 21 00 00 D4 ld hl, VX_FRAMEBUFFER_AUX0 - 32 D2:0170 22 10 00 E3 ld (VX_LCD_BUFFER), hl - 33 D2:0174 21 00 2C D5 ld hl, VX_FRAMEBUFFER_AUX1 - 34 D2:0178 22 14 00 E3 ld (vxFramebuffer), hl - 35 D2:017C - - - - - 36 D2:017C - - - - - 37 D2:017C FD 21 00 00 + 14 D2:016F - - - - + 15 D2:016F - - - - ; functions + 16 D2:016F - - - - + 17 D2:016F - - - - vxEngineInit: + 18 D2:016F - - - - ; get indic off + 19 D2:016F CD 48 08 02 call _RunIndicoff + 20 D2:0173 - - - - ; disable interrupt and start LCD interrupt + 21 D2:0173 CD 74 03 00 call _boot_ClearVRAM + 22 D2:0177 F3 - - - di + 23 D2:0178 3A 1C 00 E3 ld a, (VX_LCD_IMSC) + 24 D2:017C F6 04 - - or %00000100 + 25 D2:017E 32 1C 00 E3 ld (VX_LCD_IMSC), a + 26 D2:0182 - - - - + 27 D2:0182 - - - - ; setup 8bpp mode + 28 D2:0182 3E 27 - - ld a,VX_BPP8 + 29 D2:0184 32 18 00 E3 ld (VX_LCD_CTRL),a + 30 D2:0188 - - - - ; load vram buffer + 31 D2:0188 21 00 00 D4 ld hl, VX_FRAMEBUFFER_AUX0 + 32 D2:018C 22 10 00 E3 ld (VX_LCD_BUFFER), hl + 33 D2:0190 21 00 2C D5 ld hl, VX_FRAMEBUFFER_AUX1 + 34 D2:0194 22 14 00 E3 ld (vxFramebuffer), hl + 35 D2:0198 - - - - + 36 D2:0198 - - - - + 37 D2:0198 FD 21 00 00 D1 - - - ld iy, VX_GEOMETRY_QUEUE - 38 D2:0181 FD 22 A4 BD + 38 D2:019D FD 22 37 BD D1 - - - ld (vxSubmissionQueue), iy - 39 D2:0186 21 00 BE D1 ld hl, VX_BATCH_DATA - 40 D2:018A 22 AA BD D1 ld (vxBatchData), hl - 41 D2:018E B7 - - - or a, a - 42 D2:018F ED 62 - - sbc hl, hl - 43 D2:0191 22 A7 BD D1 ld (vxGeometrySize), hl - 44 D2:0195 - - - - ;; ld hl, 0E00005h - 45 D2:0195 - - - - ;;; ld (hl), 2 ; Set flash wait states to 5 + 1 = 6 (total access time = 7) - 46 D2:0195 CD B2 C4 D1 call vxCreateMemoryPool - 47 D2:0199 - - - - - 48 D2:0199 21 79 88 D1 ld hl,0D18879h - 49 D2:019D 11 11 06 C9 ld de,0C90611h - 50 D2:01A1 ED 1F - - ld (hl),de - 51 D2:01A3 2B - - - dec hl - 52 D2:01A4 36 ED - - ld (hl),0EDh - 53 D2:01A6 E5 - - - push hl - 54 D2:01A7 14 - - - inc d - 55 D2:01A8 CD 78 88 D1 call 0D18878h - 56 D2:01AC E1 - - - pop hl - 57 D2:01AD - - - - - 58 D2:01AD - - - - #define VX_COLOR_LUT $D00000 - 59 D2:01AD - - - - #define VX_SIN_TABLE $D02000 - 60 D2:01AD - - - - - 61 D2:01AD 21 53 DF D1 ld hl, VX_COLOR_LUT_DATA - 62 D2:01B1 11 00 00 D0 ld de, VX_COLOR_LUT - 63 D2:01B5 01 00 20 00 ld bc, 8192 - 64 D2:01B9 ED B0 - - ldir - 65 D2:01BB 21 53 FF D1 ld hl, VX_SIN_LUT_DATA - 66 D2:01BF 11 00 20 D0 ld de, VX_SIN_TABLE - 67 D2:01C3 01 00 02 00 ld bc, 512 - 68 D2:01C7 ED B0 - - ldir - 69 D2:01C9 - - - - - 70 D2:01C9 CD 9A B3 D1 call vxResetPalette - 71 D2:01CD - - - - ; insert stack position - 72 D2:01CD 21 D3 01 D2 ld hl, vxEngineQuit - 73 D2:01D1 E3 - - - ex (sp), hl - 74 D2:01D2 E9 - - - jp (hl) - 75 D2:01D3 - - - - vxEngineQuit: - 76 D2:01D3 3E D0 - - ld a, $D0 - 77 D2:01D5 ED 6D - - .db $ED,$6D - 78 D2:01D7 21 00 00 F5 ld hl,$F50000 - 79 D2:01DB AF - - - xor a ; Mode 0 - 80 D2:01DC 77 - - - ld (hl),a - 81 D2:01DD 2C - - - inc l ; 0F50001h - 82 D2:01DE 36 0F - - ld (hl),15 ; Wait 15*256 APB cycles before scanning each row - 83 D2:01E0 2C - - - inc l ; 0F50002h - 84 D2:01E1 AF - - - xor a - 85 D2:01E2 77 - - - ld (hl),a - 86 D2:01E3 2C - - - inc l ; 0F50003h - 87 D2:01E4 36 0F - - ld (hl),15 ; Wait 15 APB cycles before each scan - 88 D2:01E6 2C - - - inc l ; 0F50004h - 89 D2:01E7 3E 08 - - ld a,8 ; Number of rows to scan - 90 D2:01E9 77 - - - ld (hl),a - 91 D2:01EA 2C - - - inc l ; 0F50005h - 92 D2:01EB 77 - - - ld (hl),a ; Number of columns to scan - 93 D2:01EC FD 21 80 00 + 39 D2:01A2 21 00 BE D1 ld hl, VX_BATCH_DATA + 40 D2:01A6 22 3D BD D1 ld (vxBatchData), hl + 41 D2:01AA B7 - - - or a, a + 42 D2:01AB ED 62 - - sbc hl, hl + 43 D2:01AD 22 3A BD D1 ld (vxGeometrySize), hl + 44 D2:01B1 - - - - ;; ld hl, 0E00005h + 45 D2:01B1 - - - - ;;; ld (hl), 2 ; Set flash wait states to 5 + 1 = 6 (total access time = 7) + 46 D2:01B1 CD CE C4 D1 call vxCreateMemoryPool + 47 D2:01B5 - - - - + 48 D2:01B5 21 79 88 D1 ld hl,0D18879h + 49 D2:01B9 11 11 06 C9 ld de,0C90611h + 50 D2:01BD ED 1F - - ld (hl),de + 51 D2:01BF 2B - - - dec hl + 52 D2:01C0 36 ED - - ld (hl),0EDh + 53 D2:01C2 E5 - - - push hl + 54 D2:01C3 14 - - - inc d + 55 D2:01C4 CD 78 88 D1 call 0D18878h + 56 D2:01C8 E1 - - - pop hl + 57 D2:01C9 - - - - + 58 D2:01C9 - - - - #define VX_COLOR_LUT $D00000 + 59 D2:01C9 - - - - #define VX_SIN_TABLE $D02000 + 60 D2:01C9 - - - - + 61 D2:01C9 21 6F DF D1 ld hl, VX_COLOR_LUT_DATA + 62 D2:01CD 11 00 00 D0 ld de, VX_COLOR_LUT + 63 D2:01D1 01 00 20 00 ld bc, 8192 + 64 D2:01D5 ED B0 - - ldir + 65 D2:01D7 21 6F FF D1 ld hl, VX_SIN_LUT_DATA + 66 D2:01DB 11 00 20 D0 ld de, VX_SIN_TABLE + 67 D2:01DF 01 00 02 00 ld bc, 512 + 68 D2:01E3 ED B0 - - ldir + 69 D2:01E5 - - - - + 70 D2:01E5 CD 2D B3 D1 call vxResetPalette + 71 D2:01E9 - - - - ; insert stack position + 72 D2:01E9 21 EF 01 D2 ld hl, vxEngineQuit + 73 D2:01ED E3 - - - ex (sp), hl + 74 D2:01EE E9 - - - jp (hl) + 75 D2:01EF - - - - vxEngineQuit: + 76 D2:01EF 3E D0 - - ld a, $D0 + 77 D2:01F1 ED 6D - - .db $ED,$6D + 78 D2:01F3 21 00 00 F5 ld hl,$F50000 + 79 D2:01F7 AF - - - xor a ; Mode 0 + 80 D2:01F8 77 - - - ld (hl),a + 81 D2:01F9 2C - - - inc l ; 0F50001h + 82 D2:01FA 36 0F - - ld (hl),15 ; Wait 15*256 APB cycles before scanning each row + 83 D2:01FC 2C - - - inc l ; 0F50002h + 84 D2:01FD AF - - - xor a + 85 D2:01FE 77 - - - ld (hl),a + 86 D2:01FF 2C - - - inc l ; 0F50003h + 87 D2:0200 36 0F - - ld (hl),15 ; Wait 15 APB cycles before each scan + 88 D2:0202 2C - - - inc l ; 0F50004h + 89 D2:0203 3E 08 - - ld a,8 ; Number of rows to scan + 90 D2:0205 77 - - - ld (hl),a + 91 D2:0206 2C - - - inc l ; 0F50005h + 92 D2:0207 77 - - - ld (hl),a ; Number of columns to scan + 93 D2:0208 FD 21 80 00 D0 - - - ld iy, OS__FLAGS - 94 D2:01F1 3E 2D - - ld a, VX_BPP16 - 95 D2:01F3 32 18 00 E3 ld (VX_LCD_CTRL),a - 96 D2:01F7 21 00 00 D4 ld hl, VX_FRAMEBUFFER_AUX0 - 97 D2:01FB 22 10 00 E3 ld (VX_LCD_BUFFER), hl - 98 D2:01FF - - - - - 99 D2:01FF CD 0B C5 D1 call vxDestroyMemoryPool - 100 D2:0203 - - - - - 101 D2:0203 CD 28 08 02 call _HomeUp - 102 D2:0207 CD 14 08 02 call _Clrscrn - 103 D2:020B CD 3C 1A 02 call _DrawStatusBar - 104 D2:020F CD 44 08 02 call _RunIndicon - 105 D2:0213 FB - - - ei - 106 D2:0214 C3 50 1A 02 jp _DrawBatteryIndicator + 94 D2:020D 3E 2D - - ld a, VX_BPP16 + 95 D2:020F 32 18 00 E3 ld (VX_LCD_CTRL),a + 96 D2:0213 21 00 00 D4 ld hl, VX_FRAMEBUFFER_AUX0 + 97 D2:0217 22 10 00 E3 ld (VX_LCD_BUFFER), hl + 98 D2:021B - - - - + 99 D2:021B CD 27 C5 D1 call vxDestroyMemoryPool + 100 D2:021F - - - - + 101 D2:021F CD 28 08 02 call _HomeUp + 102 D2:0223 CD 14 08 02 call _Clrscrn + 103 D2:0227 CD 3C 1A 02 call _DrawStatusBar + 104 D2:022B CD 44 08 02 call _RunIndicon + 105 D2:022F FB - - - ei + 106 D2:0230 C3 50 1A 02 jp _DrawBatteryIndicator Listing for file "example.ez80" - 152 D2:0218 - - - - #include "graphics_lib.asm" + 157 D2:0234 - - - - #include "graphics_lib.asm" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\graphics_lib.asm" - 1 D2:0218 - - - - ; quickly hacked C routines to be able to display digits - 2 D2:0218 - - - - - 3 D2:0218 - - - - - 4 D2:0218 - - - - ;------------------------------------------------------------------------------- - 5 D2:0218 - - - - ; Used throughout the library - 6 D2:0218 - - - - lcdSize equ lcdWidth*lcdHeight - 7 D2:0218 - - - - currDrawBuffer equ 0E30014h - 8 D2:0218 - - - - _GetTextX: - 9 D2:0218 - - - - ; Gets the X position of the text cursor - 10 D2:0218 - - - - ; Arguments: - 11 D2:0218 - - - - ; None - 12 D2:0218 - - - - ; Returns: - 13 D2:0218 - - - - ; X Text cursor posistion - 14 D2:0218 2A 75 02 D2 ld hl,(TextXPos_SMC) - 15 D2:021C C9 - - - ret - 16 D2:021D - - - - - 17 D2:021D - - - - ;------------------------------------------------------------------------------- - 18 D2:021D - - - - _GetTextY: - 19 D2:021D - - - - ; Gets the Y position of the text cursor - 20 D2:021D - - - - ; Arguments: - 21 D2:021D - - - - ; None - 22 D2:021D - - - - ; Returns: - 23 D2:021D - - - - ; Y Text cursor posistion - 24 D2:021D 3A 83 02 D2 ld a,(TextYPos_SMC) - 25 D2:0221 C9 - - - ret - 26 D2:0222 - - - - - 27 D2:0222 - - - - ;------------------------------------------------------------------------------- - 28 D2:0222 - - - - _SetTextBGColorC: - 29 D2:0222 - - - - ; Sets the background text color for text routines - 30 D2:0222 - - - - ; Arguments: - 31 D2:0222 - - - - ; arg0 : Color index to set BG to - 32 D2:0222 - - - - ; Returns: - 33 D2:0222 - - - - ; Previous text color palette index - 34 D2:0222 E1 - - - pop hl - 35 D2:0223 D1 - - - pop de - 36 D2:0224 D5 - - - push de - 37 D2:0225 E5 - - - push hl - 38 D2:0226 21 B4 02 D2 ld hl,TextBGColor_SMC - 39 D2:022A 7E - - - ld a,(hl) - 40 D2:022B 73 - - - ld (hl),e - 41 D2:022C C9 - - - ret - 42 D2:022D - - - - - 43 D2:022D - - - - ;------------------------------------------------------------------------------- - 44 D2:022D - - - - _SetTextFGColorC: - 45 D2:022D - - - - ; Sets the foreground text color for text routines - 46 D2:022D - - - - ; Arguments: - 47 D2:022D - - - - ; arg0 : Color index to set FG to - 48 D2:022D - - - - ; Returns: - 49 D2:022D - - - - ; Previous text color palette index - 50 D2:022D E1 - - - pop hl - 51 D2:022E D1 - - - pop de - 52 D2:022F D5 - - - push de - 53 D2:0230 E5 - - - push hl - 54 D2:0231 21 BA 02 D2 ld hl,TextFGColor_SMC - 55 D2:0235 7E - - - ld a,(hl) - 56 D2:0236 73 - - - ld (hl),e - 57 D2:0237 C9 - - - ret - 58 D2:0238 - - - - - 59 D2:0238 - - - - ;------------------------------------------------------------------------------- - 60 D2:0238 - - - - _SetTextTransparentColorC: - 61 D2:0238 - - - - ; Sets the transparency text color for text routines - 62 D2:0238 - - - - ; Arguments: - 63 D2:0238 - - - - ; arg0 : Color index to set transparent text to - 64 D2:0238 - - - - ; Returns: - 65 D2:0238 - - - - ; Previous text color palette index - 66 D2:0238 E1 - - - pop hl - 67 D2:0239 D1 - - - pop de - 68 D2:023A D5 - - - push de - 69 D2:023B E5 - - - push hl - 70 D2:023C 21 BC 02 D2 ld hl,TextTransColor_SMC - 71 D2:0240 7E - - - ld a,(hl) - 72 D2:0241 73 - - - ld (hl),e - 73 D2:0242 C9 - - - ret - 74 D2:0243 - - - - - 75 D2:0243 - - - - ;------------------------------------------------------------------------------- - 76 D2:0243 - - - - _SetTextXY: - 77 D2:0243 - - - - ; Sets the transparency text color for text routines - 78 D2:0243 - - - - ; Arguments: - 79 D2:0243 - - - - ; arg0 : Text X Pos - 80 D2:0243 - - - - ; arg1 : Text Y Pos - 81 D2:0243 - - - - ; Returns: - 82 D2:0243 - - - - ; None - 83 D2:0243 21 03 00 00 ld hl,3 - 84 D2:0247 39 - - - add hl,sp - 85 D2:0248 11 75 02 D2 ld de,TextXPos_SMC - 86 D2:024C ED A0 - - ldi - 87 D2:024E ED A0 - - ldi - 88 D2:0250 23 - - - inc hl - 89 D2:0251 7E - - - ld a,(hl) - 90 D2:0252 32 83 02 D2 ld (TextYPos_SMC),a - 91 D2:0256 C9 - - - ret - 92 D2:0257 - - - - _PrintChar: - 93 D2:0257 - - - - ; Places a character at the current cursor position - 94 D2:0257 - - - - ; Arguments: - 95 D2:0257 - - - - ; arg0 : Character to draw - 96 D2:0257 - - - - ; Returns: - 97 D2:0257 - - - - ; None - 98 D2:0257 FD 21 00 00 + 1 D2:0234 - - - - ; quickly hacked C routines to be able to display digits + 2 D2:0234 - - - - + 3 D2:0234 - - - - + 4 D2:0234 - - - - ;------------------------------------------------------------------------------- + 5 D2:0234 - - - - ; Used throughout the library + 6 D2:0234 - - - - lcdSize equ lcdWidth*lcdHeight + 7 D2:0234 - - - - currDrawBuffer equ 0E30014h + 8 D2:0234 - - - - _GetTextX: + 9 D2:0234 - - - - ; Gets the X position of the text cursor + 10 D2:0234 - - - - ; Arguments: + 11 D2:0234 - - - - ; None + 12 D2:0234 - - - - ; Returns: + 13 D2:0234 - - - - ; X Text cursor posistion + 14 D2:0234 2A 91 02 D2 ld hl,(TextXPos_SMC) + 15 D2:0238 C9 - - - ret + 16 D2:0239 - - - - + 17 D2:0239 - - - - ;------------------------------------------------------------------------------- + 18 D2:0239 - - - - _GetTextY: + 19 D2:0239 - - - - ; Gets the Y position of the text cursor + 20 D2:0239 - - - - ; Arguments: + 21 D2:0239 - - - - ; None + 22 D2:0239 - - - - ; Returns: + 23 D2:0239 - - - - ; Y Text cursor posistion + 24 D2:0239 3A 9F 02 D2 ld a,(TextYPos_SMC) + 25 D2:023D C9 - - - ret + 26 D2:023E - - - - + 27 D2:023E - - - - ;------------------------------------------------------------------------------- + 28 D2:023E - - - - _SetTextBGColorC: + 29 D2:023E - - - - ; Sets the background text color for text routines + 30 D2:023E - - - - ; Arguments: + 31 D2:023E - - - - ; arg0 : Color index to set BG to + 32 D2:023E - - - - ; Returns: + 33 D2:023E - - - - ; Previous text color palette index + 34 D2:023E E1 - - - pop hl + 35 D2:023F D1 - - - pop de + 36 D2:0240 D5 - - - push de + 37 D2:0241 E5 - - - push hl + 38 D2:0242 21 D0 02 D2 ld hl,TextBGColor_SMC + 39 D2:0246 7E - - - ld a,(hl) + 40 D2:0247 73 - - - ld (hl),e + 41 D2:0248 C9 - - - ret + 42 D2:0249 - - - - + 43 D2:0249 - - - - ;------------------------------------------------------------------------------- + 44 D2:0249 - - - - _SetTextFGColorC: + 45 D2:0249 - - - - ; Sets the foreground text color for text routines + 46 D2:0249 - - - - ; Arguments: + 47 D2:0249 - - - - ; arg0 : Color index to set FG to + 48 D2:0249 - - - - ; Returns: + 49 D2:0249 - - - - ; Previous text color palette index + 50 D2:0249 E1 - - - pop hl + 51 D2:024A D1 - - - pop de + 52 D2:024B D5 - - - push de + 53 D2:024C E5 - - - push hl + 54 D2:024D 21 D6 02 D2 ld hl,TextFGColor_SMC + 55 D2:0251 7E - - - ld a,(hl) + 56 D2:0252 73 - - - ld (hl),e + 57 D2:0253 C9 - - - ret + 58 D2:0254 - - - - + 59 D2:0254 - - - - ;------------------------------------------------------------------------------- + 60 D2:0254 - - - - _SetTextTransparentColorC: + 61 D2:0254 - - - - ; Sets the transparency text color for text routines + 62 D2:0254 - - - - ; Arguments: + 63 D2:0254 - - - - ; arg0 : Color index to set transparent text to + 64 D2:0254 - - - - ; Returns: + 65 D2:0254 - - - - ; Previous text color palette index + 66 D2:0254 E1 - - - pop hl + 67 D2:0255 D1 - - - pop de + 68 D2:0256 D5 - - - push de + 69 D2:0257 E5 - - - push hl + 70 D2:0258 21 D8 02 D2 ld hl,TextTransColor_SMC + 71 D2:025C 7E - - - ld a,(hl) + 72 D2:025D 73 - - - ld (hl),e + 73 D2:025E C9 - - - ret + 74 D2:025F - - - - + 75 D2:025F - - - - ;------------------------------------------------------------------------------- + 76 D2:025F - - - - _SetTextXY: + 77 D2:025F - - - - ; Sets the transparency text color for text routines + 78 D2:025F - - - - ; Arguments: + 79 D2:025F - - - - ; arg0 : Text X Pos + 80 D2:025F - - - - ; arg1 : Text Y Pos + 81 D2:025F - - - - ; Returns: + 82 D2:025F - - - - ; None + 83 D2:025F 21 03 00 00 ld hl,3 + 84 D2:0263 39 - - - add hl,sp + 85 D2:0264 11 91 02 D2 ld de,TextXPos_SMC + 86 D2:0268 ED A0 - - ldi + 87 D2:026A ED A0 - - ldi + 88 D2:026C 23 - - - inc hl + 89 D2:026D 7E - - - ld a,(hl) + 90 D2:026E 32 9F 02 D2 ld (TextYPos_SMC),a + 91 D2:0272 C9 - - - ret + 92 D2:0273 - - - - _PrintChar: + 93 D2:0273 - - - - ; Places a character at the current cursor position + 94 D2:0273 - - - - ; Arguments: + 95 D2:0273 - - - - ; arg0 : Character to draw + 96 D2:0273 - - - - ; Returns: + 97 D2:0273 - - - - ; None + 98 D2:0273 FD 21 00 00 00 - - - ld iy,0 - 99 D2:025C FD 39 - - add iy,sp - 100 D2:025E FD 7E 03 - ld a,(iy+3) - 101 D2:0261 - - - - _PrintChar_ASM: - 102 D2:0261 DD E5 - - push ix ; save stack pointer - 103 D2:0263 E5 - - - push hl ; save hl pointer if string - 104 D2:0264 5F - - - ld e,a ; e = char - 105 D2:0265 - - - - MonoFlag_SMC =$+1 - 106 D2:0265 3E 00 - - ld a,0 - 107 D2:0267 B7 - - - or a,a - 108 D2:0268 20 0A - - jr nz,+_ - 109 D2:026A ED 62 - - sbc hl,hl - 110 D2:026C 6B - - - ld l,e ; hl = character - 111 D2:026D ED 4B 23 05 + 99 D2:0278 FD 39 - - add iy,sp + 100 D2:027A FD 7E 03 - ld a,(iy+3) + 101 D2:027D - - - - _PrintChar_ASM: + 102 D2:027D DD E5 - - push ix ; save stack pointer + 103 D2:027F E5 - - - push hl ; save hl pointer if string + 104 D2:0280 5F - - - ld e,a ; e = char + 105 D2:0281 - - - - MonoFlag_SMC =$+1 + 106 D2:0281 3E 00 - - ld a,0 + 107 D2:0283 B7 - - - or a,a + 108 D2:0284 20 0A - - jr nz,+_ + 109 D2:0286 ED 62 - - sbc hl,hl + 110 D2:0288 6B - - - ld l,e ; hl = character + 111 D2:0289 ED 4B 3F 05 D2 - - - ld bc,(CharSpacing_ASM) - 112 D2:0272 09 - - - add hl,bc - 113 D2:0273 7E - - - ld a,(hl) ; a = char width - 114 D2:0274 - - - - TextXPos_SMC = $+1 - 115 D2:0274 01 00 00 00 _: ld bc,0 - 116 D2:0278 ED 62 - - sbc hl,hl - 117 D2:027A 6F - - - ld l,a - 118 D2:027B DD 67 - - ld ixh,a ; ixh = char width - 119 D2:027D 09 - - - add hl,bc - 120 D2:027E 22 75 02 D2 ld (TextXPos_SMC),hl - 121 D2:0282 - - - - TextYPos_SMC = $+1 - 122 D2:0282 2E 00 - - ld l,0 - 123 D2:0284 26 A0 - - ld h,lcdWidth/2 - 124 D2:0286 ED 6C - - mlt hl - 125 D2:0288 29 - - - add hl,hl - 126 D2:0289 09 - - - add hl,bc - 127 D2:028A ED 4B 14 00 + 112 D2:028E 09 - - - add hl,bc + 113 D2:028F 7E - - - ld a,(hl) ; a = char width + 114 D2:0290 - - - - TextXPos_SMC = $+1 + 115 D2:0290 01 00 00 00 _: ld bc,0 + 116 D2:0294 ED 62 - - sbc hl,hl + 117 D2:0296 6F - - - ld l,a + 118 D2:0297 DD 67 - - ld ixh,a ; ixh = char width + 119 D2:0299 09 - - - add hl,bc + 120 D2:029A 22 91 02 D2 ld (TextXPos_SMC),hl + 121 D2:029E - - - - TextYPos_SMC = $+1 + 122 D2:029E 2E 00 - - ld l,0 + 123 D2:02A0 26 A0 - - ld h,lcdWidth/2 + 124 D2:02A2 ED 6C - - mlt hl + 125 D2:02A4 29 - - - add hl,hl + 126 D2:02A5 09 - - - add hl,bc + 127 D2:02A6 ED 4B 14 00 E3 - - - ld bc,(vxFramebuffer) - 128 D2:028F 09 - - - add hl,bc - 129 D2:0290 EB - - - ex de,hl ; de = draw location - 130 D2:0291 7D - - - ld a,l ; l = character - 131 D2:0292 ED 62 - - sbc hl,hl - 132 D2:0294 6F - - - ld l,a ; hl = character - 133 D2:0295 29 - - - add hl,hl - 134 D2:0296 29 - - - add hl,hl - 135 D2:0297 29 - - - add hl,hl - 136 D2:0298 ED 4B 26 05 + 128 D2:02AB 09 - - - add hl,bc + 129 D2:02AC EB - - - ex de,hl ; de = draw location + 130 D2:02AD 7D - - - ld a,l ; l = character + 131 D2:02AE ED 62 - - sbc hl,hl + 132 D2:02B0 6F - - - ld l,a ; hl = character + 133 D2:02B1 29 - - - add hl,hl + 134 D2:02B2 29 - - - add hl,hl + 135 D2:02B3 29 - - - add hl,hl + 136 D2:02B4 ED 4B 42 05 D2 - - - ld bc,(TextData_ASM) ; get text data array - 137 D2:029D 09 - - - add hl,bc - 138 D2:029E FD 21 00 00 + 137 D2:02B9 09 - - - add hl,bc + 138 D2:02BA FD 21 00 00 00 - - - ld iy,0 - 139 D2:02A3 - - - - UseLargeFont_SMC =$+1 - 140 D2:02A3 3E 00 - - ld a,0 - 141 D2:02A5 B7 - - - or a,a - 142 D2:02A6 20 28 - - jr nz,_PrintLargeFont_ASM - 143 D2:02A8 DD 2E 08 - ld ixl,8 - 144 D2:02AB 4E - - - _: ld c,(hl) ; c = 8 pixels - 145 D2:02AC FD 19 - - add iy,de ; get draw location - 146 D2:02AE ED 13 00 - lea de,iy - 147 D2:02B1 DD 44 - - ld b,ixh - 148 D2:02B3 - - - - TextBGColor_SMC =$+1 - 149 D2:02B3 3E 00 - - _: ld a,0 - 150 D2:02B5 CB 01 - - rlc c - 151 D2:02B7 30 02 - - jr nc,+_ - 152 D2:02B9 - - - - TextFGColor_SMC =$+1 - 153 D2:02B9 3E FF - - ld a,255 - 154 D2:02BB - - - - TextTransColor_SMC =$+1 - 155 D2:02BB FE 00 - - _: cp a,0 ; check if transparent - 156 D2:02BD 28 01 - - jr z,+_ - 157 D2:02BF 12 - - - ld (de),a - 158 D2:02C0 13 - - - _: inc de ; move to next pixel - 159 D2:02C1 10 F0 - - djnz ---_ - 160 D2:02C3 11 40 01 00 ld de,lcdWidth - 161 D2:02C7 23 - - - inc hl - 162 D2:02C8 DD 2D - - dec ixl - 163 D2:02CA 20 DF - - jr nz,----_ - 164 D2:02CC E1 - - - pop hl ; restore hl and stack pointer - 165 D2:02CD DD E1 - - pop ix - 166 D2:02CF C9 - - - ret - 167 D2:02D0 - - - - - 168 D2:02D0 - - - - _PrintLargeFont_ASM: - 169 D2:02D0 DD 2E 10 - ld ixl,16 - 170 D2:02D3 4E - - - _: ld c,(hl) ; c = 8 pixels - 171 D2:02D4 FD 19 - - add iy,de ; get draw location - 172 D2:02D6 ED 13 00 - lea de,iy - 173 D2:02D9 DD 44 - - ld b,ixh - 174 D2:02DB 3A B4 02 D2 _: ld a,(TextBGColor_SMC) - 175 D2:02DF CB 01 - - rlc c - 176 D2:02E1 30 04 - - jr nc,+_ - 177 D2:02E3 3A BA 02 D2 ld a,(TextFGColor_SMC) - 178 D2:02E7 DD BD - - _: cp a,ixl ; check if transparent - 179 D2:02E9 28 03 - - jr z,+_ - 180 D2:02EB 12 - - - ld (de),a - 181 D2:02EC 13 - - - inc de - 182 D2:02ED 12 - - - ld (de),a - 183 D2:02EE 13 - - - _: inc de ; move to next pixel - 184 D2:02EF 10 EA - - djnz ---_ - 185 D2:02F1 11 40 01 00 ld de,lcdWidth - 186 D2:02F5 23 - - - inc hl - 187 D2:02F6 DD 2D - - dec ixl - 188 D2:02F8 20 D9 - - jr nz,----_ - 189 D2:02FA E1 - - - pop hl ; restore hl and stack pointer - 190 D2:02FB DD E1 - - pop ix - 191 D2:02FD C9 - - - ret - 192 D2:02FE - - - - - 193 D2:02FE - - - - ;------------------------------------------------------------------------------- - 194 D2:02FE - - - - _PrintUInt: - 195 D2:02FE - - - - ; Places an unsigned int at the current cursor position - 196 D2:02FE - - - - ; Arguments: - 197 D2:02FE - - - - ; arg0 : Number to print - 198 D2:02FE - - - - ; arg1 : Number of characters to print - 199 D2:02FE - - - - ; Returns: - 200 D2:02FE - - - - ; None - 201 D2:02FE FD 21 00 00 + 139 D2:02BF - - - - UseLargeFont_SMC =$+1 + 140 D2:02BF 3E 00 - - ld a,0 + 141 D2:02C1 B7 - - - or a,a + 142 D2:02C2 20 28 - - jr nz,_PrintLargeFont_ASM + 143 D2:02C4 DD 2E 08 - ld ixl,8 + 144 D2:02C7 4E - - - _: ld c,(hl) ; c = 8 pixels + 145 D2:02C8 FD 19 - - add iy,de ; get draw location + 146 D2:02CA ED 13 00 - lea de,iy + 147 D2:02CD DD 44 - - ld b,ixh + 148 D2:02CF - - - - TextBGColor_SMC =$+1 + 149 D2:02CF 3E 00 - - _: ld a,0 + 150 D2:02D1 CB 01 - - rlc c + 151 D2:02D3 30 02 - - jr nc,+_ + 152 D2:02D5 - - - - TextFGColor_SMC =$+1 + 153 D2:02D5 3E FF - - ld a,255 + 154 D2:02D7 - - - - TextTransColor_SMC =$+1 + 155 D2:02D7 FE 00 - - _: cp a,0 ; check if transparent + 156 D2:02D9 28 01 - - jr z,+_ + 157 D2:02DB 12 - - - ld (de),a + 158 D2:02DC 13 - - - _: inc de ; move to next pixel + 159 D2:02DD 10 F0 - - djnz ---_ + 160 D2:02DF 11 40 01 00 ld de,lcdWidth + 161 D2:02E3 23 - - - inc hl + 162 D2:02E4 DD 2D - - dec ixl + 163 D2:02E6 20 DF - - jr nz,----_ + 164 D2:02E8 E1 - - - pop hl ; restore hl and stack pointer + 165 D2:02E9 DD E1 - - pop ix + 166 D2:02EB C9 - - - ret + 167 D2:02EC - - - - + 168 D2:02EC - - - - _PrintLargeFont_ASM: + 169 D2:02EC DD 2E 10 - ld ixl,16 + 170 D2:02EF 4E - - - _: ld c,(hl) ; c = 8 pixels + 171 D2:02F0 FD 19 - - add iy,de ; get draw location + 172 D2:02F2 ED 13 00 - lea de,iy + 173 D2:02F5 DD 44 - - ld b,ixh + 174 D2:02F7 3A D0 02 D2 _: ld a,(TextBGColor_SMC) + 175 D2:02FB CB 01 - - rlc c + 176 D2:02FD 30 04 - - jr nc,+_ + 177 D2:02FF 3A D6 02 D2 ld a,(TextFGColor_SMC) + 178 D2:0303 DD BD - - _: cp a,ixl ; check if transparent + 179 D2:0305 28 03 - - jr z,+_ + 180 D2:0307 12 - - - ld (de),a + 181 D2:0308 13 - - - inc de + 182 D2:0309 12 - - - ld (de),a + 183 D2:030A 13 - - - _: inc de ; move to next pixel + 184 D2:030B 10 EA - - djnz ---_ + 185 D2:030D 11 40 01 00 ld de,lcdWidth + 186 D2:0311 23 - - - inc hl + 187 D2:0312 DD 2D - - dec ixl + 188 D2:0314 20 D9 - - jr nz,----_ + 189 D2:0316 E1 - - - pop hl ; restore hl and stack pointer + 190 D2:0317 DD E1 - - pop ix + 191 D2:0319 C9 - - - ret + 192 D2:031A - - - - + 193 D2:031A - - - - ;------------------------------------------------------------------------------- + 194 D2:031A - - - - _PrintUInt: + 195 D2:031A - - - - ; Places an unsigned int at the current cursor position + 196 D2:031A - - - - ; Arguments: + 197 D2:031A - - - - ; arg0 : Number to print + 198 D2:031A - - - - ; arg1 : Number of characters to print + 199 D2:031A - - - - ; Returns: + 200 D2:031A - - - - ; None + 201 D2:031A FD 21 00 00 00 - - - ld iy,0 - 202 D2:0303 FD 39 - - add iy,sp - 203 D2:0305 FD 27 03 - ld hl,(iy+3) - 204 D2:0308 FD 4E 06 - ld c,(iy+6) - 205 D2:030B - - - - _PrintUInt_ASM: - 206 D2:030B 3E 08 - - ld a,8 - 207 D2:030D 91 - - - sub a,c - 208 D2:030E D8 - - - ret c - 209 D2:030F 4F - - - ld c,a - 210 D2:0310 06 08 - - ld b,8 - 211 D2:0312 ED 4C - - mlt bc - 212 D2:0314 79 - - - ld a,c - 213 D2:0315 32 1A 03 D2 ld (Offset_SMC),a - 214 D2:0319 - - - - Offset_SMC =$+1 - 215 D2:0319 18 FE - - jr $ - 216 D2:031B 01 80 69 67 ld bc,-10000000 - 217 D2:031F CD 57 03 D2 call Num1 - 218 D2:0323 01 C0 BD F0 ld bc,-1000000 - 219 D2:0327 CD 57 03 D2 call Num1 - 220 D2:032B 01 60 79 FE ld bc,-100000 - 221 D2:032F CD 57 03 D2 call Num1 - 222 D2:0333 01 F0 D8 FF ld bc,-10000 - 223 D2:0337 CD 57 03 D2 call Num1 - 224 D2:033B 01 18 FC FF ld bc,-1000 - 225 D2:033F CD 57 03 D2 call Num1 - 226 D2:0343 01 9C FF FF ld bc,-100 - 227 D2:0347 CD 57 03 D2 call Num1 - 228 D2:034B 01 F6 FF FF ld bc,-10 - 229 D2:034F CD 57 03 D2 call Num1 - 230 D2:0353 01 FF FF FF ld bc,-1 - 231 D2:0357 3E 2F - - Num1: ld a,'0'-1 - 232 D2:0359 3C - - - Num2: inc a - 233 D2:035A 09 - - - add hl,bc - 234 D2:035B 38 FC - - jr c,Num2 - 235 D2:035D ED 42 - - sbc hl,bc - 236 D2:035F C3 61 02 D2 jp _PrintChar_ASM - 237 D2:0363 - - - - - 238 D2:0363 - - - - ;------------------------------------------------------------------------------- - 239 D2:0363 - - - - _PrintInt: - 240 D2:0363 - - - - ; Places an int at the current cursor position - 241 D2:0363 - - - - ; Arguments: - 242 D2:0363 - - - - ; arg0 : Number to print - 243 D2:0363 - - - - ; arg1 : Number of characters to print - 244 D2:0363 - - - - ; Returns: - 245 D2:0363 - - - - ; None - 246 D2:0363 FD 21 00 00 + 202 D2:031F FD 39 - - add iy,sp + 203 D2:0321 FD 27 03 - ld hl,(iy+3) + 204 D2:0324 FD 4E 06 - ld c,(iy+6) + 205 D2:0327 - - - - _PrintUInt_ASM: + 206 D2:0327 3E 08 - - ld a,8 + 207 D2:0329 91 - - - sub a,c + 208 D2:032A D8 - - - ret c + 209 D2:032B 4F - - - ld c,a + 210 D2:032C 06 08 - - ld b,8 + 211 D2:032E ED 4C - - mlt bc + 212 D2:0330 79 - - - ld a,c + 213 D2:0331 32 36 03 D2 ld (Offset_SMC),a + 214 D2:0335 - - - - Offset_SMC =$+1 + 215 D2:0335 18 FE - - jr $ + 216 D2:0337 01 80 69 67 ld bc,-10000000 + 217 D2:033B CD 73 03 D2 call Num1 + 218 D2:033F 01 C0 BD F0 ld bc,-1000000 + 219 D2:0343 CD 73 03 D2 call Num1 + 220 D2:0347 01 60 79 FE ld bc,-100000 + 221 D2:034B CD 73 03 D2 call Num1 + 222 D2:034F 01 F0 D8 FF ld bc,-10000 + 223 D2:0353 CD 73 03 D2 call Num1 + 224 D2:0357 01 18 FC FF ld bc,-1000 + 225 D2:035B CD 73 03 D2 call Num1 + 226 D2:035F 01 9C FF FF ld bc,-100 + 227 D2:0363 CD 73 03 D2 call Num1 + 228 D2:0367 01 F6 FF FF ld bc,-10 + 229 D2:036B CD 73 03 D2 call Num1 + 230 D2:036F 01 FF FF FF ld bc,-1 + 231 D2:0373 3E 2F - - Num1: ld a,'0'-1 + 232 D2:0375 3C - - - Num2: inc a + 233 D2:0376 09 - - - add hl,bc + 234 D2:0377 38 FC - - jr c,Num2 + 235 D2:0379 ED 42 - - sbc hl,bc + 236 D2:037B C3 7D 02 D2 jp _PrintChar_ASM + 237 D2:037F - - - - + 238 D2:037F - - - - ;------------------------------------------------------------------------------- + 239 D2:037F - - - - _PrintInt: + 240 D2:037F - - - - ; Places an int at the current cursor position + 241 D2:037F - - - - ; Arguments: + 242 D2:037F - - - - ; arg0 : Number to print + 243 D2:037F - - - - ; arg1 : Number of characters to print + 244 D2:037F - - - - ; Returns: + 245 D2:037F - - - - ; None + 246 D2:037F FD 21 00 00 00 - - - ld iy,0 - 247 D2:0368 ED 03 00 - lea bc,iy - 248 D2:036B FD 39 - - add iy,sp - 249 D2:036D FD 4E 06 - ld c,(iy+6) - 250 D2:0370 FD 27 03 - ld hl,(iy+3) - 251 D2:0373 FD CB 05 7E bit 7,(iy+5) - 252 D2:0377 28 0E - - jr z,+_ - 253 D2:0379 C5 - - - push bc - 254 D2:037A E5 - - - push hl - 255 D2:037B C1 - - - pop bc - 256 D2:037C ED 62 - - sbc hl,hl - 257 D2:037E ED 42 - - sbc hl,bc - 258 D2:0380 3E 2D - - ld a,'-' - 259 D2:0382 CD 61 02 D2 call _PrintChar_ASM - 260 D2:0386 C1 - - - pop bc - 261 D2:0387 C3 0B 03 D2 _: jp _PrintUInt_ASM - 262 D2:038B - - - - - 263 D2:038B - - - - ;------------------------------------------------------------------------------- - 264 D2:038B - - - - _GetStringWidth: - 265 D2:038B - - - - ; Gets the width of a string - 266 D2:038B - - - - ; Arguments: - 267 D2:038B - - - - ; arg0 : Pointer to string - 268 D2:038B - - - - ; Returns: - 269 D2:038B - - - - ; Width of string in pixels - 270 D2:038B D1 - - - pop de - 271 D2:038C E1 - - - pop hl - 272 D2:038D E5 - - - push hl - 273 D2:038E D5 - - - push de - 274 D2:038F 01 00 00 00 ld bc,0 - 275 D2:0393 7E - - - _: ld a,(hl) - 276 D2:0394 B7 - - - or a,a - 277 D2:0395 28 09 - - jr z,+_ - 278 D2:0397 E5 - - - push hl - 279 D2:0398 CD B0 03 D2 call _GetCharWidth_ASM - 280 D2:039C E1 - - - pop hl - 281 D2:039D 23 - - - inc hl - 282 D2:039E 18 F3 - - jr -_ - 283 D2:03A0 C5 - - - _: push bc - 284 D2:03A1 E1 - - - pop hl - 285 D2:03A2 C9 - - - ret - 286 D2:03A3 - - - - - 287 D2:03A3 - - - - ;------------------------------------------------------------------------------- - 288 D2:03A3 - - - - _GetCharWidth: - 289 D2:03A3 - - - - ; Gets the width of a character - 290 D2:03A3 - - - - ; Arguments: - 291 D2:03A3 - - - - ; arg0 : Character - 292 D2:03A3 - - - - ; Returns: - 293 D2:03A3 - - - - ; Width of character in pixels - 294 D2:03A3 FD 21 00 00 + 247 D2:0384 ED 03 00 - lea bc,iy + 248 D2:0387 FD 39 - - add iy,sp + 249 D2:0389 FD 4E 06 - ld c,(iy+6) + 250 D2:038C FD 27 03 - ld hl,(iy+3) + 251 D2:038F FD CB 05 7E bit 7,(iy+5) + 252 D2:0393 28 0E - - jr z,+_ + 253 D2:0395 C5 - - - push bc + 254 D2:0396 E5 - - - push hl + 255 D2:0397 C1 - - - pop bc + 256 D2:0398 ED 62 - - sbc hl,hl + 257 D2:039A ED 42 - - sbc hl,bc + 258 D2:039C 3E 2D - - ld a,'-' + 259 D2:039E CD 7D 02 D2 call _PrintChar_ASM + 260 D2:03A2 C1 - - - pop bc + 261 D2:03A3 C3 27 03 D2 _: jp _PrintUInt_ASM + 262 D2:03A7 - - - - + 263 D2:03A7 - - - - ;------------------------------------------------------------------------------- + 264 D2:03A7 - - - - _GetStringWidth: + 265 D2:03A7 - - - - ; Gets the width of a string + 266 D2:03A7 - - - - ; Arguments: + 267 D2:03A7 - - - - ; arg0 : Pointer to string + 268 D2:03A7 - - - - ; Returns: + 269 D2:03A7 - - - - ; Width of string in pixels + 270 D2:03A7 D1 - - - pop de + 271 D2:03A8 E1 - - - pop hl + 272 D2:03A9 E5 - - - push hl + 273 D2:03AA D5 - - - push de + 274 D2:03AB 01 00 00 00 ld bc,0 + 275 D2:03AF 7E - - - _: ld a,(hl) + 276 D2:03B0 B7 - - - or a,a + 277 D2:03B1 28 09 - - jr z,+_ + 278 D2:03B3 E5 - - - push hl + 279 D2:03B4 CD CC 03 D2 call _GetCharWidth_ASM + 280 D2:03B8 E1 - - - pop hl + 281 D2:03B9 23 - - - inc hl + 282 D2:03BA 18 F3 - - jr -_ + 283 D2:03BC C5 - - - _: push bc + 284 D2:03BD E1 - - - pop hl + 285 D2:03BE C9 - - - ret + 286 D2:03BF - - - - + 287 D2:03BF - - - - ;------------------------------------------------------------------------------- + 288 D2:03BF - - - - _GetCharWidth: + 289 D2:03BF - - - - ; Gets the width of a character + 290 D2:03BF - - - - ; Arguments: + 291 D2:03BF - - - - ; arg0 : Character + 292 D2:03BF - - - - ; Returns: + 293 D2:03BF - - - - ; Width of character in pixels + 294 D2:03BF FD 21 00 00 00 - - - ld iy,0 - 295 D2:03A8 ED 03 00 - lea bc,iy - 296 D2:03AB FD 39 - - add iy,sp - 297 D2:03AD FD 7E 03 - ld a,(iy+3) - 298 D2:03B0 - - - - _GetCharWidth_ASM: - 299 D2:03B0 B7 - - - or a,a - 300 D2:03B1 ED 62 - - sbc hl,hl - 301 D2:03B3 6F - - - ld l,a - 302 D2:03B4 3A 66 02 D2 ld a,(MonoFlag_SMC) - 303 D2:03B8 B7 - - - or a,a - 304 D2:03B9 20 0E - - jr nz,+_ - 305 D2:03BB ED 5B 23 05 + 295 D2:03C4 ED 03 00 - lea bc,iy + 296 D2:03C7 FD 39 - - add iy,sp + 297 D2:03C9 FD 7E 03 - ld a,(iy+3) + 298 D2:03CC - - - - _GetCharWidth_ASM: + 299 D2:03CC B7 - - - or a,a + 300 D2:03CD ED 62 - - sbc hl,hl + 301 D2:03CF 6F - - - ld l,a + 302 D2:03D0 3A 82 02 D2 ld a,(MonoFlag_SMC) + 303 D2:03D4 B7 - - - or a,a + 304 D2:03D5 20 0E - - jr nz,+_ + 305 D2:03D7 ED 5B 3F 05 D2 - - - ld de,(CharSpacing_ASM) - 306 D2:03C0 19 - - - add hl,de - 307 D2:03C1 7E - - - ld a,(hl) - 308 D2:03C2 ED 62 - - sbc hl,hl - 309 D2:03C4 6F - - - ld l,a - 310 D2:03C5 09 - - - add hl,bc - 311 D2:03C6 E5 - - - push hl - 312 D2:03C7 C1 - - - pop bc - 313 D2:03C8 C9 - - - ret - 314 D2:03C9 ED 62 - - _: sbc hl,hl - 315 D2:03CB 6F - - - ld l,a - 316 D2:03CC 09 - - - add hl,bc - 317 D2:03CD C9 - - - ret - 318 D2:03CE - - - - - 319 D2:03CE - - - - ;------------------------------------------------------------------------------- - 320 D2:03CE - - - - _SetCustomFontData: - 321 D2:03CE - - - - ; Sets the font to be custom - 322 D2:03CE - - - - ; Arguments: - 323 D2:03CE - - - - ; arg0 : Pointer to font data - 324 D2:03CE - - - - ; Set Pointer to NULL to use default font - 325 D2:03CE - - - - ; Returns: - 326 D2:03CE - - - - ; None - 327 D2:03CE D1 - - - pop de - 328 D2:03CF E1 - - - pop hl - 329 D2:03D0 E5 - - - push hl - 330 D2:03D1 D5 - - - push de - 331 D2:03D2 19 - - - add hl,de - 332 D2:03D3 B7 - - - or a,a - 333 D2:03D4 ED 52 - - sbc hl,de - 334 D2:03D6 20 04 - - jr nz,+_ - 335 D2:03D8 21 C9 05 D2 ld hl,Char000 - 336 D2:03DC 22 26 05 D2 _: ld (TextData_ASM),hl - 337 D2:03E0 C9 - - - ret - 338 D2:03E1 - - - - - 339 D2:03E1 - - - - ;------------------------------------------------------------------------------- - 340 D2:03E1 - - - - _SetCustomFontSpacing: - 341 D2:03E1 - - - - ; Sets the font to be custom spacing - 342 D2:03E1 - - - - ; Arguments: - 343 D2:03E1 - - - - ; arg0 : Pointer to font spacing - 344 D2:03E1 - - - - ; Set Pointer to NULL to use default font spacing - 345 D2:03E1 - - - - ; Returns: - 346 D2:03E1 - - - - ; None - 347 D2:03E1 D1 - - - pop de - 348 D2:03E2 E1 - - - pop hl - 349 D2:03E3 E5 - - - push hl - 350 D2:03E4 D5 - - - push de - 351 D2:03E5 19 - - - add hl,de - 352 D2:03E6 B7 - - - or a,a - 353 D2:03E7 ED 52 - - sbc hl,de - 354 D2:03E9 20 04 - - jr nz,+_ - 355 D2:03EB 21 29 05 D2 ld hl,DefaultCharSpacing_ASM - 356 D2:03EF 22 23 05 D2 _: ld (CharSpacing_ASM),hl - 357 D2:03F3 C9 - - - ret - 358 D2:03F4 - - - - - 359 D2:03F4 - - - - ;------------------------------------------------------------------------------- - 360 D2:03F4 - - - - _SetMonospaceFont: - 361 D2:03F4 - - - - ; Sets the font to be monospace - 362 D2:03F4 - - - - ; Arguments: - 363 D2:03F4 - - - - ; arg0 : Monospace spacing amount - 364 D2:03F4 - - - - ; Returns: - 365 D2:03F4 - - - - ; None - 366 D2:03F4 E1 - - - pop hl - 367 D2:03F5 D1 - - - pop de - 368 D2:03F6 D5 - - - push de - 369 D2:03F7 E5 - - - push hl - 370 D2:03F8 7B - - - ld a,e - 371 D2:03F9 32 66 02 D2 ld (MonoFlag_SMC),a - 372 D2:03FD C9 - - - ret - 373 D2:03FE - - - - - 374 D2:03FE - - - - - 375 D2:03FE - - - - ;------------------------------------------------------------------------------- - 376 D2:03FE - - - - _Max_ASM: - 377 D2:03FE - - - - ; Calculate the resut of a signed comparison - 378 D2:03FE - - - - ; Inputs: - 379 D2:03FE - - - - ; DE,HL=numbers - 380 D2:03FE - - - - ; Oututs: - 381 D2:03FE - - - - ; HL=max number - 382 D2:03FE B7 - - - or a,a - 383 D2:03FF ED 52 - - sbc hl,de - 384 D2:0401 19 - - - add hl,de - 385 D2:0402 F2 08 04 D2 jp p,+_ - 386 D2:0406 E8 - - - ret pe - 387 D2:0407 EB - - - ex de,hl - 388 D2:0408 E0 - - - _: ret po - 389 D2:0409 EB - - - ex de,hl - 390 D2:040A C9 - - - ret - 391 D2:040B - - - - - 392 D2:040B - - - - ;------------------------------------------------------------------------------- - 393 D2:040B - - - - _Min_ASM: - 394 D2:040B - - - - ; Calculate the resut of a signed comparison - 395 D2:040B - - - - ; Inputs: - 396 D2:040B - - - - ; DE,HL=numbers - 397 D2:040B - - - - ; Oututs: - 398 D2:040B - - - - ; HL=min number - 399 D2:040B B7 - - - or a,a - 400 D2:040C ED 52 - - sbc hl,de - 401 D2:040E EB - - - ex de,hl - 402 D2:040F F2 15 04 D2 jp p,_ - 403 D2:0413 E8 - - - ret pe - 404 D2:0414 19 - - - add hl,de - 405 D2:0415 E0 - - - _: ret po - 406 D2:0416 19 - - - add hl,de - 407 D2:0417 C9 - - - ret - 408 D2:0418 - - - - - 409 D2:0418 - - - - ;------------------------------------------------------------------------------- - 410 D2:0418 - - - - _ClipRectangularRegion_ASM: - 411 D2:0418 - - - - ; Calculates the new coordinates given the clip and inputs - 412 D2:0418 - - - - ; Inputs: - 413 D2:0418 - - - - ; None - 414 D2:0418 - - - - ; Outputs: - 415 D2:0418 - - - - ; Modifies data registers - 416 D2:0418 - - - - ; Sets C flag if offscreen - 417 D2:0418 2A C9 09 D2 ld hl,(_xmin) - 418 D2:041C FD 17 03 - ld de,(iy+3) - 419 D2:041F CD FE 03 D2 call _Max_ASM - 420 D2:0423 FD 2F 03 - ld (iy+3),hl - 421 D2:0426 2A CF 09 D2 ld hl,(_xmax) - 422 D2:042A FD 17 09 - ld de,(iy+9) - 423 D2:042D CD 0B 04 D2 call _Min_ASM - 424 D2:0431 FD 2F 09 - ld (iy+9),hl - 425 D2:0434 FD 17 03 - ld de,(iy+3) - 426 D2:0437 CD 5B 04 D2 call _SignedCompare_ASM - 427 D2:043B D8 - - - ret c - 428 D2:043C 2A CC 09 D2 ld hl,(_ymin) - 429 D2:0440 FD 17 06 - ld de,(iy+6) - 430 D2:0443 CD FE 03 D2 call _Max_ASM - 431 D2:0447 FD 2F 06 - ld (iy+6),hl - 432 D2:044A 2A D2 09 D2 ld hl,(_ymax) - 433 D2:044E FD 17 0C - ld de,(iy+12) - 434 D2:0451 CD 0B 04 D2 call _Min_ASM - 435 D2:0455 FD 2F 0C - ld (iy+12),hl - 436 D2:0458 FD 17 06 - ld de,(iy+6) - 437 D2:045B - - - - _SignedCompare_ASM: - 438 D2:045B B7 - - - or a,a - 439 D2:045C ED 52 - - sbc hl,de - 440 D2:045E 29 - - - add hl,hl - 441 D2:045F E0 - - - ret po - 442 D2:0460 3F - - - ccf - 443 D2:0461 C9 - - - ret - 444 D2:0462 - - - - - 445 D2:0462 - - - - ;------------------------------------------------------------------------------- - 446 D2:0462 - - - - _SetFullScreenClipping_ASM: - 447 D2:0462 - - - - ; Sets the clipping to the entire screen - 448 D2:0462 - - - - ; Inputs: - 449 D2:0462 - - - - ; None - 450 D2:0462 - - - - ; Outputs: - 451 D2:0462 - - - - ; HL=0 - 452 D2:0462 21 40 01 00 ld hl,lcdWidth - 453 D2:0466 22 CF 09 D2 ld (_xmax),hl - 454 D2:046A 21 F0 00 00 ld hl,lcdHeight - 455 D2:046E 22 D2 09 D2 ld (_ymax),hl - 456 D2:0472 2E 00 - - ld l,0 - 457 D2:0474 22 C9 09 D2 ld (_xmin),hl - 458 D2:0478 22 CC 09 D2 ld (_ymin),hl - 459 D2:047C C9 - - - ret - 460 D2:047D - - - - - 461 D2:047D - - - - ;------------------------------------------------------------------------------- - 462 D2:047D - - - - __idivs_ASM: - 463 D2:047D - - - - ; Performs signed interger division - 464 D2:047D - - - - ; Inputs: - 465 D2:047D - - - - ; HL : Operand 1 - 466 D2:047D - - - - ; BC : Operand 2 - 467 D2:047D - - - - ; Outputs: - 468 D2:047D - - - - ; HL = HL/BC - 469 D2:047D EB - - - ex de,hl - 470 D2:047E AF - - - xor a,a - 471 D2:047F ED 62 - - sbc hl,hl - 472 D2:0481 ED 42 - - sbc hl,bc - 473 D2:0483 F2 8A 04 D2 jp p,+_ - 474 D2:0487 E5 - - - push hl - 475 D2:0488 C1 - - - pop bc - 476 D2:0489 3C - - - inc a - 477 D2:048A - - - - - 478 D2:048A B7 - - - _: or a,a - 479 D2:048B ED 62 - - sbc hl,hl - 480 D2:048D ED 52 - - sbc hl,de - 481 D2:048F FA 95 04 D2 jp m,+_ - 482 D2:0493 EB - - - ex de,hl - 483 D2:0494 3C - - - inc a - 484 D2:0495 - - - - - 485 D2:0495 19 - - - _: add hl,de - 486 D2:0496 1F - - - rra - 487 D2:0497 3E 18 - - ld a,24 - 488 D2:0499 - - - - - 489 D2:0499 EB - - - _: ex de,hl - 490 D2:049A ED 6A - - adc hl,hl - 491 D2:049C EB - - - ex de,hl - 492 D2:049D ED 6A - - adc hl,hl - 493 D2:049F 09 - - - add hl,bc - 494 D2:04A0 38 02 - - jr c,+_ - 495 D2:04A2 ED 42 - - sbc hl,bc - 496 D2:04A4 3D - - - _: dec a - 497 D2:04A5 20 F2 - - jr nz,--_ - 498 D2:04A7 - - - - - 499 D2:04A7 EB - - - ex de,hl - 500 D2:04A8 ED 6A - - adc hl,hl - 501 D2:04AA D8 - - - ret c - 502 D2:04AB EB - - - ex de,hl - 503 D2:04AC ED 62 - - sbc hl,hl - 504 D2:04AE ED 52 - - sbc hl,de - 505 D2:04B0 C9 - - - ret - 506 D2:04B1 - - - - - 507 D2:04B1 - - - - ;------------------------------------------------------------------------------- - 508 D2:04B1 - - - - __imuls_ASM: - 509 D2:04B1 - - - - __imulu_ASM: - 510 D2:04B1 - - - - ; Performs (un)signed integer multiplication - 511 D2:04B1 - - - - ; Inputs: - 512 D2:04B1 - - - - ; HL : Operand 1 - 513 D2:04B1 - - - - ; BC : Operand 2 - 514 D2:04B1 - - - - ; Outputs: - 515 D2:04B1 - - - - ; HL = HL*BC - 516 D2:04B1 C5 - - - push bc - 517 D2:04B2 E5 - - - push hl - 518 D2:04B3 EB - - - ex de,hl - 519 D2:04B4 21 02 00 00 ld hl,2 - 520 D2:04B8 39 - - - add hl,sp - 521 D2:04B9 46 - - - ld b,(hl) - 522 D2:04BA ED 4C - - mlt bc - 523 D2:04BC 23 - - - inc hl - 524 D2:04BD 23 - - - inc hl - 525 D2:04BE 23 - - - inc hl - 526 D2:04BF 7A - - - ld a,d - 527 D2:04C0 56 - - - ld d,(hl) - 528 D2:04C1 ED 5C - - mlt de - 529 D2:04C3 2B - - - dec hl - 530 D2:04C4 6E - - - ld l,(hl) - 531 D2:04C5 67 - - - ld h,a - 532 D2:04C6 ED 6C - - mlt hl - 533 D2:04C8 7D - - - ld a,l - 534 D2:04C9 83 - - - add a,e - 535 D2:04CA 81 - - - add a,c - 536 D2:04CB D1 - - - pop de - 537 D2:04CC C1 - - - pop bc - 538 D2:04CD C5 - - - push bc - 539 D2:04CE B7 - - - or a,a - 540 D2:04CF ED 62 - - sbc hl,hl - 541 D2:04D1 52 19 - - add.s hl,de - 542 D2:04D3 EB - - - ex de,hl - 543 D2:04D4 60 - - - ld h,b - 544 D2:04D5 ED 6C - - mlt hl - 545 D2:04D7 42 - - - ld b,d - 546 D2:04D8 ED 4C - - mlt bc - 547 D2:04DA 09 - - - add hl,bc - 548 D2:04DB 84 - - - add a,h - 549 D2:04DC 67 - - - ld h,a - 550 D2:04DD C1 - - - pop bc - 551 D2:04DE 51 - - - ld d,c - 552 D2:04DF ED 5C - - mlt de - 553 D2:04E1 29 - - - add hl,hl - 554 D2:04E2 29 - - - add hl,hl - 555 D2:04E3 29 - - - add hl,hl - 556 D2:04E4 29 - - - add hl,hl - 557 D2:04E5 29 - - - add hl,hl - 558 D2:04E6 29 - - - add hl,hl - 559 D2:04E7 29 - - - add hl,hl - 560 D2:04E8 29 - - - add hl,hl - 561 D2:04E9 19 - - - add hl,de - 562 D2:04EA C9 - - - ret - 563 D2:04EB - - - - - 564 D2:04EB - - - - ;------------------------------------------------------------------------------- - 565 D2:04EB - - - - _ComputeOutcode_ASM: - 566 D2:04EB - - - - ; Compute the bitcode for a point (x, y) using the clip rectangle - 567 D2:04EB - - - - ; bounded diagonally by (xmin, ymin), and (xmax, ymax) - 568 D2:04EB - - - - ; Inputs: - 569 D2:04EB - - - - ; HL : X Argument - 570 D2:04EB - - - - ; DE : Y Argument - 571 D2:04EB - - - - ; Outputs: - 572 D2:04EB - - - - ; A : Bitcode - 573 D2:04EB ED 4B C9 09 + 306 D2:03DC 19 - - - add hl,de + 307 D2:03DD 7E - - - ld a,(hl) + 308 D2:03DE ED 62 - - sbc hl,hl + 309 D2:03E0 6F - - - ld l,a + 310 D2:03E1 09 - - - add hl,bc + 311 D2:03E2 E5 - - - push hl + 312 D2:03E3 C1 - - - pop bc + 313 D2:03E4 C9 - - - ret + 314 D2:03E5 ED 62 - - _: sbc hl,hl + 315 D2:03E7 6F - - - ld l,a + 316 D2:03E8 09 - - - add hl,bc + 317 D2:03E9 C9 - - - ret + 318 D2:03EA - - - - + 319 D2:03EA - - - - ;------------------------------------------------------------------------------- + 320 D2:03EA - - - - _SetCustomFontData: + 321 D2:03EA - - - - ; Sets the font to be custom + 322 D2:03EA - - - - ; Arguments: + 323 D2:03EA - - - - ; arg0 : Pointer to font data + 324 D2:03EA - - - - ; Set Pointer to NULL to use default font + 325 D2:03EA - - - - ; Returns: + 326 D2:03EA - - - - ; None + 327 D2:03EA D1 - - - pop de + 328 D2:03EB E1 - - - pop hl + 329 D2:03EC E5 - - - push hl + 330 D2:03ED D5 - - - push de + 331 D2:03EE 19 - - - add hl,de + 332 D2:03EF B7 - - - or a,a + 333 D2:03F0 ED 52 - - sbc hl,de + 334 D2:03F2 20 04 - - jr nz,+_ + 335 D2:03F4 21 E5 05 D2 ld hl,Char000 + 336 D2:03F8 22 42 05 D2 _: ld (TextData_ASM),hl + 337 D2:03FC C9 - - - ret + 338 D2:03FD - - - - + 339 D2:03FD - - - - ;------------------------------------------------------------------------------- + 340 D2:03FD - - - - _SetCustomFontSpacing: + 341 D2:03FD - - - - ; Sets the font to be custom spacing + 342 D2:03FD - - - - ; Arguments: + 343 D2:03FD - - - - ; arg0 : Pointer to font spacing + 344 D2:03FD - - - - ; Set Pointer to NULL to use default font spacing + 345 D2:03FD - - - - ; Returns: + 346 D2:03FD - - - - ; None + 347 D2:03FD D1 - - - pop de + 348 D2:03FE E1 - - - pop hl + 349 D2:03FF E5 - - - push hl + 350 D2:0400 D5 - - - push de + 351 D2:0401 19 - - - add hl,de + 352 D2:0402 B7 - - - or a,a + 353 D2:0403 ED 52 - - sbc hl,de + 354 D2:0405 20 04 - - jr nz,+_ + 355 D2:0407 21 45 05 D2 ld hl,DefaultCharSpacing_ASM + 356 D2:040B 22 3F 05 D2 _: ld (CharSpacing_ASM),hl + 357 D2:040F C9 - - - ret + 358 D2:0410 - - - - + 359 D2:0410 - - - - ;------------------------------------------------------------------------------- + 360 D2:0410 - - - - _SetMonospaceFont: + 361 D2:0410 - - - - ; Sets the font to be monospace + 362 D2:0410 - - - - ; Arguments: + 363 D2:0410 - - - - ; arg0 : Monospace spacing amount + 364 D2:0410 - - - - ; Returns: + 365 D2:0410 - - - - ; None + 366 D2:0410 E1 - - - pop hl + 367 D2:0411 D1 - - - pop de + 368 D2:0412 D5 - - - push de + 369 D2:0413 E5 - - - push hl + 370 D2:0414 7B - - - ld a,e + 371 D2:0415 32 82 02 D2 ld (MonoFlag_SMC),a + 372 D2:0419 C9 - - - ret + 373 D2:041A - - - - + 374 D2:041A - - - - + 375 D2:041A - - - - ;------------------------------------------------------------------------------- + 376 D2:041A - - - - _Max_ASM: + 377 D2:041A - - - - ; Calculate the resut of a signed comparison + 378 D2:041A - - - - ; Inputs: + 379 D2:041A - - - - ; DE,HL=numbers + 380 D2:041A - - - - ; Oututs: + 381 D2:041A - - - - ; HL=max number + 382 D2:041A B7 - - - or a,a + 383 D2:041B ED 52 - - sbc hl,de + 384 D2:041D 19 - - - add hl,de + 385 D2:041E F2 24 04 D2 jp p,+_ + 386 D2:0422 E8 - - - ret pe + 387 D2:0423 EB - - - ex de,hl + 388 D2:0424 E0 - - - _: ret po + 389 D2:0425 EB - - - ex de,hl + 390 D2:0426 C9 - - - ret + 391 D2:0427 - - - - + 392 D2:0427 - - - - ;------------------------------------------------------------------------------- + 393 D2:0427 - - - - _Min_ASM: + 394 D2:0427 - - - - ; Calculate the resut of a signed comparison + 395 D2:0427 - - - - ; Inputs: + 396 D2:0427 - - - - ; DE,HL=numbers + 397 D2:0427 - - - - ; Oututs: + 398 D2:0427 - - - - ; HL=min number + 399 D2:0427 B7 - - - or a,a + 400 D2:0428 ED 52 - - sbc hl,de + 401 D2:042A EB - - - ex de,hl + 402 D2:042B F2 31 04 D2 jp p,_ + 403 D2:042F E8 - - - ret pe + 404 D2:0430 19 - - - add hl,de + 405 D2:0431 E0 - - - _: ret po + 406 D2:0432 19 - - - add hl,de + 407 D2:0433 C9 - - - ret + 408 D2:0434 - - - - + 409 D2:0434 - - - - ;------------------------------------------------------------------------------- + 410 D2:0434 - - - - _ClipRectangularRegion_ASM: + 411 D2:0434 - - - - ; Calculates the new coordinates given the clip and inputs + 412 D2:0434 - - - - ; Inputs: + 413 D2:0434 - - - - ; None + 414 D2:0434 - - - - ; Outputs: + 415 D2:0434 - - - - ; Modifies data registers + 416 D2:0434 - - - - ; Sets C flag if offscreen + 417 D2:0434 2A E5 09 D2 ld hl,(_xmin) + 418 D2:0438 FD 17 03 - ld de,(iy+3) + 419 D2:043B CD 1A 04 D2 call _Max_ASM + 420 D2:043F FD 2F 03 - ld (iy+3),hl + 421 D2:0442 2A EB 09 D2 ld hl,(_xmax) + 422 D2:0446 FD 17 09 - ld de,(iy+9) + 423 D2:0449 CD 27 04 D2 call _Min_ASM + 424 D2:044D FD 2F 09 - ld (iy+9),hl + 425 D2:0450 FD 17 03 - ld de,(iy+3) + 426 D2:0453 CD 77 04 D2 call _SignedCompare_ASM + 427 D2:0457 D8 - - - ret c + 428 D2:0458 2A E8 09 D2 ld hl,(_ymin) + 429 D2:045C FD 17 06 - ld de,(iy+6) + 430 D2:045F CD 1A 04 D2 call _Max_ASM + 431 D2:0463 FD 2F 06 - ld (iy+6),hl + 432 D2:0466 2A EE 09 D2 ld hl,(_ymax) + 433 D2:046A FD 17 0C - ld de,(iy+12) + 434 D2:046D CD 27 04 D2 call _Min_ASM + 435 D2:0471 FD 2F 0C - ld (iy+12),hl + 436 D2:0474 FD 17 06 - ld de,(iy+6) + 437 D2:0477 - - - - _SignedCompare_ASM: + 438 D2:0477 B7 - - - or a,a + 439 D2:0478 ED 52 - - sbc hl,de + 440 D2:047A 29 - - - add hl,hl + 441 D2:047B E0 - - - ret po + 442 D2:047C 3F - - - ccf + 443 D2:047D C9 - - - ret + 444 D2:047E - - - - + 445 D2:047E - - - - ;------------------------------------------------------------------------------- + 446 D2:047E - - - - _SetFullScreenClipping_ASM: + 447 D2:047E - - - - ; Sets the clipping to the entire screen + 448 D2:047E - - - - ; Inputs: + 449 D2:047E - - - - ; None + 450 D2:047E - - - - ; Outputs: + 451 D2:047E - - - - ; HL=0 + 452 D2:047E 21 40 01 00 ld hl,lcdWidth + 453 D2:0482 22 EB 09 D2 ld (_xmax),hl + 454 D2:0486 21 F0 00 00 ld hl,lcdHeight + 455 D2:048A 22 EE 09 D2 ld (_ymax),hl + 456 D2:048E 2E 00 - - ld l,0 + 457 D2:0490 22 E5 09 D2 ld (_xmin),hl + 458 D2:0494 22 E8 09 D2 ld (_ymin),hl + 459 D2:0498 C9 - - - ret + 460 D2:0499 - - - - + 461 D2:0499 - - - - ;------------------------------------------------------------------------------- + 462 D2:0499 - - - - __idivs_ASM: + 463 D2:0499 - - - - ; Performs signed interger division + 464 D2:0499 - - - - ; Inputs: + 465 D2:0499 - - - - ; HL : Operand 1 + 466 D2:0499 - - - - ; BC : Operand 2 + 467 D2:0499 - - - - ; Outputs: + 468 D2:0499 - - - - ; HL = HL/BC + 469 D2:0499 EB - - - ex de,hl + 470 D2:049A AF - - - xor a,a + 471 D2:049B ED 62 - - sbc hl,hl + 472 D2:049D ED 42 - - sbc hl,bc + 473 D2:049F F2 A6 04 D2 jp p,+_ + 474 D2:04A3 E5 - - - push hl + 475 D2:04A4 C1 - - - pop bc + 476 D2:04A5 3C - - - inc a + 477 D2:04A6 - - - - + 478 D2:04A6 B7 - - - _: or a,a + 479 D2:04A7 ED 62 - - sbc hl,hl + 480 D2:04A9 ED 52 - - sbc hl,de + 481 D2:04AB FA B1 04 D2 jp m,+_ + 482 D2:04AF EB - - - ex de,hl + 483 D2:04B0 3C - - - inc a + 484 D2:04B1 - - - - + 485 D2:04B1 19 - - - _: add hl,de + 486 D2:04B2 1F - - - rra + 487 D2:04B3 3E 18 - - ld a,24 + 488 D2:04B5 - - - - + 489 D2:04B5 EB - - - _: ex de,hl + 490 D2:04B6 ED 6A - - adc hl,hl + 491 D2:04B8 EB - - - ex de,hl + 492 D2:04B9 ED 6A - - adc hl,hl + 493 D2:04BB 09 - - - add hl,bc + 494 D2:04BC 38 02 - - jr c,+_ + 495 D2:04BE ED 42 - - sbc hl,bc + 496 D2:04C0 3D - - - _: dec a + 497 D2:04C1 20 F2 - - jr nz,--_ + 498 D2:04C3 - - - - + 499 D2:04C3 EB - - - ex de,hl + 500 D2:04C4 ED 6A - - adc hl,hl + 501 D2:04C6 D8 - - - ret c + 502 D2:04C7 EB - - - ex de,hl + 503 D2:04C8 ED 62 - - sbc hl,hl + 504 D2:04CA ED 52 - - sbc hl,de + 505 D2:04CC C9 - - - ret + 506 D2:04CD - - - - + 507 D2:04CD - - - - ;------------------------------------------------------------------------------- + 508 D2:04CD - - - - __imuls_ASM: + 509 D2:04CD - - - - __imulu_ASM: + 510 D2:04CD - - - - ; Performs (un)signed integer multiplication + 511 D2:04CD - - - - ; Inputs: + 512 D2:04CD - - - - ; HL : Operand 1 + 513 D2:04CD - - - - ; BC : Operand 2 + 514 D2:04CD - - - - ; Outputs: + 515 D2:04CD - - - - ; HL = HL*BC + 516 D2:04CD C5 - - - push bc + 517 D2:04CE E5 - - - push hl + 518 D2:04CF EB - - - ex de,hl + 519 D2:04D0 21 02 00 00 ld hl,2 + 520 D2:04D4 39 - - - add hl,sp + 521 D2:04D5 46 - - - ld b,(hl) + 522 D2:04D6 ED 4C - - mlt bc + 523 D2:04D8 23 - - - inc hl + 524 D2:04D9 23 - - - inc hl + 525 D2:04DA 23 - - - inc hl + 526 D2:04DB 7A - - - ld a,d + 527 D2:04DC 56 - - - ld d,(hl) + 528 D2:04DD ED 5C - - mlt de + 529 D2:04DF 2B - - - dec hl + 530 D2:04E0 6E - - - ld l,(hl) + 531 D2:04E1 67 - - - ld h,a + 532 D2:04E2 ED 6C - - mlt hl + 533 D2:04E4 7D - - - ld a,l + 534 D2:04E5 83 - - - add a,e + 535 D2:04E6 81 - - - add a,c + 536 D2:04E7 D1 - - - pop de + 537 D2:04E8 C1 - - - pop bc + 538 D2:04E9 C5 - - - push bc + 539 D2:04EA B7 - - - or a,a + 540 D2:04EB ED 62 - - sbc hl,hl + 541 D2:04ED 52 19 - - add.s hl,de + 542 D2:04EF EB - - - ex de,hl + 543 D2:04F0 60 - - - ld h,b + 544 D2:04F1 ED 6C - - mlt hl + 545 D2:04F3 42 - - - ld b,d + 546 D2:04F4 ED 4C - - mlt bc + 547 D2:04F6 09 - - - add hl,bc + 548 D2:04F7 84 - - - add a,h + 549 D2:04F8 67 - - - ld h,a + 550 D2:04F9 C1 - - - pop bc + 551 D2:04FA 51 - - - ld d,c + 552 D2:04FB ED 5C - - mlt de + 553 D2:04FD 29 - - - add hl,hl + 554 D2:04FE 29 - - - add hl,hl + 555 D2:04FF 29 - - - add hl,hl + 556 D2:0500 29 - - - add hl,hl + 557 D2:0501 29 - - - add hl,hl + 558 D2:0502 29 - - - add hl,hl + 559 D2:0503 29 - - - add hl,hl + 560 D2:0504 29 - - - add hl,hl + 561 D2:0505 19 - - - add hl,de + 562 D2:0506 C9 - - - ret + 563 D2:0507 - - - - + 564 D2:0507 - - - - ;------------------------------------------------------------------------------- + 565 D2:0507 - - - - _ComputeOutcode_ASM: + 566 D2:0507 - - - - ; Compute the bitcode for a point (x, y) using the clip rectangle + 567 D2:0507 - - - - ; bounded diagonally by (xmin, ymin), and (xmax, ymax) + 568 D2:0507 - - - - ; Inputs: + 569 D2:0507 - - - - ; HL : X Argument + 570 D2:0507 - - - - ; DE : Y Argument + 571 D2:0507 - - - - ; Outputs: + 572 D2:0507 - - - - ; A : Bitcode + 573 D2:0507 ED 4B E5 09 D2 - - - ld bc,(_xmin) - 574 D2:04F0 E5 - - - push hl - 575 D2:04F1 AF - - - xor a,a - 576 D2:04F2 ED 42 - - sbc hl,bc - 577 D2:04F4 C1 - - - pop bc - 578 D2:04F5 29 - - - add hl,hl - 579 D2:04F6 E2 FB 04 D2 jp po,+_ - 580 D2:04FA 3F - - - ccf - 581 D2:04FB 17 - - - _: rla - 582 D2:04FC 2A CF 09 D2 ld hl,(_xmax) - 583 D2:0500 ED 42 - - sbc hl,bc - 584 D2:0502 29 - - - add hl,hl - 585 D2:0503 E2 08 05 D2 jp po,+_ - 586 D2:0507 3F - - - ccf - 587 D2:0508 17 - - - _: rla - 588 D2:0509 2A CC 09 D2 ld hl,(_ymin) - 589 D2:050D 37 - - - scf - 590 D2:050E ED 52 - - sbc hl,de - 591 D2:0510 29 - - - add hl,hl - 592 D2:0511 EA 16 05 D2 jp pe,+_ - 593 D2:0515 3F - - - ccf - 594 D2:0516 17 - - - _: rla - 595 D2:0517 2A D2 09 D2 ld hl,(_ymax) - 596 D2:051B ED 52 - - sbc hl,de - 597 D2:051D 29 - - - add hl,hl - 598 D2:051E 17 - - - rla - 599 D2:051F E0 - - - ret po - 600 D2:0520 EE 01 - - xor a,1 - 601 D2:0522 C9 - - - ret - 602 D2:0523 - - - - - 603 D2:0523 - - - - ;------------------------------------------------------------------------------- - 604 D2:0523 - - - - CharSpacing_ASM: - 605 D2:0523 29 05 D2 - .dl DefaultCharSpacing_ASM - 606 D2:0526 - - - - TextData_ASM: - 607 D2:0526 C9 05 D2 - .dl DefaultTextData_ASM - 608 D2:0529 - - - - - 609 D2:0529 - - - - DefaultCharSpacing_ASM: - 610 D2:0529 - - - - ; 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F - 611 D2:0529 08 08 08 08 + 574 D2:050C E5 - - - push hl + 575 D2:050D AF - - - xor a,a + 576 D2:050E ED 42 - - sbc hl,bc + 577 D2:0510 C1 - - - pop bc + 578 D2:0511 29 - - - add hl,hl + 579 D2:0512 E2 17 05 D2 jp po,+_ + 580 D2:0516 3F - - - ccf + 581 D2:0517 17 - - - _: rla + 582 D2:0518 2A EB 09 D2 ld hl,(_xmax) + 583 D2:051C ED 42 - - sbc hl,bc + 584 D2:051E 29 - - - add hl,hl + 585 D2:051F E2 24 05 D2 jp po,+_ + 586 D2:0523 3F - - - ccf + 587 D2:0524 17 - - - _: rla + 588 D2:0525 2A E8 09 D2 ld hl,(_ymin) + 589 D2:0529 37 - - - scf + 590 D2:052A ED 52 - - sbc hl,de + 591 D2:052C 29 - - - add hl,hl + 592 D2:052D EA 32 05 D2 jp pe,+_ + 593 D2:0531 3F - - - ccf + 594 D2:0532 17 - - - _: rla + 595 D2:0533 2A EE 09 D2 ld hl,(_ymax) + 596 D2:0537 ED 52 - - sbc hl,de + 597 D2:0539 29 - - - add hl,hl + 598 D2:053A 17 - - - rla + 599 D2:053B E0 - - - ret po + 600 D2:053C EE 01 - - xor a,1 + 601 D2:053E C9 - - - ret + 602 D2:053F - - - - + 603 D2:053F - - - - ;------------------------------------------------------------------------------- + 604 D2:053F - - - - CharSpacing_ASM: + 605 D2:053F 45 05 D2 - .dl DefaultCharSpacing_ASM + 606 D2:0542 - - - - TextData_ASM: + 607 D2:0542 E5 05 D2 - .dl DefaultTextData_ASM + 608 D2:0545 - - - - + 609 D2:0545 - - - - DefaultCharSpacing_ASM: + 610 D2:0545 - - - - ; 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F + 611 D2:0545 08 08 08 08 08 08 08 08 08 08 08 08 08 02 08 08 .db 8,8,8,8,8,8,8,8,8,8,8,8,8,2,8,8 - 612 D2:0539 08 08 08 08 + 612 D2:0555 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 .db 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 - 613 D2:0549 03 04 06 08 + 613 D2:0565 03 04 06 08 08 08 08 05 05 05 08 07 04 07 03 08 .db 3,4,6,8,8,8,8,5,5,5,8,7,4,7,3,8 - 614 D2:0559 08 07 08 08 + 614 D2:0575 08 07 08 08 08 08 08 08 08 08 03 04 06 07 06 07 .db 8,7,8,8,8,8,8,8,8,8,3,4,6,7,6,7 - 615 D2:0569 08 08 08 08 + 615 D2:0585 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 .db 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 - 616 D2:0579 08 08 08 08 + 616 D2:0595 08 08 08 08 08 08 08 08 08 08 08 05 08 05 08 08 .db 8,8,8,8,8,8,8,8,8,8,8,5,8,5,8,8 - 617 D2:0589 04 08 08 08 + 617 D2:05A5 04 08 08 08 08 08 08 08 08 05 08 08 05 08 08 08 .db 4,8,8,8,8,8,8,8,8,5,8,8,5,8,8,8 - 618 D2:0599 08 08 08 08 + 618 D2:05B5 08 08 08 08 07 08 08 08 08 08 08 07 03 07 08 08 .db 8,8,8,8,7,8,8,8,8,8,8,7,3,7,8,8 - 619 D2:05A9 08 08 08 08 + 619 D2:05C5 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 .db 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 - 620 D2:05B9 08 08 08 08 + 620 D2:05D5 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 .db 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 - 621 D2:05C9 - - - - - 622 D2:05C9 - - - - ;------------------------------------------------------------------------------- - 623 D2:05C9 - - - - DefaultTextData_ASM: - 624 D2:05C9 00 00 00 00 + 621 D2:05E5 - - - - + 622 D2:05E5 - - - - ;------------------------------------------------------------------------------- + 623 D2:05E5 - - - - DefaultTextData_ASM: + 624 D2:05E5 00 00 00 00 00 00 00 00 Char000: .db $00,$00,$00,$00,$00,$00,$00,$00 ; . - 625 D2:05D1 7E 81 A5 81 + 625 D2:05ED 7E 81 A5 81 BD BD 81 7E Char001: .db $7E,$81,$A5,$81,$BD,$BD,$81,$7E ; . - 626 D2:05D9 7E FF DB FF + 626 D2:05F5 7E FF DB FF C3 C3 FF 7E Char002: .db $7E,$FF,$DB,$FF,$C3,$C3,$FF,$7E ; . - 627 D2:05E1 6C FE FE FE + 627 D2:05FD 6C FE FE FE 7C 38 10 00 Char003: .db $6C,$FE,$FE,$FE,$7C,$38,$10,$00 ; . - 628 D2:05E9 10 38 7C FE + 628 D2:0605 10 38 7C FE 7C 38 10 00 Char004: .db $10,$38,$7C,$FE,$7C,$38,$10,$00 ; . - 629 D2:05F1 38 7C 38 FE + 629 D2:060D 38 7C 38 FE FE 10 10 7C Char005: .db $38,$7C,$38,$FE,$FE,$10,$10,$7C ; . - 630 D2:05F9 00 18 3C 7E + 630 D2:0615 00 18 3C 7E FF 7E 18 7E Char006: .db $00,$18,$3C,$7E,$FF,$7E,$18,$7E ; . - 631 D2:0601 00 00 18 3C + 631 D2:061D 00 00 18 3C 3C 18 00 00 Char007: .db $00,$00,$18,$3C,$3C,$18,$00,$00 ; . - 632 D2:0609 FF FF E7 C3 + 632 D2:0625 FF FF E7 C3 C3 E7 FF FF Char008: .db $FF,$FF,$E7,$C3,$C3,$E7,$FF,$FF ; . - 633 D2:0611 00 3C 66 42 + 633 D2:062D 00 3C 66 42 42 66 3C 00 Char009: .db $00,$3C,$66,$42,$42,$66,$3C,$00 ; . - 634 D2:0619 FF C3 99 BD + 634 D2:0635 FF C3 99 BD BD 99 C3 FF Char010: .db $FF,$C3,$99,$BD,$BD,$99,$C3,$FF ; . - 635 D2:0621 0F 07 0F 7D + 635 D2:063D 0F 07 0F 7D CC CC CC 78 Char011: .db $0F,$07,$0F,$7D,$CC,$CC,$CC,$78 ; . - 636 D2:0629 3C 66 66 66 + 636 D2:0645 3C 66 66 66 3C 18 7E 18 Char012: .db $3C,$66,$66,$66,$3C,$18,$7E,$18 ; . - 637 D2:0631 3F 33 3F 30 + 637 D2:064D 3F 33 3F 30 30 70 F0 E0 Char013: .db $3F,$33,$3F,$30,$30,$70,$F0,$E0 ; . - 638 D2:0639 7F 63 7F 63 + 638 D2:0655 7F 63 7F 63 63 67 E6 C0 Char014: .db $7F,$63,$7F,$63,$63,$67,$E6,$C0 ; . - 639 D2:0641 99 5A 3C E7 + 639 D2:065D 99 5A 3C E7 E7 3C 5A 99 Char015: .db $99,$5A,$3C,$E7,$E7,$3C,$5A,$99 ; . - 640 D2:0649 80 E0 F8 FE + 640 D2:0665 80 E0 F8 FE F8 E0 80 00 Char016: .db $80,$E0,$F8,$FE,$F8,$E0,$80,$00 ; . - 641 D2:0651 02 0E 3E FE + 641 D2:066D 02 0E 3E FE 3E 0E 02 00 Char017: .db $02,$0E,$3E,$FE,$3E,$0E,$02,$00 ; . - 642 D2:0659 18 3C 7E 18 + 642 D2:0675 18 3C 7E 18 18 7E 3C 18 Char018: .db $18,$3C,$7E,$18,$18,$7E,$3C,$18 ; . - 643 D2:0661 66 66 66 66 + 643 D2:067D 66 66 66 66 66 00 66 00 Char019: .db $66,$66,$66,$66,$66,$00,$66,$00 ; . - 644 D2:0669 7F DB DB 7B + 644 D2:0685 7F DB DB 7B 1B 1B 1B 00 Char020: .db $7F,$DB,$DB,$7B,$1B,$1B,$1B,$00 ; . - 645 D2:0671 3F 60 7C 66 + 645 D2:068D 3F 60 7C 66 66 3E 06 FC Char021: .db $3F,$60,$7C,$66,$66,$3E,$06,$FC ; . - 646 D2:0679 00 00 00 00 + 646 D2:0695 00 00 00 00 7E 7E 7E 00 Char022: .db $00,$00,$00,$00,$7E,$7E,$7E,$00 ; . - 647 D2:0681 18 3C 7E 18 + 647 D2:069D 18 3C 7E 18 7E 3C 18 FF Char023: .db $18,$3C,$7E,$18,$7E,$3C,$18,$FF ; . - 648 D2:0689 18 3C 7E 18 + 648 D2:06A5 18 3C 7E 18 18 18 18 00 Char024: .db $18,$3C,$7E,$18,$18,$18,$18,$00 ; . - 649 D2:0691 18 18 18 18 + 649 D2:06AD 18 18 18 18 7E 3C 18 00 Char025: .db $18,$18,$18,$18,$7E,$3C,$18,$00 ; . - 650 D2:0699 00 18 0C FE + 650 D2:06B5 00 18 0C FE 0C 18 00 00 Char026: .db $00,$18,$0C,$FE,$0C,$18,$00,$00 ; . - 651 D2:06A1 00 30 60 FE + 651 D2:06BD 00 30 60 FE 60 30 00 00 Char027: .db $00,$30,$60,$FE,$60,$30,$00,$00 ; . - 652 D2:06A9 00 00 C0 C0 + 652 D2:06C5 00 00 C0 C0 C0 FE 00 00 Char028: .db $00,$00,$C0,$C0,$C0,$FE,$00,$00 ; . - 653 D2:06B1 00 24 66 FF + 653 D2:06CD 00 24 66 FF 66 24 00 00 Char029: .db $00,$24,$66,$FF,$66,$24,$00,$00 ; . - 654 D2:06B9 00 18 3C 7E + 654 D2:06D5 00 18 3C 7E FF FF 00 00 Char030: .db $00,$18,$3C,$7E,$FF,$FF,$00,$00 ; . - 655 D2:06C1 00 FF FF 7E + 655 D2:06DD 00 FF FF 7E 3C 18 00 00 Char031: .db $00,$FF,$FF,$7E,$3C,$18,$00,$00 ; . - 656 D2:06C9 00 00 00 00 + 656 D2:06E5 00 00 00 00 00 00 00 00 Char032: .db $00,$00,$00,$00,$00,$00,$00,$00 ; - 657 D2:06D1 C0 C0 C0 C0 + 657 D2:06ED C0 C0 C0 C0 C0 00 C0 00 Char033: .db $C0,$C0,$C0,$C0,$C0,$00,$C0,$00 ; ! - 658 D2:06D9 D8 D8 D8 00 + 658 D2:06F5 D8 D8 D8 00 00 00 00 00 Char034: .db $D8,$D8,$D8,$00,$00,$00,$00,$00 ; " - 659 D2:06E1 6C 6C FE 6C + 659 D2:06FD 6C 6C FE 6C FE 6C 6C 00 Char035: .db $6C,$6C,$FE,$6C,$FE,$6C,$6C,$00 ; # - 660 D2:06E9 18 7E C0 7C + 660 D2:0705 18 7E C0 7C 06 FC 18 00 Char036: .db $18,$7E,$C0,$7C,$06,$FC,$18,$00 ; $ - 661 D2:06F1 00 C6 CC 18 + 661 D2:070D 00 C6 CC 18 30 66 C6 00 Char037: .db $00,$C6,$CC,$18,$30,$66,$C6,$00 ; % - 662 D2:06F9 38 6C 38 76 + 662 D2:0715 38 6C 38 76 DC CC 76 00 Char038: .db $38,$6C,$38,$76,$DC,$CC,$76,$00 ; & - 663 D2:0701 30 30 60 00 + 663 D2:071D 30 30 60 00 00 00 00 00 Char039: .db $30,$30,$60,$00,$00,$00,$00,$00 ; ' - 664 D2:0709 30 60 C0 C0 + 664 D2:0725 30 60 C0 C0 C0 60 30 00 Char040: .db $30,$60,$C0,$C0,$C0,$60,$30,$00 ; ( - 665 D2:0711 C0 60 30 30 + 665 D2:072D C0 60 30 30 30 60 C0 00 Char041: .db $C0,$60,$30,$30,$30,$60,$C0,$00 ; ) - 666 D2:0719 00 66 3C FF + 666 D2:0735 00 66 3C FF 3C 66 00 00 Char042: .db $00,$66,$3C,$FF,$3C,$66,$00,$00 ; * - 667 D2:0721 00 30 30 FC + 667 D2:073D 00 30 30 FC FC 30 30 00 Char043: .db $00,$30,$30,$FC,$FC,$30,$30,$00 ; + - 668 D2:0729 00 00 00 00 + 668 D2:0745 00 00 00 00 00 60 60 C0 Char044: .db $00,$00,$00,$00,$00,$60,$60,$C0 ; , - 669 D2:0731 00 00 00 FC + 669 D2:074D 00 00 00 FC 00 00 00 00 Char045: .db $00,$00,$00,$FC,$00,$00,$00,$00 ; - - 670 D2:0739 00 00 00 00 + 670 D2:0755 00 00 00 00 00 C0 C0 00 Char046: .db $00,$00,$00,$00,$00,$C0,$C0,$00 ; . - 671 D2:0741 06 0C 18 30 + 671 D2:075D 06 0C 18 30 60 C0 80 00 Char047: .db $06,$0C,$18,$30,$60,$C0,$80,$00 ; / - 672 D2:0749 7C CE DE F6 + 672 D2:0765 7C CE DE F6 E6 C6 7C 00 Char048: .db $7C,$CE,$DE,$F6,$E6,$C6,$7C,$00 ; 0 - 673 D2:0751 30 70 30 30 + 673 D2:076D 30 70 30 30 30 30 FC 00 Char049: .db $30,$70,$30,$30,$30,$30,$FC,$00 ; 1 - 674 D2:0759 7C C6 06 7C + 674 D2:0775 7C C6 06 7C C0 C0 FE 00 Char050: .db $7C,$C6,$06,$7C,$C0,$C0,$FE,$00 ; 2 - 675 D2:0761 FC 06 06 3C + 675 D2:077D FC 06 06 3C 06 06 FC 00 Char051: .db $FC,$06,$06,$3C,$06,$06,$FC,$00 ; 3 - 676 D2:0769 0C CC CC CC + 676 D2:0785 0C CC CC CC FE 0C 0C 00 Char052: .db $0C,$CC,$CC,$CC,$FE,$0C,$0C,$00 ; 4 - 677 D2:0771 FE C0 FC 06 + 677 D2:078D FE C0 FC 06 06 C6 7C 00 Char053: .db $FE,$C0,$FC,$06,$06,$C6,$7C,$00 ; 5 - 678 D2:0779 7C C0 C0 FC + 678 D2:0795 7C C0 C0 FC C6 C6 7C 00 Char054: .db $7C,$C0,$C0,$FC,$C6,$C6,$7C,$00 ; 6 - 679 D2:0781 FE 06 06 0C + 679 D2:079D FE 06 06 0C 18 30 30 00 Char055: .db $FE,$06,$06,$0C,$18,$30,$30,$00 ; 7 - 680 D2:0789 7C C6 C6 7C + 680 D2:07A5 7C C6 C6 7C C6 C6 7C 00 Char056: .db $7C,$C6,$C6,$7C,$C6,$C6,$7C,$00 ; 8 - 681 D2:0791 7C C6 C6 7E + 681 D2:07AD 7C C6 C6 7E 06 06 7C 00 Char057: .db $7C,$C6,$C6,$7E,$06,$06,$7C,$00 ; 9 - 682 D2:0799 00 C0 C0 00 + 682 D2:07B5 00 C0 C0 00 00 C0 C0 00 Char058: .db $00,$C0,$C0,$00,$00,$C0,$C0,$00 ; : - 683 D2:07A1 00 60 60 00 + 683 D2:07BD 00 60 60 00 00 60 60 C0 Char059: .db $00,$60,$60,$00,$00,$60,$60,$C0 ; ; - 684 D2:07A9 18 30 60 C0 + 684 D2:07C5 18 30 60 C0 60 30 18 00 Char060: .db $18,$30,$60,$C0,$60,$30,$18,$00 ; < - 685 D2:07B1 00 00 FC 00 + 685 D2:07CD 00 00 FC 00 FC 00 00 00 Char061: .db $00,$00,$FC,$00,$FC,$00,$00,$00 ; = - 686 D2:07B9 C0 60 30 18 + 686 D2:07D5 C0 60 30 18 30 60 C0 00 Char062: .db $C0,$60,$30,$18,$30,$60,$C0,$00 ; > - 687 D2:07C1 78 CC 18 30 + 687 D2:07DD 78 CC 18 30 30 00 30 00 Char063: .db $78,$CC,$18,$30,$30,$00,$30,$00 ; ? - 688 D2:07C9 7C C6 DE DE + 688 D2:07E5 7C C6 DE DE DE C0 7E 00 Char064: .db $7C,$C6,$DE,$DE,$DE,$C0,$7E,$00 ; @ - 689 D2:07D1 38 6C C6 C6 + 689 D2:07ED 38 6C C6 C6 FE C6 C6 00 Char065: .db $38,$6C,$C6,$C6,$FE,$C6,$C6,$00 ; A - 690 D2:07D9 FC C6 C6 FC + 690 D2:07F5 FC C6 C6 FC C6 C6 FC 00 Char066: .db $FC,$C6,$C6,$FC,$C6,$C6,$FC,$00 ; B - 691 D2:07E1 7C C6 C0 C0 + 691 D2:07FD 7C C6 C0 C0 C0 C6 7C 00 Char067: .db $7C,$C6,$C0,$C0,$C0,$C6,$7C,$00 ; C - 692 D2:07E9 F8 CC C6 C6 + 692 D2:0805 F8 CC C6 C6 C6 CC F8 00 Char068: .db $F8,$CC,$C6,$C6,$C6,$CC,$F8,$00 ; D - 693 D2:07F1 FE C0 C0 F8 + 693 D2:080D FE C0 C0 F8 C0 C0 FE 00 Char069: .db $FE,$C0,$C0,$F8,$C0,$C0,$FE,$00 ; E - 694 D2:07F9 FE C0 C0 F8 + 694 D2:0815 FE C0 C0 F8 C0 C0 C0 00 Char070: .db $FE,$C0,$C0,$F8,$C0,$C0,$C0,$00 ; F - 695 D2:0801 7C C6 C0 C0 + 695 D2:081D 7C C6 C0 C0 CE C6 7C 00 Char071: .db $7C,$C6,$C0,$C0,$CE,$C6,$7C,$00 ; G - 696 D2:0809 C6 C6 C6 FE + 696 D2:0825 C6 C6 C6 FE C6 C6 C6 00 Char072: .db $C6,$C6,$C6,$FE,$C6,$C6,$C6,$00 ; H - 697 D2:0811 7E 18 18 18 + 697 D2:082D 7E 18 18 18 18 18 7E 00 Char073: .db $7E,$18,$18,$18,$18,$18,$7E,$00 ; I - 698 D2:0819 06 06 06 06 + 698 D2:0835 06 06 06 06 06 C6 7C 00 Char074: .db $06,$06,$06,$06,$06,$C6,$7C,$00 ; J - 699 D2:0821 C6 CC D8 F0 + 699 D2:083D C6 CC D8 F0 D8 CC C6 00 Char075: .db $C6,$CC,$D8,$F0,$D8,$CC,$C6,$00 ; K - 700 D2:0829 C0 C0 C0 C0 + 700 D2:0845 C0 C0 C0 C0 C0 C0 FE 00 Char076: .db $C0,$C0,$C0,$C0,$C0,$C0,$FE,$00 ; L - 701 D2:0831 C6 EE FE FE + 701 D2:084D C6 EE FE FE D6 C6 C6 00 Char077: .db $C6,$EE,$FE,$FE,$D6,$C6,$C6,$00 ; M - 702 D2:0839 C6 E6 F6 DE + 702 D2:0855 C6 E6 F6 DE CE C6 C6 00 Char078: .db $C6,$E6,$F6,$DE,$CE,$C6,$C6,$00 ; N - 703 D2:0841 7C C6 C6 C6 + 703 D2:085D 7C C6 C6 C6 C6 C6 7C 00 Char079: .db $7C,$C6,$C6,$C6,$C6,$C6,$7C,$00 ; O - 704 D2:0849 FC C6 C6 FC + 704 D2:0865 FC C6 C6 FC C0 C0 C0 00 Char080: .db $FC,$C6,$C6,$FC,$C0,$C0,$C0,$00 ; P - 705 D2:0851 7C C6 C6 C6 + 705 D2:086D 7C C6 C6 C6 D6 DE 7C 06 Char081: .db $7C,$C6,$C6,$C6,$D6,$DE,$7C,$06 ; Q - 706 D2:0859 FC C6 C6 FC + 706 D2:0875 FC C6 C6 FC D8 CC C6 00 Char082: .db $FC,$C6,$C6,$FC,$D8,$CC,$C6,$00 ; R - 707 D2:0861 7C C6 C0 7C + 707 D2:087D 7C C6 C0 7C 06 C6 7C 00 Char083: .db $7C,$C6,$C0,$7C,$06,$C6,$7C,$00 ; S - 708 D2:0869 FF 18 18 18 + 708 D2:0885 FF 18 18 18 18 18 18 00 Char084: .db $FF,$18,$18,$18,$18,$18,$18,$00 ; T - 709 D2:0871 C6 C6 C6 C6 + 709 D2:088D C6 C6 C6 C6 C6 C6 FE 00 Char085: .db $C6,$C6,$C6,$C6,$C6,$C6,$FE,$00 ; U - 710 D2:0879 C6 C6 C6 C6 + 710 D2:0895 C6 C6 C6 C6 C6 7C 38 00 Char086: .db $C6,$C6,$C6,$C6,$C6,$7C,$38,$00 ; V - 711 D2:0881 C6 C6 C6 C6 + 711 D2:089D C6 C6 C6 C6 D6 FE 6C 00 Char087: .db $C6,$C6,$C6,$C6,$D6,$FE,$6C,$00 ; W - 712 D2:0889 C6 C6 6C 38 + 712 D2:08A5 C6 C6 6C 38 6C C6 C6 00 Char088: .db $C6,$C6,$6C,$38,$6C,$C6,$C6,$00 ; X - 713 D2:0891 C6 C6 C6 7C + 713 D2:08AD C6 C6 C6 7C 18 30 E0 00 Char089: .db $C6,$C6,$C6,$7C,$18,$30,$E0,$00 ; Y - 714 D2:0899 FE 06 0C 18 + 714 D2:08B5 FE 06 0C 18 30 60 FE 00 Char090: .db $FE,$06,$0C,$18,$30,$60,$FE,$00 ; Z - 715 D2:08A1 F0 C0 C0 C0 + 715 D2:08BD F0 C0 C0 C0 C0 C0 F0 00 Char091: .db $F0,$C0,$C0,$C0,$C0,$C0,$F0,$00 ; [ - 716 D2:08A9 C0 60 30 18 + 716 D2:08C5 C0 60 30 18 0C 06 02 00 Char092: .db $C0,$60,$30,$18,$0C,$06,$02,$00 ; \ - 717 D2:08B1 F0 30 30 30 + 717 D2:08CD F0 30 30 30 30 30 F0 00 Char093: .db $F0,$30,$30,$30,$30,$30,$F0,$00 ; ] - 718 D2:08B9 10 38 6C C6 + 718 D2:08D5 10 38 6C C6 00 00 00 00 Char094: .db $10,$38,$6C,$C6,$00,$00,$00,$00 ; ^ - 719 D2:08C1 00 00 00 00 + 719 D2:08DD 00 00 00 00 00 00 00 FF Char095: .db $00,$00,$00,$00,$00,$00,$00,$FF ; _ - 720 D2:08C9 C0 C0 60 00 + 720 D2:08E5 C0 C0 60 00 00 00 00 00 Char096: .db $C0,$C0,$60,$00,$00,$00,$00,$00 ; ` - 721 D2:08D1 00 00 7C 06 + 721 D2:08ED 00 00 7C 06 7E C6 7E 00 Char097: .db $00,$00,$7C,$06,$7E,$C6,$7E,$00 ; a - 722 D2:08D9 C0 C0 C0 FC + 722 D2:08F5 C0 C0 C0 FC C6 C6 FC 00 Char098: .db $C0,$C0,$C0,$FC,$C6,$C6,$FC,$00 ; b - 723 D2:08E1 00 00 7C C6 + 723 D2:08FD 00 00 7C C6 C0 C6 7C 00 Char099: .db $00,$00,$7C,$C6,$C0,$C6,$7C,$00 ; c - 724 D2:08E9 06 06 06 7E + 724 D2:0905 06 06 06 7E C6 C6 7E 00 Char100: .db $06,$06,$06,$7E,$C6,$C6,$7E,$00 ; d - 725 D2:08F1 00 00 7C C6 + 725 D2:090D 00 00 7C C6 FE C0 7C 00 Char101: .db $00,$00,$7C,$C6,$FE,$C0,$7C,$00 ; e - 726 D2:08F9 1C 36 30 78 + 726 D2:0915 1C 36 30 78 30 30 78 00 Char102: .db $1C,$36,$30,$78,$30,$30,$78,$00 ; f - 727 D2:0901 00 00 7E C6 + 727 D2:091D 00 00 7E C6 C6 7E 06 FC Char103: .db $00,$00,$7E,$C6,$C6,$7E,$06,$FC ; g - 728 D2:0909 C0 C0 FC C6 + 728 D2:0925 C0 C0 FC C6 C6 C6 C6 00 Char104: .db $C0,$C0,$FC,$C6,$C6,$C6,$C6,$00 ; h - 729 D2:0911 60 00 E0 60 + 729 D2:092D 60 00 E0 60 60 60 F0 00 Char105: .db $60,$00,$E0,$60,$60,$60,$F0,$00 ; i - 730 D2:0919 06 00 06 06 + 730 D2:0935 06 00 06 06 06 06 C6 7C Char106: .db $06,$00,$06,$06,$06,$06,$C6,$7C ; j - 731 D2:0921 C0 C0 CC D8 + 731 D2:093D C0 C0 CC D8 F8 CC C6 00 Char107: .db $C0,$C0,$CC,$D8,$F8,$CC,$C6,$00 ; k - 732 D2:0929 E0 60 60 60 + 732 D2:0945 E0 60 60 60 60 60 F0 00 Char108: .db $E0,$60,$60,$60,$60,$60,$F0,$00 ; l - 733 D2:0931 00 00 CC FE + 733 D2:094D 00 00 CC FE FE D6 D6 00 Char109: .db $00,$00,$CC,$FE,$FE,$D6,$D6,$00 ; m - 734 D2:0939 00 00 FC C6 + 734 D2:0955 00 00 FC C6 C6 C6 C6 00 Char110: .db $00,$00,$FC,$C6,$C6,$C6,$C6,$00 ; n - 735 D2:0941 00 00 7C C6 + 735 D2:095D 00 00 7C C6 C6 C6 7C 00 Char111: .db $00,$00,$7C,$C6,$C6,$C6,$7C,$00 ; o - 736 D2:0949 00 00 FC C6 + 736 D2:0965 00 00 FC C6 C6 FC C0 C0 Char112: .db $00,$00,$FC,$C6,$C6,$FC,$C0,$C0 ; p - 737 D2:0951 00 00 7E C6 + 737 D2:096D 00 00 7E C6 C6 7E 06 06 Char113: .db $00,$00,$7E,$C6,$C6,$7E,$06,$06 ; q - 738 D2:0959 00 00 FC C6 + 738 D2:0975 00 00 FC C6 C0 C0 C0 00 Char114: .db $00,$00,$FC,$C6,$C0,$C0,$C0,$00 ; r - 739 D2:0961 00 00 7E C0 + 739 D2:097D 00 00 7E C0 7C 06 FC 00 Char115: .db $00,$00,$7E,$C0,$7C,$06,$FC,$00 ; s - 740 D2:0969 30 30 FC 30 + 740 D2:0985 30 30 FC 30 30 30 1C 00 Char116: .db $30,$30,$FC,$30,$30,$30,$1C,$00 ; t - 741 D2:0971 00 00 C6 C6 + 741 D2:098D 00 00 C6 C6 C6 C6 7E 00 Char117: .db $00,$00,$C6,$C6,$C6,$C6,$7E,$00 ; u - 742 D2:0979 00 00 C6 C6 + 742 D2:0995 00 00 C6 C6 C6 7C 38 00 Char118: .db $00,$00,$C6,$C6,$C6,$7C,$38,$00 ; v - 743 D2:0981 00 00 C6 C6 + 743 D2:099D 00 00 C6 C6 D6 FE 6C 00 Char119: .db $00,$00,$C6,$C6,$D6,$FE,$6C,$00 ; w - 744 D2:0989 00 00 C6 6C + 744 D2:09A5 00 00 C6 6C 38 6C C6 00 Char120: .db $00,$00,$C6,$6C,$38,$6C,$C6,$00 ; x - 745 D2:0991 00 00 C6 C6 + 745 D2:09AD 00 00 C6 C6 C6 7E 06 FC Char121: .db $00,$00,$C6,$C6,$C6,$7E,$06,$FC ; y - 746 D2:0999 00 00 FE 0C + 746 D2:09B5 00 00 FE 0C 38 60 FE 00 Char122: .db $00,$00,$FE,$0C,$38,$60,$FE,$00 ; z - 747 D2:09A1 1C 30 30 E0 + 747 D2:09BD 1C 30 30 E0 30 30 1C 00 Char123: .db $1C,$30,$30,$E0,$30,$30,$1C,$00 ; { - 748 D2:09A9 C0 C0 C0 00 + 748 D2:09C5 C0 C0 C0 00 C0 C0 C0 00 Char124: .db $C0,$C0,$C0,$00,$C0,$C0,$C0,$00 ; | - 749 D2:09B1 E0 30 30 1C + 749 D2:09CD E0 30 30 1C 30 30 E0 00 Char125: .db $E0,$30,$30,$1C,$30,$30,$E0,$00 ; } - 750 D2:09B9 76 DC 00 00 + 750 D2:09D5 76 DC 00 00 00 00 00 00 Char126: .db $76,$DC,$00,$00,$00,$00,$00,$00 ; ~ - 751 D2:09C1 00 10 38 6C + 751 D2:09DD 00 10 38 6C C6 C6 FE 00 Char127: .db $00,$10,$38,$6C,$C6,$C6,$FE,$00 ; . - 752 D2:09C9 - - - - - 753 D2:09C9 - - - - ;------------------------------------------------------------------------------- - 754 D2:09C9 - - - - ; Inner library data - 755 D2:09C9 - - - - ;------------------------------------------------------------------------------- - 756 D2:09C9 - - - - - 757 D2:09C9 - - - - _xmin: - 758 D2:09C9 00 00 00 - .dl 0 - 759 D2:09CC - - - - _ymin: - 760 D2:09CC 00 00 00 - .dl 0 - 761 D2:09CF - - - - _xmax: - 762 D2:09CF 40 01 00 - .dl lcdWidth - 763 D2:09D2 - - - - _ymax: - 764 D2:09D2 F0 00 00 - .dl lcdHeight - 765 D2:09D5 - - - - - 766 D2:09D5 - - - - tmpWidth: - 767 D2:09D5 00 00 00 00 + 752 D2:09E5 - - - - + 753 D2:09E5 - - - - ;------------------------------------------------------------------------------- + 754 D2:09E5 - - - - ; Inner library data + 755 D2:09E5 - - - - ;------------------------------------------------------------------------------- + 756 D2:09E5 - - - - + 757 D2:09E5 - - - - _xmin: + 758 D2:09E5 00 00 00 - .dl 0 + 759 D2:09E8 - - - - _ymin: + 760 D2:09E8 00 00 00 - .dl 0 + 761 D2:09EB - - - - _xmax: + 762 D2:09EB 40 01 00 - .dl lcdWidth + 763 D2:09EE - - - - _ymax: + 764 D2:09EE F0 00 00 - .dl lcdHeight + 765 D2:09F1 - - - - + 766 D2:09F1 - - - - tmpWidth: + 767 D2:09F1 00 00 00 00 00 00 00 00 00 - - - .dl 0,0,0 Listing for file "example.ez80" - 153 D2:09DE - - - - - 154 D2:09DE - - - - posX: - 155 D2:09DE 00 00 - - .dw 0 - 156 D2:09E0 - - - - posY: - 157 D2:09E0 00 00 - - .dw 0 - 158 D2:09E2 - - - - posZ: - 159 D2:09E2 00 00 - - .dw 0 - 160 D2:09E4 - - - - Temp: - 161 D2:09E4 00 00 00 00 + 158 D2:09FA - - - - + 159 D2:09FA - - - - posX: + 160 D2:09FA 00 00 - - .dw 0 + 161 D2:09FC - - - - posY: + 162 D2:09FC 00 00 - - .dw 0 + 163 D2:09FE - - - - posZ: + 164 D2:09FE 00 00 - - .dw 0 + 165 D2:0A00 - - - - Temp: + 166 D2:0A00 00 00 00 00 00 00 - - .dl 0,0 - 162 D2:09EA - - - - - 163 D2:09EA - - - - VertexName: - 164 D2:09EA 15 54 4F 4E + 167 D2:0A06 - - - - + 168 D2:0A06 - - - - VertexName: + 169 D2:0A06 15 54 4F 4E 59 30 00 - .db AppVarObj, "TONY0",0 - 165 D2:09F1 - - - - Vertex: - 166 D2:09F1 00 00 00 - .dl 0 - 167 D2:09F4 - - - - TriangleName: - 168 D2:09F4 15 54 4F 4E + 170 D2:0A0D - - - - Vertex: + 171 D2:0A0D 00 00 00 - .dl 0 + 172 D2:0A10 - - - - TriangleName: + 173 D2:0A10 15 54 4F 4E 59 31 00 - .db AppVarObj, "TONY1", 0 - 169 D2:09FB - - - - Triangle: - 170 D2:09FB 00 00 00 - .dl 0 - 171 D2:09FE - - - - TextName: - 172 D2:09FE 15 54 4F 4E + 174 D2:0A17 - - - - Triangle: + 175 D2:0A17 00 00 00 - .dl 0 + 176 D2:0A1A - - - - TextName: + 177 D2:0A1A 15 54 4F 4E 59 32 00 - .db AppVarObj, "TONY2",0 - 173 D2:0A05 - - - - Texture: - 174 D2:0A05 00 00 00 - .dl 0 - 175 D2:0A08 - - - - - 176 D2:0A08 - - - - ScaleMatrix: - 177 D2:0A08 4D 00 00 - .db 77,0,0 ; 44 - 178 D2:0A0B 00 66 00 - .db 0,102,0 ; 58 - 179 D2:0A0E 00 00 40 - .db 0,0,64 ; 37 - 180 D2:0A11 - - - - UnitVector: - 181 D2:0A11 00 00 00 00 + 178 D2:0A21 - - - - Texture: + 179 D2:0A21 00 00 00 - .dl 0 + 180 D2:0A24 - - - - + 181 D2:0A24 - - - - ScaleMatrix: + 182 D2:0A24 4D 00 00 - .db 77,0,0 ; 44 + 183 D2:0A27 00 66 00 - .db 0,102,0 ; 58 + 184 D2:0A2A 00 00 40 - .db 0,0,64 ; 37 + 185 D2:0A2D - - - - UnitVector: + 186 D2:0A2D 00 00 00 00 40 00 00 00 00 - - - .dl 0,16384,0 - 182 D2:0A1A - - - - Quaternion: - 183 D2:0A1A 00 00 00 00 + 187 D2:0A36 - - - - Quaternion: + 188 D2:0A36 00 00 00 00 00 00 00 00 00 00 00 00 .dl 0,0,0,0 - 184 D2:0A26 - - - - QuatMatrix: - 185 D2:0A26 00 00 00 00 + 189 D2:0A42 - - - - QuatMatrix: + 190 D2:0A42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - - .dl 0,0,0,0,0,0 - 186 D2:0A38 - - - - WorldMatrix: - 187 D2:0A38 00 00 00 00 + 191 D2:0A54 - - - - WorldMatrix: + 192 D2:0A54 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - - .dl 0,0,0,0,0,0 - 188 D2:0A4A - - - - ModelMatrix: - 189 D2:0A4A 40 00 00 - .db 64,0,0 - 190 D2:0A4D 00 40 00 - .db 0,64,0 - 191 D2:0A50 00 00 40 - .db 0,0,64 - 192 D2:0A53 00 00 00 00 + 193 D2:0A66 - - - - ModelMatrix: + 194 D2:0A66 40 00 00 - .db 64,0,0 + 195 D2:0A69 00 40 00 - .db 0,64,0 + 196 D2:0A6C 00 00 40 - .db 0,0,64 + 197 D2:0A6F 00 00 00 00 00 00 - - .dw 0,0,0 - 193 D2:0A59 - - - - LaraMatrix: - 194 D2:0A59 40 00 00 - .db 64,0,0 - 195 D2:0A5C 00 40 00 - .db 0,64,0 - 196 D2:0A5F 00 00 40 - .db 0,0,64 - 197 D2:0A62 80 00 40 00 + 198 D2:0A75 - - - - LaraMatrix: + 199 D2:0A75 40 00 00 - .db 64,0,0 + 200 D2:0A78 00 40 00 - .db 0,64,0 + 201 D2:0A7B 00 00 40 - .db 0,0,64 + 202 D2:0A7E 80 00 40 00 40 00 - - .dw 128,64,64 - 198 D2:0A68 - - - - EulerAngle: - 199 D2:0A68 00 00 00 00 + 203 D2:0A84 - - - - EulerAngle: + 204 D2:0A84 00 00 00 00 00 00 00 00 00 - - - .dl 0,0,0 - 200 D2:0A71 - - - - texture_frame: - 201 D2:0A71 00 00 00 - .dl 0 - 202 D2:0A74 - - - - - 203 D2:0A74 - - - - Camera: - 204 D2:0A74 21 00 00 F5 ld hl,$F50000 - 205 D2:0A78 36 02 - - ld (hl),2 - 206 D2:0A7A AF - - - xor a,a - 207 D2:0A7B - - - - kwait: - 208 D2:0A7B BE - - - cp a,(hl) - 209 D2:0A7C 20 FD - - jr nz,kwait - 210 D2:0A7E - - - - - 211 D2:0A7E 11 08 00 00 ld de, 8 - 212 D2:0A82 3A 1E 00 F5 ld a, ($F5001E) - 213 D2:0A86 CB 4F - - bit 1, a - 214 D2:0A88 28 09 - - jr z, _kskip - 215 D2:0A8A 2A 68 0A D2 ld hl, (EulerAngle) - 216 D2:0A8E 19 - - - add hl, de - 217 D2:0A8F 22 68 0A D2 ld (EulerAngle), hl - 218 D2:0A93 - - - - _kskip: - 219 D2:0A93 11 F8 FF FF ld de, -8 - 220 D2:0A97 3A 1E 00 F5 ld a, ($F5001E) - 221 D2:0A9B CB 57 - - bit 2, a - 222 D2:0A9D 28 09 - - jr z, _kskip2 - 223 D2:0A9F 2A 68 0A D2 ld hl, (EulerAngle) - 224 D2:0AA3 19 - - - add hl, de - 225 D2:0AA4 22 68 0A D2 ld (EulerAngle), hl - 226 D2:0AA8 - - - - _kskip2: - 227 D2:0AA8 - - - - - 228 D2:0AA8 21 38 0A D2 ld hl, WorldMatrix - 229 D2:0AAC CD 43 AC D1 call vxMatrixLoadIdentity - 230 D2:0AB0 - - - - - 231 D2:0AB0 2A 68 0A D2 ld hl, (EulerAngle) - 232 D2:0AB4 FD 21 1A 0A + 205 D2:0A8D - - - - texture_frame: + 206 D2:0A8D 00 00 00 - .dl 0 + 207 D2:0A90 - - - - + 208 D2:0A90 - - - - Camera: + 209 D2:0A90 21 00 00 F5 ld hl,$F50000 + 210 D2:0A94 36 02 - - ld (hl),2 + 211 D2:0A96 AF - - - xor a,a + 212 D2:0A97 - - - - kwait: + 213 D2:0A97 BE - - - cp a,(hl) + 214 D2:0A98 20 FD - - jr nz,kwait + 215 D2:0A9A - - - - + 216 D2:0A9A 11 08 00 00 ld de, 8 + 217 D2:0A9E 3A 1E 00 F5 ld a, ($F5001E) + 218 D2:0AA2 CB 4F - - bit 1, a + 219 D2:0AA4 28 09 - - jr z, _kskip + 220 D2:0AA6 2A 84 0A D2 ld hl, (EulerAngle) + 221 D2:0AAA 19 - - - add hl, de + 222 D2:0AAB 22 84 0A D2 ld (EulerAngle), hl + 223 D2:0AAF - - - - _kskip: + 224 D2:0AAF 11 F8 FF FF ld de, -8 + 225 D2:0AB3 3A 1E 00 F5 ld a, ($F5001E) + 226 D2:0AB7 CB 57 - - bit 2, a + 227 D2:0AB9 28 09 - - jr z, _kskip2 + 228 D2:0ABB 2A 84 0A D2 ld hl, (EulerAngle) + 229 D2:0ABF 19 - - - add hl, de + 230 D2:0AC0 22 84 0A D2 ld (EulerAngle), hl + 231 D2:0AC4 - - - - _kskip2: + 232 D2:0AC4 - - - - + 233 D2:0AC4 21 54 0A D2 ld hl, WorldMatrix + 234 D2:0AC8 CD D6 AB D1 call vxMatrixLoadIdentity + 235 D2:0ACC - - - - + 236 D2:0ACC 2A 84 0A D2 ld hl, (EulerAngle) + 237 D2:0AD0 FD 21 36 0A D2 - - - ld iy, Quaternion - 233 D2:0AB9 DD 21 11 0A + 238 D2:0AD5 DD 21 2D 0A D2 - - - ld ix, UnitVector - 234 D2:0ABE CD 3A B1 D1 call vxQuaternionRotationAxis - 235 D2:0AC2 DD 21 38 0A + 239 D2:0ADA CD CD B0 D1 call vxQuaternionRotationAxis + 240 D2:0ADE DD 21 54 0A D2 - - - ld ix, WorldMatrix - 236 D2:0AC7 CD 8C B0 D1 call vxQuaternionGetMatrix - 237 D2:0ACB FD 21 38 0A + 241 D2:0AE3 CD 1F B0 D1 call vxQuaternionGetMatrix + 242 D2:0AE7 FD 21 54 0A D2 - - - ld iy, WorldMatrix - 238 D2:0AD0 DD 21 08 0A + 243 D2:0AEC DD 21 24 0A D2 - - - ld ix, ScaleMatrix - 239 D2:0AD5 21 38 0A D2 ld hl, WorldMatrix - 240 D2:0AD9 CD D9 AC D1 call vxMatrixMlt - 241 D2:0ADD - - - - - 242 D2:0ADD 3A 1E 00 F5 ld a, ($F5001E) - 243 D2:0AE1 CB 47 - - bit 0, a - 244 D2:0AE3 28 3F - - jr z, _kskip3 - 245 D2:0AE5 - - - - - 246 D2:0AE5 - - - - - 247 D2:0AE5 ED 5B DE 09 + 244 D2:0AF1 21 54 0A D2 ld hl, WorldMatrix + 245 D2:0AF5 CD 6C AC D1 call vxMatrixMlt + 246 D2:0AF9 - - - - + 247 D2:0AF9 3A 1E 00 F5 ld a, ($F5001E) + 248 D2:0AFD CB 47 - - bit 0, a + 249 D2:0AFF 28 3F - - jr z, _kskip3 + 250 D2:0B01 - - - - + 251 D2:0B01 - - - - + 252 D2:0B01 ED 5B FA 09 D2 - - - ld de, (posX) - 248 D2:0AEA 3A 3E 0A D2 ld a, (WorldMatrix+6) - 249 D2:0AEE 17 - - - rla - 250 D2:0AEF ED 62 - - sbc hl, hl - 251 D2:0AF1 1F - - - rra - 252 D2:0AF2 6F - - - ld l, a - 253 D2:0AF3 29 - - - add hl, hl - 254 D2:0AF4 B7 - - - or a, a - 255 D2:0AF5 19 - - - add hl, de - 256 D2:0AF6 ED 5B E0 09 + 253 D2:0B06 3A 5A 0A D2 ld a, (WorldMatrix+6) + 254 D2:0B0A 17 - - - rla + 255 D2:0B0B ED 62 - - sbc hl, hl + 256 D2:0B0D 1F - - - rra + 257 D2:0B0E 6F - - - ld l, a + 258 D2:0B0F 29 - - - add hl, hl + 259 D2:0B10 B7 - - - or a, a + 260 D2:0B11 19 - - - add hl, de + 261 D2:0B12 ED 5B FC 09 D2 - - - ld de, (posY) - 257 D2:0AFB 22 DE 09 D2 ld (posX), hl - 258 D2:0AFF 3A 3F 0A D2 ld a, (WorldMatrix+7) - 259 D2:0B03 17 - - - rla - 260 D2:0B04 ED 62 - - sbc hl, hl - 261 D2:0B06 1F - - - rra - 262 D2:0B07 6F - - - ld l, a - 263 D2:0B08 29 - - - add hl, hl - 264 D2:0B09 B7 - - - or a, a - 265 D2:0B0A 19 - - - add hl, de - 266 D2:0B0B ED 5B E2 09 + 262 D2:0B17 22 FA 09 D2 ld (posX), hl + 263 D2:0B1B 3A 5B 0A D2 ld a, (WorldMatrix+7) + 264 D2:0B1F 17 - - - rla + 265 D2:0B20 ED 62 - - sbc hl, hl + 266 D2:0B22 1F - - - rra + 267 D2:0B23 6F - - - ld l, a + 268 D2:0B24 29 - - - add hl, hl + 269 D2:0B25 B7 - - - or a, a + 270 D2:0B26 19 - - - add hl, de + 271 D2:0B27 ED 5B FE 09 D2 - - - ld de, (posZ) - 267 D2:0B10 22 E0 09 D2 ld (posY), hl - 268 D2:0B14 3A 40 0A D2 ld a, (WorldMatrix+8) - 269 D2:0B18 17 - - - rla - 270 D2:0B19 ED 62 - - sbc hl, hl - 271 D2:0B1B 1F - - - rra - 272 D2:0B1C 6F - - - ld l, a - 273 D2:0B1D 29 - - - add hl, hl - 274 D2:0B1E B7 - - - or a, a - 275 D2:0B1F 19 - - - add hl, de - 276 D2:0B20 22 E2 09 D2 ld (posZ), hl - 277 D2:0B24 - - - - _kskip3: - 278 D2:0B24 - - - - - 279 D2:0B24 3A 1E 00 F5 ld a, ($F5001E) - 280 D2:0B28 CB 5F - - bit 3, a - 281 D2:0B2A 28 45 - - jr z, _kskip4 - 282 D2:0B2C - - - - - 283 D2:0B2C ED 5B DE 09 + 272 D2:0B2C 22 FC 09 D2 ld (posY), hl + 273 D2:0B30 3A 5C 0A D2 ld a, (WorldMatrix+8) + 274 D2:0B34 17 - - - rla + 275 D2:0B35 ED 62 - - sbc hl, hl + 276 D2:0B37 1F - - - rra + 277 D2:0B38 6F - - - ld l, a + 278 D2:0B39 29 - - - add hl, hl + 279 D2:0B3A B7 - - - or a, a + 280 D2:0B3B 19 - - - add hl, de + 281 D2:0B3C 22 FE 09 D2 ld (posZ), hl + 282 D2:0B40 - - - - _kskip3: + 283 D2:0B40 - - - - + 284 D2:0B40 3A 1E 00 F5 ld a, ($F5001E) + 285 D2:0B44 CB 5F - - bit 3, a + 286 D2:0B46 28 45 - - jr z, _kskip4 + 287 D2:0B48 - - - - + 288 D2:0B48 ED 5B FA 09 D2 - - - ld de, (posX) - 284 D2:0B31 3A 3E 0A D2 ld a, (WorldMatrix+6) - 285 D2:0B35 ED 44 - - neg - 286 D2:0B37 17 - - - rla - 287 D2:0B38 ED 62 - - sbc hl, hl - 288 D2:0B3A 1F - - - rra - 289 D2:0B3B 6F - - - ld l, a - 290 D2:0B3C 29 - - - add hl, hl - 291 D2:0B3D B7 - - - or a, a - 292 D2:0B3E 19 - - - add hl, de - 293 D2:0B3F ED 5B E0 09 + 289 D2:0B4D 3A 5A 0A D2 ld a, (WorldMatrix+6) + 290 D2:0B51 ED 44 - - neg + 291 D2:0B53 17 - - - rla + 292 D2:0B54 ED 62 - - sbc hl, hl + 293 D2:0B56 1F - - - rra + 294 D2:0B57 6F - - - ld l, a + 295 D2:0B58 29 - - - add hl, hl + 296 D2:0B59 B7 - - - or a, a + 297 D2:0B5A 19 - - - add hl, de + 298 D2:0B5B ED 5B FC 09 D2 - - - ld de, (posY) - 294 D2:0B44 22 DE 09 D2 ld (posX), hl - 295 D2:0B48 3A 3F 0A D2 ld a, (WorldMatrix+7) - 296 D2:0B4C ED 44 - - neg - 297 D2:0B4E 17 - - - rla - 298 D2:0B4F ED 62 - - sbc hl, hl - 299 D2:0B51 1F - - - rra - 300 D2:0B52 6F - - - ld l, a - 301 D2:0B53 29 - - - add hl, hl - 302 D2:0B54 B7 - - - or a, a - 303 D2:0B55 19 - - - add hl, de - 304 D2:0B56 ED 5B E2 09 + 299 D2:0B60 22 FA 09 D2 ld (posX), hl + 300 D2:0B64 3A 5B 0A D2 ld a, (WorldMatrix+7) + 301 D2:0B68 ED 44 - - neg + 302 D2:0B6A 17 - - - rla + 303 D2:0B6B ED 62 - - sbc hl, hl + 304 D2:0B6D 1F - - - rra + 305 D2:0B6E 6F - - - ld l, a + 306 D2:0B6F 29 - - - add hl, hl + 307 D2:0B70 B7 - - - or a, a + 308 D2:0B71 19 - - - add hl, de + 309 D2:0B72 ED 5B FE 09 D2 - - - ld de, (posZ) - 305 D2:0B5B 22 E0 09 D2 ld (posY), hl - 306 D2:0B5F 3A 40 0A D2 ld a, (WorldMatrix+8) - 307 D2:0B63 ED 44 - - neg - 308 D2:0B65 17 - - - rla - 309 D2:0B66 ED 62 - - sbc hl, hl - 310 D2:0B68 1F - - - rra - 311 D2:0B69 6F - - - ld l, a - 312 D2:0B6A 29 - - - add hl, hl - 313 D2:0B6B B7 - - - or a, a - 314 D2:0B6C 19 - - - add hl, de - 315 D2:0B6D 22 E2 09 D2 ld (posZ), hl - 316 D2:0B71 - - - - _kskip4: - 317 D2:0B71 - - - - - 318 D2:0B71 - - - - - 319 D2:0B71 2A E0 09 D2 ld hl, (posY) - 320 D2:0B75 11 20 00 00 ld de, 32 - 321 D2:0B79 3A 12 00 F5 ld a, ($F50012) - 322 D2:0B7D CB 47 - - bit 0, a - 323 D2:0B7F 28 01 - - jr z, _kskip6 - 324 D2:0B81 19 - - - add hl, de - 325 D2:0B82 - - - - _kskip6: - 326 D2:0B82 - - - - - 327 D2:0B82 CB 67 - - bit 4, a - 328 D2:0B84 28 03 - - jr z, _kskip7 - 329 D2:0B86 B7 - - - or a, a - 330 D2:0B87 ED 52 - - sbc hl, de - 331 D2:0B89 - - - - _kskip7: - 332 D2:0B89 - - - - - 333 D2:0B89 7D - - - ld a, l - 334 D2:0B8A 32 E0 09 D2 ld (posY), a - 335 D2:0B8E 7C - - - ld a, h - 336 D2:0B8F 32 E1 09 D2 ld (posY+1), a - 337 D2:0B93 - - - - - 338 D2:0B93 DD 21 38 0A + 310 D2:0B77 22 FC 09 D2 ld (posY), hl + 311 D2:0B7B 3A 5C 0A D2 ld a, (WorldMatrix+8) + 312 D2:0B7F ED 44 - - neg + 313 D2:0B81 17 - - - rla + 314 D2:0B82 ED 62 - - sbc hl, hl + 315 D2:0B84 1F - - - rra + 316 D2:0B85 6F - - - ld l, a + 317 D2:0B86 29 - - - add hl, hl + 318 D2:0B87 B7 - - - or a, a + 319 D2:0B88 19 - - - add hl, de + 320 D2:0B89 22 FE 09 D2 ld (posZ), hl + 321 D2:0B8D - - - - _kskip4: + 322 D2:0B8D - - - - + 323 D2:0B8D - - - - + 324 D2:0B8D 2A FC 09 D2 ld hl, (posY) + 325 D2:0B91 11 20 00 00 ld de, 32 + 326 D2:0B95 3A 12 00 F5 ld a, ($F50012) + 327 D2:0B99 CB 47 - - bit 0, a + 328 D2:0B9B 28 01 - - jr z, _kskip6 + 329 D2:0B9D 19 - - - add hl, de + 330 D2:0B9E - - - - _kskip6: + 331 D2:0B9E - - - - + 332 D2:0B9E CB 67 - - bit 4, a + 333 D2:0BA0 28 03 - - jr z, _kskip7 + 334 D2:0BA2 B7 - - - or a, a + 335 D2:0BA3 ED 52 - - sbc hl, de + 336 D2:0BA5 - - - - _kskip7: + 337 D2:0BA5 - - - - + 338 D2:0BA5 7D - - - ld a, l + 339 D2:0BA6 32 FC 09 D2 ld (posY), a + 340 D2:0BAA 7C - - - ld a, h + 341 D2:0BAB 32 FD 09 D2 ld (posY+1), a + 342 D2:0BAF - - - - + 343 D2:0BAF DD 21 54 0A D2 - - - ld ix, WorldMatrix - 339 D2:0B98 FD 21 DE 09 + 344 D2:0BB4 FD 21 FA 09 D2 - - - ld iy, posX - 340 D2:0B9D CD E1 AD D1 call vxfTransform - 341 D2:0BA1 21 06 34 D0 ld hl, vxPosition - 342 D2:0BA5 11 41 0A D2 ld de, WorldMatrix+9 - 343 D2:0BA9 01 09 00 00 ld bc, 9 - 344 D2:0BAD ED B0 - - ldir - 345 D2:0BAF - - - - - 346 D2:0BAF 3A 1C 00 F5 ld a,($F5001C) - 347 D2:0BB3 CB 77 - - bit 6,a - 348 D2:0BB5 C9 - - - ret - 349 D2:0BB6 - - - - - 350 D2:0BB6 - - - - - 351 D2:0BB6 - - - - #include "XML.ez80" + 345 D2:0BB9 CD 74 AD D1 call vxfTransform + 346 D2:0BBD 21 06 34 D0 ld hl, vxPosition + 347 D2:0BC1 11 5D 0A D2 ld de, WorldMatrix+9 + 348 D2:0BC5 01 09 00 00 ld bc, 9 + 349 D2:0BC9 ED B0 - - ldir + 350 D2:0BCB - - - - + 351 D2:0BCB 3A 1C 00 F5 ld a,($F5001C) + 352 D2:0BCF CB 77 - - bit 6,a + 353 D2:0BD1 C9 - - - ret + 354 D2:0BD2 - - - - + 355 D2:0BD2 - - - - + 356 D2:0BD2 - - - - #include "XML.ez80" Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\XML.ez80" - 1 D2:0BB6 - - - - VERTEXDATA: - 2 D2:0BB6 00 63 01 - .dl 90880 - 3 D2:0BB9 00 80 - - .dw VX_ANIMATION_BONE - 4 D2:0BBB 13 - - - .db 19 - 5 D2:0BBC 3F 03 FD - .db 63,3,-3 - 6 D2:0BBF 03 01 3F - .db 3,1,63 - 7 D2:0BC2 FD 3F FF - .db -3,63,-1 - 8 D2:0BC5 00 00 D6 00 + 1 D2:0BD2 - - - - VERTEXDATA: + 2 D2:0BD2 00 63 01 - .dl 90880 + 3 D2:0BD5 00 80 - - .dw VX_ANIMATION_BONE + 4 D2:0BD7 13 - - - .db 19 + 5 D2:0BD8 3F 03 FD - .db 63,3,-3 + 6 D2:0BDB 03 01 3F - .db 3,1,63 + 7 D2:0BDE FD 3F FF - .db -3,63,-1 + 8 D2:0BE1 00 00 D6 00 00 00 - - .dw 0,214,0 - 9 D2:0BCB 3F 05 FD - .db 63,5,-3 - 10 D2:0BCE 03 01 3F - .db 3,1,63 - 11 D2:0BD1 FB 3F 00 - .db -5,63,0 - 12 D2:0BD4 FE FF D6 00 + 9 D2:0BE7 3F 05 FD - .db 63,5,-3 + 10 D2:0BEA 03 01 3F - .db 3,1,63 + 11 D2:0BED FB 3F 00 - .db -5,63,0 + 12 D2:0BF0 FE FF D6 00 00 00 - - .dw -2,214,0 - 13 D2:0BDA 3F 05 FD - .db 63,5,-3 - 14 D2:0BDD 03 00 3F - .db 3,0,63 - 15 D2:0BE0 FB 3F 01 - .db -5,63,1 - 16 D2:0BE3 FC FF D6 00 + 13 D2:0BF6 3F 05 FD - .db 63,5,-3 + 14 D2:0BF9 03 00 3F - .db 3,0,63 + 15 D2:0BFC FB 3F 01 - .db -5,63,1 + 16 D2:0BFF FC FF D6 00 00 00 - - .dw -4,214,0 - 17 D2:0BE9 3F 03 FD - .db 63,3,-3 - 18 D2:0BEC 03 FD 3F - .db 3,-3,63 - 19 D2:0BEF FD 3F 03 - .db -3,63,3 - 20 D2:0BF2 FB FF D6 00 + 17 D2:0C05 3F 03 FD - .db 63,3,-3 + 18 D2:0C08 03 FD 3F - .db 3,-3,63 + 19 D2:0C0B FD 3F 03 - .db -3,63,3 + 20 D2:0C0E FB FF D6 00 FF FF - - .dw -5,214,-1 - 21 D2:0BF8 3F 00 FD - .db 63,0,-3 - 22 D2:0BFB 03 FE 3F - .db 3,-2,63 - 23 D2:0BFE 00 3F 02 - .db 0,63,2 - 24 D2:0C01 FD FF D6 00 + 21 D2:0C14 3F 00 FD - .db 63,0,-3 + 22 D2:0C17 03 FE 3F - .db 3,-2,63 + 23 D2:0C1A 00 3F 02 - .db 0,63,2 + 24 D2:0C1D FD FF D6 00 FE FF - - .dw -3,214,-2 - 25 D2:0C07 3F 00 FD - .db 63,0,-3 - 26 D2:0C0A 03 FF 3F - .db 3,-1,63 - 27 D2:0C0D 00 3F 01 - .db 0,63,1 - 28 D2:0C10 FF FF D7 00 + 25 D2:0C23 3F 00 FD - .db 63,0,-3 + 26 D2:0C26 03 FF 3F - .db 3,-1,63 + 27 D2:0C29 00 3F 01 - .db 0,63,1 + 28 D2:0C2C FF FF D7 00 FD FF - - .dw -1,215,-3 - 29 D2:0C16 3F 00 FD - .db 63,0,-3 - 30 D2:0C19 03 FF 3F - .db 3,-1,63 - 31 D2:0C1C 00 3F 01 - .db 0,63,1 - 32 D2:0C1F 00 00 D7 00 + 29 D2:0C32 3F 00 FD - .db 63,0,-3 + 30 D2:0C35 03 FF 3F - .db 3,-1,63 + 31 D2:0C38 00 3F 01 - .db 0,63,1 + 32 D2:0C3B 00 00 D7 00 FD FF - - .dw 0,215,-3 - 33 D2:0C25 3F 00 FD - .db 63,0,-3 - 34 D2:0C28 03 FF 3F - .db 3,-1,63 - 35 D2:0C2B 00 3F 01 - .db 0,63,1 - 36 D2:0C2E 02 00 D8 00 + 33 D2:0C41 3F 00 FD - .db 63,0,-3 + 34 D2:0C44 03 FF 3F - .db 3,-1,63 + 35 D2:0C47 00 3F 01 - .db 0,63,1 + 36 D2:0C4A 02 00 D8 00 FD FF - - .dw 2,216,-3 - 37 D2:0C34 3F FF FD - .db 63,-1,-3 - 38 D2:0C37 03 00 3F - .db 3,0,63 - 39 D2:0C3A 01 3F 00 - .db 1,63,0 - 40 D2:0C3D 01 00 D8 00 + 37 D2:0C50 3F FF FD - .db 63,-1,-3 + 38 D2:0C53 03 00 3F - .db 3,0,63 + 39 D2:0C56 01 3F 00 - .db 1,63,0 + 40 D2:0C59 01 00 D8 00 FE FF - - .dw 1,216,-2 - 41 D2:0C43 3F FD FD - .db 63,-3,-3 - 42 D2:0C46 03 FF 3F - .db 3,-1,63 - 43 D2:0C49 03 3F 00 - .db 3,63,0 - 44 D2:0C4C FF FF D6 00 + 41 D2:0C5F 3F FD FD - .db 63,-3,-3 + 42 D2:0C62 03 FF 3F - .db 3,-1,63 + 43 D2:0C65 03 3F 00 - .db 3,63,0 + 44 D2:0C68 FF FF D6 00 FE FF - - .dw -1,214,-2 - 45 D2:0C52 3F FC FD - .db 63,-4,-3 - 46 D2:0C55 03 00 3F - .db 3,0,63 - 47 D2:0C58 04 3F 00 - .db 4,63,0 - 48 D2:0C5B FD FF D4 00 + 45 D2:0C6E 3F FC FD - .db 63,-4,-3 + 46 D2:0C71 03 00 3F - .db 3,0,63 + 47 D2:0C74 04 3F 00 - .db 4,63,0 + 48 D2:0C77 FD FF D4 00 FE FF - - .dw -3,212,-2 - 49 D2:0C61 3F FB FD - .db 63,-5,-3 - 50 D2:0C64 03 01 3F - .db 3,1,63 - 51 D2:0C67 05 3F FF - .db 5,63,-1 - 52 D2:0C6A FD FF D3 00 + 49 D2:0C7D 3F FB FD - .db 63,-5,-3 + 50 D2:0C80 03 01 3F - .db 3,1,63 + 51 D2:0C83 05 3F FF - .db 5,63,-1 + 52 D2:0C86 FD FF D3 00 FF FF - - .dw -3,211,-1 - 53 D2:0C70 3F F9 FD - .db 63,-7,-3 - 54 D2:0C73 03 03 3F - .db 3,3,63 - 55 D2:0C76 07 3F FD - .db 7,63,-3 - 56 D2:0C79 FD FF D3 00 + 53 D2:0C8C 3F F9 FD - .db 63,-7,-3 + 54 D2:0C8F 03 03 3F - .db 3,3,63 + 55 D2:0C92 07 3F FD - .db 7,63,-3 + 56 D2:0C95 FD FF D3 00 FF FF - - .dw -3,211,-1 - 57 D2:0C7F 3F FA FD - .db 63,-6,-3 - 58 D2:0C82 03 02 3F - .db 3,2,63 - 59 D2:0C85 06 3F FE - .db 6,63,-2 - 60 D2:0C88 FE FF D4 00 + 57 D2:0C9B 3F FA FD - .db 63,-6,-3 + 58 D2:0C9E 03 02 3F - .db 3,2,63 + 59 D2:0CA1 06 3F FE - .db 6,63,-2 + 60 D2:0CA4 FE FF D4 00 FF FF - - .dw -2,212,-1 - 61 D2:0C8E 3F FB FD - .db 63,-5,-3 - 62 D2:0C91 03 01 3F - .db 3,1,63 - 63 D2:0C94 05 3F FE - .db 5,63,-2 - 64 D2:0C97 00 00 D6 00 + 61 D2:0CAA 3F FB FD - .db 63,-5,-3 + 62 D2:0CAD 03 01 3F - .db 3,1,63 + 63 D2:0CB0 05 3F FE - .db 5,63,-2 + 64 D2:0CB3 00 00 D6 00 00 00 - - .dw 0,214,0 - 65 D2:0C9D 3F FD FD - .db 63,-3,-3 - 66 D2:0CA0 03 02 3F - .db 3,2,63 - 67 D2:0CA3 03 3F FE - .db 3,63,-2 - 68 D2:0CA6 00 00 D8 00 + 65 D2:0CB9 3F FD FD - .db 63,-3,-3 + 66 D2:0CBC 03 02 3F - .db 3,2,63 + 67 D2:0CBF 03 3F FE - .db 3,63,-2 + 68 D2:0CC2 00 00 D8 00 00 00 - - .dw 0,216,0 - 69 D2:0CAC 3F FE FD - .db 63,-2,-3 - 70 D2:0CAF 03 01 3F - .db 3,1,63 - 71 D2:0CB2 02 3F FF - .db 2,63,-1 - 72 D2:0CB5 02 00 D9 00 + 69 D2:0CC8 3F FE FD - .db 63,-2,-3 + 70 D2:0CCB 03 01 3F - .db 3,1,63 + 71 D2:0CCE 02 3F FF - .db 2,63,-1 + 72 D2:0CD1 02 00 D9 00 00 00 - - .dw 2,217,0 - 73 D2:0CBB 3F 00 FD - .db 63,0,-3 - 74 D2:0CBE 03 01 3F - .db 3,1,63 - 75 D2:0CC1 00 3F FF - .db 0,63,-1 - 76 D2:0CC4 03 00 D9 00 + 73 D2:0CD7 3F 00 FD - .db 63,0,-3 + 74 D2:0CDA 03 01 3F - .db 3,1,63 + 75 D2:0CDD 00 3F FF - .db 0,63,-1 + 76 D2:0CE0 03 00 D9 00 00 00 - - .dw 3,217,0 - 77 D2:0CCA 3F 01 FD - .db 63,1,-3 - 78 D2:0CCD 03 01 3F - .db 3,1,63 - 79 D2:0CD0 FF 3F FF - .db -1,63,-1 - 80 D2:0CD3 01 00 D8 00 + 77 D2:0CE6 3F 01 FD - .db 63,1,-3 + 78 D2:0CE9 03 01 3F - .db 3,1,63 + 79 D2:0CEC FF 3F FF - .db -1,63,-1 + 80 D2:0CEF 01 00 D8 00 00 00 - - .dw 1,216,0 - 81 D2:0CD9 FD FF DB FF + 81 D2:0CF5 FD FF DB FF F4 FF - - .dw -3,-37,-12 - 82 D2:0CDF 30 27 F2 - .db 48,39,-14 - 83 D2:0CE2 FB FF E1 FF + 82 D2:0CFB 30 27 F2 - .db 48,39,-14 + 83 D2:0CFE FB FF E1 FF 0A 00 - - .dw -5,-31,10 - 84 D2:0CE8 30 D8 F3 - .db 48,-40,-13 - 85 D2:0CEB 16 00 E2 FF + 84 D2:0D04 30 D8 F3 - .db 48,-40,-13 + 85 D2:0D07 16 00 E2 FF F3 FF - - .dw 22,-30,-13 - 86 D2:0CF1 14 EC C7 - .db 20,-20,-57 - 87 D2:0CF4 12 00 E8 FF + 86 D2:0D0D 14 EC C7 - .db 20,-20,-57 + 87 D2:0D10 12 00 E8 FF 0B 00 - - .dw 18,-24,11 - 88 D2:0CFA 13 14 C7 - .db 19,20,-57 - 89 D2:0CFD 0E 00 EA FF + 88 D2:0D16 13 14 C7 - .db 19,20,-57 + 89 D2:0D19 0E 00 EA FF E7 FF - - .dw 14,-22,-25 - 90 D2:0D03 C9 EE E5 - .db -55,-18,-27 - 91 D2:0D06 F1 FF F0 FF + 90 D2:0D1F C9 EE E5 - .db -55,-18,-27 + 91 D2:0D22 F1 FF F0 FF 1A 00 - - .dw -15,-16,26 - 92 D2:0D0C CA 13 E5 - .db -54,19,-27 - 93 D2:0D0F 03 00 F0 FF + 92 D2:0D28 CA 13 E5 - .db -54,19,-27 + 93 D2:0D2B 03 00 F0 FF 1B 00 - - .dw 3,-16,27 - 94 D2:0D15 E5 06 C7 - .db -27,6,-57 - 95 D2:0D18 EF FF F1 FF + 94 D2:0D31 E5 06 C7 - .db -27,6,-57 + 95 D2:0D34 EF FF F1 FF F4 FF - - .dw -17,-15,-12 - 96 D2:0D1E E4 FC C7 - .db -28,-4,-57 - 97 D2:0D21 ED FF F3 FF + 96 D2:0D3A E4 FC C7 - .db -28,-4,-57 + 97 D2:0D3D ED FF F3 FF 0A 00 - - .dw -19,-13,10 - 98 D2:0D27 2D 22 1C - .db 45,34,28 - 99 D2:0D2A FA FF FC FF + 98 D2:0D43 2D 22 1C - .db 45,34,28 + 99 D2:0D46 FA FF FC FF E9 FF - - .dw -6,-4,-23 - 100 D2:0D30 2D DF 1D - .db 45,-33,29 - 101 D2:0D33 FA FF 05 00 + 100 D2:0D4C 2D DF 1D - .db 45,-33,29 + 101 D2:0D4F FA FF 05 00 E9 FF - - .dw -6,5,-23 - 102 D2:0D39 C3 11 05 - .db -61,17,5 - 103 D2:0D3C EE FF 0D 00 + 102 D2:0D55 C3 11 05 - .db -61,17,5 + 103 D2:0D58 EE FF 0D 00 0A 00 - - .dw -18,13,10 - 104 D2:0D42 DA 19 2C - .db -38,25,44 - 105 D2:0D45 EF FF 11 00 + 104 D2:0D5E DA 19 2C - .db -38,25,44 + 105 D2:0D61 EF FF 11 00 F4 FF - - .dw -17,17,-12 - 106 D2:0D4B EC 38 15 - .db -20,56,21 - 107 D2:0D4E F2 FF 11 00 + 106 D2:0D67 EC 38 15 - .db -20,56,21 + 107 D2:0D6A F2 FF 11 00 1A 00 - - .dw -14,17,26 - 108 D2:0D54 ED 39 ED - .db -19,57,-19 - 109 D2:0D57 03 00 11 00 + 108 D2:0D70 ED 39 ED - .db -19,57,-19 + 109 D2:0D73 03 00 11 00 1B 00 - - .dw 3,17,27 - 110 D2:0D5D C3 F0 04 - .db -61,-16,4 - 111 D2:0D60 0E 00 16 00 + 110 D2:0D79 C3 F0 04 - .db -61,-16,4 + 111 D2:0D7C 0E 00 16 00 E7 FF - - .dw 14,22,-25 - 112 D2:0D66 12 17 38 - .db 18,23,56 - 113 D2:0D69 13 00 19 00 + 112 D2:0D82 12 17 38 - .db 18,23,56 + 113 D2:0D85 13 00 19 00 0B 00 - - .dw 19,25,11 - 114 D2:0D6F 12 E9 38 - .db 18,-23,56 - 115 D2:0D72 16 00 1E 00 + 114 D2:0D8B 12 E9 38 - .db 18,-23,56 + 115 D2:0D8E 16 00 1E 00 F3 FF - - .dw 22,30,-13 - 116 D2:0D78 DA E8 2C - .db -38,-24,44 - 117 D2:0D7B FB FF 1F 00 + 116 D2:0D94 DA E8 2C - .db -38,-24,44 + 117 D2:0D97 FB FF 1F 00 0A 00 - - .dw -5,31,10 - 118 D2:0D81 ED C7 ED - .db -19,-57,-19 - 119 D2:0D84 FD FF 25 00 + 118 D2:0D9D ED C7 ED - .db -19,-57,-19 + 119 D2:0DA0 FD FF 25 00 F4 FF - - .dw -3,37,-12 - 120 D2:0D8A ED C8 16 - .db -19,-56,22 - 121 D2:0D8D 00 80 - - .dw VX_ANIMATION_BONE - 122 D2:0D8F 13 - - - .db 19 - 123 D2:0D90 39 02 1A - .db 57,2,26 - 124 D2:0D93 E6 00 3A - .db -26,0,58 - 125 D2:0D96 FE 3F FF - .db -2,63,-1 - 126 D2:0D99 04 00 D5 00 + 120 D2:0DA6 ED C8 16 - .db -19,-56,22 + 121 D2:0DA9 00 80 - - .dw VX_ANIMATION_BONE + 122 D2:0DAB 13 - - - .db 19 + 123 D2:0DAC 39 02 1A - .db 57,2,26 + 124 D2:0DAF E6 00 3A - .db -26,0,58 + 125 D2:0DB2 FE 3F FF - .db -2,63,-1 + 126 D2:0DB5 04 00 D5 00 00 00 - - .dw 4,213,0 - 127 D2:0D9F 3A 04 1A - .db 58,4,26 - 128 D2:0DA2 E6 00 3A - .db -26,0,58 - 129 D2:0DA5 FC 3F FE - .db -4,63,-2 - 130 D2:0DA8 01 00 D4 00 + 127 D2:0DBB 3A 04 1A - .db 58,4,26 + 128 D2:0DBE E6 00 3A - .db -26,0,58 + 129 D2:0DC1 FC 3F FE - .db -4,63,-2 + 130 D2:0DC4 01 00 D4 00 00 00 - - .dw 1,212,0 - 131 D2:0DAE 3C 05 14 - .db 60,5,20 - 132 D2:0DB1 EC 00 3C - .db -20,0,60 - 133 D2:0DB4 FC 3F FE - .db -4,63,-2 - 134 D2:0DB7 FF FF D5 00 + 131 D2:0DCA 3C 05 14 - .db 60,5,20 + 132 D2:0DCD EC 00 3C - .db -20,0,60 + 133 D2:0DD0 FC 3F FE - .db -4,63,-2 + 134 D2:0DD3 FF FF D5 00 00 00 - - .dw -1,213,0 - 135 D2:0DBD 3E 04 0E - .db 62,4,14 - 136 D2:0DC0 F2 01 3E - .db -14,1,62 - 137 D2:0DC3 FD 3F FE - .db -3,63,-2 - 138 D2:0DC6 FE FF D7 00 + 135 D2:0DD9 3E 04 0E - .db 62,4,14 + 136 D2:0DDC F2 01 3E - .db -14,1,62 + 137 D2:0DDF FD 3F FE - .db -3,63,-2 + 138 D2:0DE2 FE FF D7 00 FE FF - - .dw -2,215,-2 - 139 D2:0DCC 3E 01 0C - .db 62,1,12 - 140 D2:0DCF F4 02 3E - .db -12,2,62 - 141 D2:0DD2 FF 3F FE - .db -1,63,-2 - 142 D2:0DD5 00 00 D7 00 + 139 D2:0DE8 3E 01 0C - .db 62,1,12 + 140 D2:0DEB F4 02 3E - .db -12,2,62 + 141 D2:0DEE FF 3F FE - .db -1,63,-2 + 142 D2:0DF1 00 00 D7 00 FD FF - - .dw 0,215,-3 - 143 D2:0DDB 3F 00 09 - .db 63,0,9 - 144 D2:0DDE F7 02 3F - .db -9,2,63 - 145 D2:0DE1 00 3F FE - .db 0,63,-2 - 146 D2:0DE4 00 00 D8 00 + 143 D2:0DF7 3F 00 09 - .db 63,0,9 + 144 D2:0DFA F7 02 3F - .db -9,2,63 + 145 D2:0DFD 00 3F FE - .db 0,63,-2 + 146 D2:0E00 00 00 D8 00 FC FF - - .dw 0,216,-4 - 147 D2:0DEA 3F 00 05 - .db 63,0,5 - 148 D2:0DED FB 02 3F - .db -5,2,63 - 149 D2:0DF0 00 3F FE - .db 0,63,-2 - 150 D2:0DF3 02 00 D8 00 + 147 D2:0E06 3F 00 05 - .db 63,0,5 + 148 D2:0E09 FB 02 3F - .db -5,2,63 + 149 D2:0E0C 00 3F FE - .db 0,63,-2 + 150 D2:0E0F 02 00 D8 00 FC FF - - .dw 2,216,-4 - 151 D2:0DF9 3F 00 00 - .db 63,0,0 - 152 D2:0DFC 00 02 3F - .db 0,2,63 - 153 D2:0DFF 00 3F FE - .db 0,63,-2 - 154 D2:0E02 02 00 D9 00 + 151 D2:0E15 3F 00 00 - .db 63,0,0 + 152 D2:0E18 00 02 3F - .db 0,2,63 + 153 D2:0E1B 00 3F FE - .db 0,63,-2 + 154 D2:0E1E 02 00 D9 00 FD FF - - .dw 2,217,-3 - 155 D2:0E08 3F FF FA - .db 63,-1,-6 - 156 D2:0E0B 07 02 3F - .db 7,2,63 - 157 D2:0E0E 01 3F FE - .db 1,63,-2 - 158 D2:0E11 00 00 D9 00 + 155 D2:0E24 3F FF FA - .db 63,-1,-6 + 156 D2:0E27 07 02 3F - .db 7,2,63 + 157 D2:0E2A 01 3F FE - .db 1,63,-2 + 158 D2:0E2D 00 00 D9 00 FD FF - - .dw 0,217,-3 - 159 D2:0E17 3E FC F3 - .db 62,-4,-13 - 160 D2:0E1A 0E 02 3E - .db 14,2,62 - 161 D2:0E1D 03 3F FD - .db 3,63,-3 - 162 D2:0E20 FD FF D7 00 + 159 D2:0E33 3E FC F3 - .db 62,-4,-13 + 160 D2:0E36 0E 02 3E - .db 14,2,62 + 161 D2:0E39 03 3F FD - .db 3,63,-3 + 162 D2:0E3C FD FF D7 00 FD FF - - .dw -3,215,-3 - 163 D2:0E26 3D FB EF - .db 61,-5,-17 - 164 D2:0E29 11 01 3D - .db 17,1,61 - 165 D2:0E2C 04 3F FD - .db 4,63,-3 - 166 D2:0E2F FA FF D4 00 + 163 D2:0E42 3D FB EF - .db 61,-5,-17 + 164 D2:0E45 11 01 3D - .db 17,1,61 + 165 D2:0E48 04 3F FD - .db 4,63,-3 + 166 D2:0E4B FA FF D4 00 FE FF - - .dw -6,212,-2 - 167 D2:0E35 3C FB ED - .db 60,-5,-19 - 168 D2:0E38 13 01 3C - .db 19,1,60 - 169 D2:0E3B 05 3F FD - .db 5,63,-3 - 170 D2:0E3E FA FF D3 00 + 167 D2:0E51 3C FB ED - .db 60,-5,-19 + 168 D2:0E54 13 01 3C - .db 19,1,60 + 169 D2:0E57 05 3F FD - .db 5,63,-3 + 170 D2:0E5A FA FF D3 00 FE FF - - .dw -6,211,-2 - 171 D2:0E44 3C FA ED - .db 60,-6,-19 - 172 D2:0E47 13 01 3D - .db 19,1,61 - 173 D2:0E4A 05 3F FD - .db 5,63,-3 - 174 D2:0E4D FB FF D2 00 + 171 D2:0E60 3C FA ED - .db 60,-6,-19 + 172 D2:0E63 13 01 3D - .db 19,1,61 + 173 D2:0E66 05 3F FD - .db 5,63,-3 + 174 D2:0E69 FB FF D2 00 FF FF - - .dw -5,210,-1 - 175 D2:0E53 3E FA F5 - .db 62,-6,-11 - 176 D2:0E56 0B 01 3E - .db 11,1,62 - 177 D2:0E59 05 3F FD - .db 5,63,-3 - 178 D2:0E5C FC FF D4 00 + 175 D2:0E6F 3E FA F5 - .db 62,-6,-11 + 176 D2:0E72 0B 01 3E - .db 11,1,62 + 177 D2:0E75 05 3F FD - .db 5,63,-3 + 178 D2:0E78 FC FF D4 00 FF FF - - .dw -4,212,-1 - 179 D2:0E62 3F FB 00 - .db 63,-5,0 - 180 D2:0E65 00 02 3F - .db 0,2,63 - 181 D2:0E68 05 3F FE - .db 5,63,-2 - 182 D2:0E6B 00 00 D6 00 + 179 D2:0E7E 3F FB 00 - .db 63,-5,0 + 180 D2:0E81 00 02 3F - .db 0,2,63 + 181 D2:0E84 05 3F FE - .db 5,63,-2 + 182 D2:0E87 00 00 D6 00 00 00 - - .dw 0,214,0 - 183 D2:0E71 3E FD 0E - .db 62,-3,14 - 184 D2:0E74 F2 02 3E - .db -14,2,62 - 185 D2:0E77 04 3F FF - .db 4,63,-1 - 186 D2:0E7A 03 00 D7 00 + 183 D2:0E8D 3E FD 0E - .db 62,-3,14 + 184 D2:0E90 F2 02 3E - .db -14,2,62 + 185 D2:0E93 04 3F FF - .db 4,63,-1 + 186 D2:0E96 03 00 D7 00 00 00 - - .dw 3,215,0 - 187 D2:0E80 3A FE 19 - .db 58,-2,25 - 188 D2:0E83 E7 01 3A - .db -25,1,58 - 189 D2:0E86 03 3F 00 - .db 3,63,0 - 190 D2:0E89 06 00 D8 00 + 187 D2:0E9C 3A FE 19 - .db 58,-2,25 + 188 D2:0E9F E7 01 3A - .db -25,1,58 + 189 D2:0EA2 03 3F 00 - .db 3,63,0 + 190 D2:0EA5 06 00 D8 00 00 00 - - .dw 6,216,0 - 191 D2:0E8F 38 00 1D - .db 56,0,29 - 192 D2:0E92 E3 01 38 - .db -29,1,56 - 193 D2:0E95 00 3F FF - .db 0,63,-1 - 194 D2:0E98 08 00 D7 00 + 191 D2:0EAB 38 00 1D - .db 56,0,29 + 192 D2:0EAE E3 01 38 - .db -29,1,56 + 193 D2:0EB1 00 3F FF - .db 0,63,-1 + 194 D2:0EB4 08 00 D7 00 00 00 - - .dw 8,215,0 - 195 D2:0E9E 39 01 1C - .db 57,1,28 - 196 D2:0EA1 E4 00 39 - .db -28,0,57 - 197 D2:0EA4 00 3F FF - .db 0,63,-1 - 198 D2:0EA7 06 00 D6 00 + 195 D2:0EBA 39 01 1C - .db 57,1,28 + 196 D2:0EBD E4 00 39 - .db -28,0,57 + 197 D2:0EC0 00 3F FF - .db 0,63,-1 + 198 D2:0EC3 06 00 D6 00 00 00 - - .dw 6,214,0 - 199 D2:0EAD FC FF D0 FF + 199 D2:0EC9 FC FF D0 FF FC FF - - .dw -4,-48,-4 - 200 D2:0EB3 F1 30 26 - .db -15,48,38 - 201 D2:0EB6 0A 00 D2 FF + 200 D2:0ECF F1 30 26 - .db -15,48,38 + 201 D2:0ED2 0A 00 D2 FF FD FF - - .dw 10,-46,-3 - 202 D2:0EBC 2B 1D 24 - .db 43,29,36 - 203 D2:0EBF FD FF D7 FF + 202 D2:0ED8 2B 1D 24 - .db 43,29,36 + 203 D2:0EDB FD FF D7 FF D7 FF - - .dw -3,-41,-41 - 204 D2:0EC5 33 24 F9 - .db 51,36,-7 - 205 D2:0EC8 06 00 D9 FF + 204 D2:0EE1 33 24 F9 - .db 51,36,-7 + 205 D2:0EE4 06 00 D9 FF D7 FF - - .dw 6,-39,-41 - 206 D2:0ECE EE 3D FB - .db -18,61,-5 - 207 D2:0ED1 FB FF DA FF + 206 D2:0EEA EE 3D FB - .db -18,61,-5 + 207 D2:0EED FB FF DA FF F8 FF - - .dw -5,-38,-8 - 208 D2:0ED7 33 DB F6 - .db 51,-37,-10 - 209 D2:0EDA FA FF DB FF + 208 D2:0EF3 33 DB F6 - .db 51,-37,-10 + 209 D2:0EF6 FA FF DB FF 00 00 - - .dw -6,-37,0 - 210 D2:0EE0 2F DF E5 - .db 47,-33,-27 - 211 D2:0EE3 0D 00 DD FF + 210 D2:0EFC 2F DF E5 - .db 47,-33,-27 + 211 D2:0EFF 0D 00 DD FF 00 00 - - .dw 13,-35,0 - 212 D2:0EE9 2E 22 E6 - .db 46,34,-26 - 213 D2:0EEC FB FF DE FF + 212 D2:0F05 2E 22 E6 - .db 46,34,-26 + 213 D2:0F08 FB FF DE FF C9 FF - - .dw -5,-34,-55 - 214 D2:0EF2 2B E1 23 - .db 43,-31,35 - 215 D2:0EF5 F8 FF DE FF + 214 D2:0F0E 2B E1 23 - .db 43,-31,35 + 215 D2:0F11 F8 FF DE FF D4 FF - - .dw -8,-34,-44 - 216 D2:0EFB EF CF 24 - .db -17,-49,36 - 217 D2:0EFE 09 00 E0 FF + 216 D2:0F17 EF CF 24 - .db -17,-49,36 + 217 D2:0F1A 09 00 E0 FF D4 FF - - .dw 9,-32,-44 - 218 D2:0F04 ED C4 F7 - .db -19,-60,-9 - 219 D2:0F07 10 00 E1 FF + 218 D2:0F20 ED C4 F7 - .db -19,-60,-9 + 219 D2:0F23 10 00 E1 FF F7 FF - - .dw 16,-31,-9 - 220 D2:0F0D CE 00 27 - .db -50,0,39 - 221 D2:0F10 0E 00 E5 FF + 220 D2:0F29 CE 00 27 - .db -50,0,39 + 221 D2:0F2C 0E 00 E5 FF C9 FF - - .dw 14,-27,-55 - 222 D2:0F16 23 D3 1A - .db 35,-45,26 - 223 D2:0F19 FE FF E8 FF + 222 D2:0F32 23 D3 1A - .db 35,-45,26 + 223 D2:0F35 FE FF E8 FF 9E FF - - .dw -2,-24,-98 - 224 D2:0F1F E4 CE 1A - .db -28,-50,26 - 225 D2:0F22 05 00 EB FF + 224 D2:0F3B E4 CE 1A - .db -28,-50,26 + 225 D2:0F3E 05 00 EB FF 9E FF - - .dw 5,-21,-98 - 226 D2:0F28 EC CF DD - .db -20,-49,-35 - 227 D2:0F2B FA FF EC FF + 226 D2:0F44 EC CF DD - .db -20,-49,-35 + 227 D2:0F47 FA FF EC FF 98 FF - - .dw -6,-20,-104 - 228 D2:0F31 20 D7 DC - .db 32,-41,-36 - 229 D2:0F34 EF FF EE FF + 228 D2:0F4D 20 D7 DC - .db 32,-41,-36 + 229 D2:0F50 EF FF EE FF F8 FF - - .dw -17,-18,-8 - 230 D2:0F3A 29 1B 27 - .db 41,27,39 - 231 D2:0F3D EE FF EF FF + 230 D2:0F56 29 1B 27 - .db 41,27,39 + 231 D2:0F59 EE FF EF FF C9 FF - - .dw -18,-17,-55 - 232 D2:0F43 D7 17 2A - .db -41,23,42 - 233 D2:0F46 03 00 F1 FF + 232 D2:0F5F D7 17 2A - .db -41,23,42 + 233 D2:0F62 03 00 F1 FF 98 FF - - .dw 3,-15,-104 - 234 D2:0F4C 21 00 CA - .db 33,0,-54 - 235 D2:0F4F F6 FF F1 FF + 234 D2:0F68 21 00 CA - .db 33,0,-54 + 235 D2:0F6B F6 FF F1 FF 9E FF - - .dw -10,-15,-98 - 236 D2:0F55 E5 22 D2 - .db -27,34,-46 - 237 D2:0F58 FA FF F5 FF + 236 D2:0F71 E5 22 D2 - .db -27,34,-46 + 237 D2:0F74 FA FF F5 FF 98 FF - - .dw -6,-11,-104 - 238 D2:0F5E F7 3B EA - .db -9,59,-22 - 239 D2:0F61 05 00 F6 FF + 238 D2:0F7A F7 3B EA - .db -9,59,-22 + 239 D2:0F7D 05 00 F6 FF 9E FF - - .dw 5,-10,-98 - 240 D2:0F67 F8 C5 E9 - .db -8,-59,-23 - 241 D2:0F6A 0E 00 F9 FF + 240 D2:0F83 F8 C5 E9 - .db -8,-59,-23 + 241 D2:0F86 0E 00 F9 FF C9 FF - - .dw 14,-7,-55 - 242 D2:0F70 E5 DD D3 - .db -27,-35,-45 - 243 D2:0F73 10 00 F9 FF + 242 D2:0F8C E5 DD D3 - .db -27,-35,-45 + 243 D2:0F8F 10 00 F9 FF F7 FF - - .dw 16,-7,-9 - 244 D2:0F79 C3 00 F0 - .db -61,0,-16 - 245 D2:0F7C FE FF FA FF + 244 D2:0F95 C3 00 F0 - .db -61,0,-16 + 245 D2:0F98 FE FF FA FF 9E FF - - .dw -2,-6,-98 - 246 D2:0F82 C1 00 FB - .db -63,0,-5 - 247 D2:0F85 FB FF 00 00 + 246 D2:0F9E C1 00 FB - .db -63,0,-5 + 247 D2:0FA1 FB FF 00 00 C9 FF - - .dw -5,0,-55 - 248 D2:0F8B D5 16 D7 - .db -43,22,-41 - 249 D2:0F8E FC FF 00 00 + 248 D2:0FA7 D5 16 D7 - .db -43,22,-41 + 249 D2:0FAA FC FF 00 00 F8 FF - - .dw -4,0,-8 - 250 D2:0F94 25 20 D8 - .db 37,32,-40 - 251 D2:0F97 00 80 - - .dw VX_ANIMATION_BONE - 252 D2:0F99 13 - - - .db 19 - 253 D2:0F9A 3F 02 09 - .db 63,2,9 - 254 D2:0F9D F7 00 3F - .db -9,0,63 - 255 D2:0FA0 FE 3F FF - .db -2,63,-1 - 256 D2:0FA3 EB FF DD 00 + 250 D2:0FB0 25 20 D8 - .db 37,32,-40 + 251 D2:0FB3 00 80 - - .dw VX_ANIMATION_BONE + 252 D2:0FB5 13 - - - .db 19 + 253 D2:0FB6 3F 02 09 - .db 63,2,9 + 254 D2:0FB9 F7 00 3F - .db -9,0,63 + 255 D2:0FBC FE 3F FF - .db -2,63,-1 + 256 D2:0FBF EB FF DD 00 01 00 - - .dw -21,221,1 - 257 D2:0FA9 3D 04 10 - .db 61,4,16 - 258 D2:0FAC F0 00 3D - .db -16,0,61 - 259 D2:0FAF FC 3F FE - .db -4,63,-2 - 260 D2:0FB2 F3 FF DA 00 + 257 D2:0FC5 3D 04 10 - .db 61,4,16 + 258 D2:0FC8 F0 00 3D - .db -16,0,61 + 259 D2:0FCB FC 3F FE - .db -4,63,-2 + 260 D2:0FCE F3 FF DA 00 01 00 - - .dw -13,218,1 - 261 D2:0FB8 3D 05 0F - .db 61,5,15 - 262 D2:0FBB F1 00 3E - .db -15,0,62 - 263 D2:0FBE FC 3F FF - .db -4,63,-1 - 264 D2:0FC1 F7 FF D8 00 + 261 D2:0FD4 3D 05 0F - .db 61,5,15 + 262 D2:0FD7 F1 00 3E - .db -15,0,62 + 263 D2:0FDA FC 3F FF - .db -4,63,-1 + 264 D2:0FDD F7 FF D8 00 00 00 - - .dw -9,216,0 - 265 D2:0FC7 3F 04 09 - .db 63,4,9 - 266 D2:0FCA F7 01 3F - .db -9,1,63 - 267 D2:0FCD FC 3F FE - .db -4,63,-2 - 268 D2:0FD0 F6 FF D8 00 + 265 D2:0FE3 3F 04 09 - .db 63,4,9 + 266 D2:0FE6 F7 01 3F - .db -9,1,63 + 267 D2:0FE9 FC 3F FE - .db -4,63,-2 + 268 D2:0FEC F6 FF D8 00 FE FF - - .dw -10,216,-2 - 269 D2:0FD6 3F 01 03 - .db 63,1,3 - 270 D2:0FD9 FD 02 3F - .db -3,2,63 - 271 D2:0FDC FF 3F FE - .db -1,63,-2 - 272 D2:0FDF F2 FF D9 00 + 269 D2:0FF2 3F 01 03 - .db 63,1,3 + 270 D2:0FF5 FD 02 3F - .db -3,2,63 + 271 D2:0FF8 FF 3F FE - .db -1,63,-2 + 272 D2:0FFB F2 FF D9 00 FE FF - - .dw -14,217,-2 - 273 D2:0FE5 3F 00 00 - .db 63,0,0 - 274 D2:0FE8 00 02 3F - .db 0,2,63 - 275 D2:0FEB 00 3F FE - .db 0,63,-2 - 276 D2:0FEE F2 FF D9 00 + 273 D2:1001 3F 00 00 - .db 63,0,0 + 274 D2:1004 00 02 3F - .db 0,2,63 + 275 D2:1007 00 3F FE - .db 0,63,-2 + 276 D2:100A F2 FF D9 00 FC FF - - .dw -14,217,-4 - 277 D2:0FF4 3F 00 FF - .db 63,0,-1 - 278 D2:0FF7 01 02 3F - .db 1,2,63 - 279 D2:0FFA 00 3F FE - .db 0,63,-2 - 280 D2:0FFD F8 FF D9 00 + 277 D2:1010 3F 00 FF - .db 63,0,-1 + 278 D2:1013 01 02 3F - .db 1,2,63 + 279 D2:1016 00 3F FE - .db 0,63,-2 + 280 D2:1019 F8 FF D9 00 FC FF - - .dw -8,217,-4 - 281 D2:1003 3F 00 FB - .db 63,0,-5 - 282 D2:1006 05 02 3F - .db 5,2,63 - 283 D2:1009 00 3F FE - .db 0,63,-2 - 284 D2:100C FC FF D9 00 + 281 D2:101F 3F 00 FB - .db 63,0,-5 + 282 D2:1022 05 02 3F - .db 5,2,63 + 283 D2:1025 00 3F FE - .db 0,63,-2 + 284 D2:1028 FC FF D9 00 FD FF - - .dw -4,217,-3 - 285 D2:1012 3F FF F7 - .db 63,-1,-9 - 286 D2:1015 09 02 3F - .db 9,2,63 - 287 D2:1018 01 3F FE - .db 1,63,-2 - 288 D2:101B FD FF D8 00 + 285 D2:102E 3F FF F7 - .db 63,-1,-9 + 286 D2:1031 09 02 3F - .db 9,2,63 + 287 D2:1034 01 3F FE - .db 1,63,-2 + 288 D2:1037 FD FF D8 00 FD FF - - .dw -3,216,-3 - 289 D2:1021 3E FC F2 - .db 62,-4,-14 - 290 D2:1024 0E 02 3E - .db 14,2,62 - 291 D2:1027 03 3F FD - .db 3,63,-3 - 292 D2:102A FC FF D6 00 + 289 D2:103D 3E FC F2 - .db 62,-4,-14 + 290 D2:1040 0E 02 3E - .db 14,2,62 + 291 D2:1043 03 3F FD - .db 3,63,-3 + 292 D2:1046 FC FF D6 00 FD FF - - .dw -4,214,-3 - 293 D2:1030 3C FB EC - .db 60,-5,-20 - 294 D2:1033 14 01 3C - .db 20,1,60 - 295 D2:1036 04 3F FD - .db 4,63,-3 - 296 D2:1039 F6 FF D3 00 + 293 D2:104C 3C FB EC - .db 60,-5,-20 + 294 D2:104F 14 01 3C - .db 20,1,60 + 295 D2:1052 04 3F FD - .db 4,63,-3 + 296 D2:1055 F6 FF D3 00 FD FF - - .dw -10,211,-3 - 297 D2:103F 39 FB E6 - .db 57,-5,-26 - 298 D2:1042 1A 01 3A - .db 26,1,58 - 299 D2:1045 04 3F FD - .db 4,63,-3 - 300 D2:1048 EF FF CF 00 + 297 D2:105B 39 FB E6 - .db 57,-5,-26 + 298 D2:105E 1A 01 3A - .db 26,1,58 + 299 D2:1061 04 3F FD - .db 4,63,-3 + 300 D2:1064 EF FF CF 00 FD FF - - .dw -17,207,-3 - 301 D2:104E 36 FA DF - .db 54,-6,-33 - 302 D2:1051 21 01 36 - .db 33,1,54 - 303 D2:1054 05 3F FC - .db 5,63,-4 - 304 D2:1057 E5 FF C9 00 + 301 D2:106A 36 FA DF - .db 54,-6,-33 + 302 D2:106D 21 01 36 - .db 33,1,54 + 303 D2:1070 05 3F FC - .db 5,63,-4 + 304 D2:1073 E5 FF C9 00 FD FF - - .dw -27,201,-3 - 305 D2:105D 30 FA D7 - .db 48,-6,-41 - 306 D2:1060 2A 01 30 - .db 42,1,48 - 307 D2:1063 03 3F FB - .db 3,63,-5 - 308 D2:1066 CD FF BE 00 + 305 D2:1079 30 FA D7 - .db 48,-6,-41 + 306 D2:107C 2A 01 30 - .db 42,1,48 + 307 D2:107F 03 3F FB - .db 3,63,-5 + 308 D2:1082 CD FF BE 00 FB FF - - .dw -51,190,-5 - 309 D2:106C 2C FB D3 - .db 44,-5,-45 - 310 D2:106F 2E 02 2C - .db 46,2,44 - 311 D2:1072 02 3F FB - .db 2,63,-5 - 312 D2:1075 B9 FF BA 00 + 309 D2:1088 2C FB D3 - .db 44,-5,-45 + 310 D2:108B 2E 02 2C - .db 46,2,44 + 311 D2:108E 02 3F FB - .db 2,63,-5 + 312 D2:1091 B9 FF BA 00 FA FF - - .dw -71,186,-6 - 313 D2:107B 2D FD D4 - .db 45,-3,-44 - 314 D2:107E 2C 02 2D - .db 44,2,45 - 315 D2:1081 00 3F FC - .db 0,63,-4 - 316 D2:1084 AA FF BF 00 + 313 D2:1097 2D FD D4 - .db 45,-3,-44 + 314 D2:109A 2C 02 2D - .db 44,2,45 + 315 D2:109D 00 3F FC - .db 0,63,-4 + 316 D2:10A0 AA FF BF 00 FC FF - - .dw -86,191,-4 - 317 D2:108A 34 FE DC - .db 52,-2,-36 - 318 D2:108D 24 01 34 - .db 36,1,52 - 319 D2:1090 01 3F FD - .db 1,63,-3 - 320 D2:1093 A9 FF D1 00 + 317 D2:10A6 34 FE DC - .db 52,-2,-36 + 318 D2:10A9 24 01 34 - .db 36,1,52 + 319 D2:10AC 01 3F FD - .db 1,63,-3 + 320 D2:10AF A9 FF D1 00 FD FF - - .dw -87,209,-3 - 321 D2:1099 3D 00 EE - .db 61,0,-18 - 322 D2:109C 12 01 3D - .db 18,1,61 - 323 D2:109F 00 3F FF - .db 0,63,-1 - 324 D2:10A2 C0 FF E0 00 + 321 D2:10B5 3D 00 EE - .db 61,0,-18 + 322 D2:10B8 12 01 3D - .db 18,1,61 + 323 D2:10BB 00 3F FF - .db 0,63,-1 + 324 D2:10BE C0 FF E0 00 00 00 - - .dw -64,224,0 - 325 D2:10A8 3F 01 FC - .db 63,1,-4 - 326 D2:10AB 04 00 3F - .db 4,0,63 - 327 D2:10AE FF 3F 00 - .db -1,63,0 - 328 D2:10B1 D5 FF E1 00 + 325 D2:10C4 3F 01 FC - .db 63,1,-4 + 326 D2:10C7 04 00 3F - .db 4,0,63 + 327 D2:10CA FF 3F 00 - .db -1,63,0 + 328 D2:10CD D5 FF E1 00 01 00 - - .dw -43,225,1 - 329 D2:10B7 02 00 E1 FF + 329 D2:10D3 02 00 E1 FF 7A FF - - .dw 2,-31,-134 - 330 D2:10BD 21 1B 2F - .db 33,27,47 - 331 D2:10C0 01 00 E5 FF + 330 D2:10D9 21 1B 2F - .db 33,27,47 + 331 D2:10DC 01 00 E5 FF 69 FF - - .dw 1,-27,-151 - 332 D2:10C6 21 E7 30 - .db 33,-25,48 - 333 D2:10C9 12 00 E7 FF + 332 D2:10E2 21 E7 30 - .db 33,-25,48 + 333 D2:10E5 12 00 E7 FF 7F FF - - .dw 18,-25,-129 - 334 D2:10CF 34 DC 06 - .db 52,-36,6 - 335 D2:10D2 0D 00 E9 FF + 334 D2:10EB 34 DC 06 - .db 52,-36,6 + 335 D2:10EE 0D 00 E9 FF 6A FF - - .dw 13,-23,-150 - 336 D2:10D8 34 23 05 - .db 52,35,5 - 337 D2:10DB FE FF E9 FF + 336 D2:10F4 34 23 05 - .db 52,35,5 + 337 D2:10F7 FE FF E9 FF 43 FF - - .dw -2,-23,-189 - 338 D2:10E1 F2 2E 29 - .db -14,46,41 - 339 D2:10E4 FE FF EA FF + 338 D2:10FD F2 2E 29 - .db -14,46,41 + 339 D2:1100 FE FF EA FF 9E FF - - .dw -2,-22,-98 - 340 D2:10EA CB 00 23 - .db -53,0,35 - 341 D2:10ED FD FF EB FF + 340 D2:1106 CB 00 23 - .db -53,0,35 + 341 D2:1109 FD FF EB FF 3E FF - - .dw -3,-21,-194 - 342 D2:10F3 F2 D3 2A - .db -14,-45,42 - 343 D2:10F6 08 00 EC FF + 342 D2:110F F2 D3 2A - .db -14,-45,42 + 343 D2:1112 08 00 EC FF 43 FF - - .dw 8,-20,-189 - 344 D2:10FC 33 DD F2 - .db 51,-35,-14 - 345 D2:10FF 05 00 ED FF + 344 D2:1118 33 DD F2 - .db 51,-35,-14 + 345 D2:111B 05 00 ED FF 9E FF - - .dw 5,-19,-98 - 346 D2:1105 33 22 F3 - .db 51,34,-13 - 347 D2:1108 F8 FF F0 FF + 346 D2:1121 33 22 F3 - .db 51,34,-13 + 347 D2:1124 F8 FF F0 FF 69 FF - - .dw -8,-16,-151 - 348 D2:110E 2F DC E9 - .db 47,-36,-23 - 349 D2:1111 05 00 F0 FF + 348 D2:112A 2F DC E9 - .db 47,-36,-23 + 349 D2:112D 05 00 F0 FF 3E FF - - .dw 5,-16,-194 - 350 D2:1117 2C 26 E8 - .db 44,38,-24 - 351 D2:111A F7 FF F0 FF + 350 D2:1133 2C 26 E8 - .db 44,38,-24 + 351 D2:1136 F7 FF F0 FF 7A FF - - .dw -9,-16,-134 - 352 D2:1120 1F FD C9 - .db 31,-3,-55 - 353 D2:1123 F7 FF F1 FF + 352 D2:113C 1F FD C9 - .db 31,-3,-55 + 353 D2:113F F7 FF F1 FF 43 FF - - .dw -9,-15,-189 - 354 D2:1129 EA 22 CF - .db -22,34,-49 - 355 D2:112C F6 FF F1 FF + 354 D2:1145 EA 22 CF - .db -22,34,-49 + 355 D2:1148 F6 FF F1 FF 9E FF - - .dw -10,-15,-98 - 356 D2:1132 F0 3C F3 - .db -16,60,-13 - 357 D2:1135 FD FF F5 FF + 356 D2:114E F0 3C F3 - .db -16,60,-13 + 357 D2:1151 FD FF F5 FF 3E FF - - .dw -3,-11,-194 - 358 D2:113B F0 C4 F5 - .db -16,-60,-11 - 359 D2:113E 08 00 F6 FF + 358 D2:1157 F0 C4 F5 - .db -16,-60,-11 + 359 D2:115A 08 00 F6 FF 43 FF - - .dw 8,-10,-189 - 360 D2:1144 EA DA D3 - .db -22,-38,-45 - 361 D2:1147 05 00 F6 FF + 360 D2:1160 EA DA D3 - .db -22,-38,-45 + 361 D2:1163 05 00 F6 FF 9E FF - - .dw 5,-10,-98 - 362 D2:114D C2 02 F3 - .db -62,2,-13 - 363 D2:1150 0D 00 F6 FF + 362 D2:1169 C2 02 F3 - .db -62,2,-13 + 363 D2:116C 0D 00 F6 FF 6A FF - - .dw 13,-10,-150 - 364 D2:1156 F2 3E FC - .db -14,62,-4 - 365 D2:1159 FE FF F8 FF + 364 D2:1172 F2 3E FC - .db -14,62,-4 + 365 D2:1175 FE FF F8 FF 43 FF - - .dw -2,-8,-189 - 366 D2:115F F2 C2 FF - .db -14,-62,-1 - 367 D2:1162 FE FF F9 FF + 366 D2:117B F2 C2 FF - .db -14,-62,-1 + 367 D2:117E FE FF F9 FF 9E FF - - .dw -2,-7,-98 - 368 D2:1168 C1 00 FD - .db -63,0,-3 - 369 D2:116B 12 00 F9 FF + 368 D2:1184 C1 00 FD - .db -63,0,-3 + 369 D2:1187 12 00 F9 FF 7F FF - - .dw 18,-7,-129 - 370 D2:1171 F2 3D F8 - .db -14,61,-8 - 371 D2:1174 02 00 FB FF + 370 D2:118D F2 3D F8 - .db -14,61,-8 + 371 D2:1190 02 00 FB FF 69 FF - - .dw 2,-5,-151 - 372 D2:117A F1 C3 F7 - .db -15,-61,-9 - 373 D2:117D 02 00 FF FF + 372 D2:1196 F1 C3 F7 - .db -15,-61,-9 + 373 D2:1199 02 00 FF FF 7A FF - - .dw 2,-1,-134 - 374 D2:1183 C1 00 00 - .db -63,0,0 - 375 D2:1186 00 80 - - .dw VX_ANIMATION_BONE - 376 D2:1188 13 - - - .db 19 - 377 D2:1189 3E 02 0F - .db 62,2,15 - 378 D2:118C F1 00 3E - .db -15,0,62 - 379 D2:118F FE 3F FF - .db -2,63,-1 - 380 D2:1192 FC FF DA 00 + 374 D2:119F C1 00 00 - .db -63,0,0 + 375 D2:11A2 00 80 - - .dw VX_ANIMATION_BONE + 376 D2:11A4 13 - - - .db 19 + 377 D2:11A5 3E 02 0F - .db 62,2,15 + 378 D2:11A8 F1 00 3E - .db -15,0,62 + 379 D2:11AB FE 3F FF - .db -2,63,-1 + 380 D2:11AE FC FF DA 00 00 00 - - .dw -4,218,0 - 381 D2:1198 3A 04 1A - .db 58,4,26 - 382 D2:119B E6 00 3A - .db -26,0,58 - 383 D2:119E FC 3F FE - .db -4,63,-2 - 384 D2:11A1 11 00 CF 00 + 381 D2:11B4 3A 04 1A - .db 58,4,26 + 382 D2:11B7 E6 00 3A - .db -26,0,58 + 383 D2:11BA FC 3F FE - .db -4,63,-2 + 384 D2:11BD 11 00 CF 00 00 00 - - .dw 17,207,0 - 385 D2:11A7 3E 05 0E - .db 62,5,14 - 386 D2:11AA F2 00 3E - .db -14,0,62 - 387 D2:11AD FC 3F FF - .db -4,63,-1 - 388 D2:11B0 F5 FF D8 00 + 385 D2:11C3 3E 05 0E - .db 62,5,14 + 386 D2:11C6 F2 00 3E - .db -14,0,62 + 387 D2:11C9 FC 3F FF - .db -4,63,-1 + 388 D2:11CC F5 FF D8 00 00 00 - - .dw -11,216,0 - 389 D2:11B6 3F 04 FE - .db 63,4,-2 - 390 D2:11B9 01 01 3F - .db 1,1,63 - 391 D2:11BC FC 3F FF - .db -4,63,-1 - 392 D2:11BF D5 FF DA 00 + 389 D2:11D2 3F 04 FE - .db 63,4,-2 + 390 D2:11D5 01 01 3F - .db 1,1,63 + 391 D2:11D8 FC 3F FF - .db -4,63,-1 + 392 D2:11DB D5 FF DA 00 00 00 - - .dw -43,218,0 - 393 D2:11C5 3F 01 00 - .db 63,1,0 - 394 D2:11C8 00 02 3F - .db 0,2,63 - 395 D2:11CB FF 3F FE - .db -1,63,-2 - 396 D2:11CE E5 FF D9 00 + 393 D2:11E1 3F 01 00 - .db 63,1,0 + 394 D2:11E4 00 02 3F - .db 0,2,63 + 395 D2:11E7 FF 3F FE - .db -1,63,-2 + 396 D2:11EA E5 FF D9 00 FE FF - - .dw -27,217,-2 - 397 D2:11D4 3F 00 00 - .db 63,0,0 - 398 D2:11D7 00 02 3F - .db 0,2,63 - 399 D2:11DA 00 3F FE - .db 0,63,-2 - 400 D2:11DD F1 FF D9 00 + 397 D2:11F0 3F 00 00 - .db 63,0,0 + 398 D2:11F3 00 02 3F - .db 0,2,63 + 399 D2:11F6 00 3F FE - .db 0,63,-2 + 400 D2:11F9 F1 FF D9 00 FC FF - - .dw -15,217,-4 - 401 D2:11E3 3F 00 FF - .db 63,0,-1 - 402 D2:11E6 01 02 3F - .db 1,2,63 - 403 D2:11E9 00 3F FE - .db 0,63,-2 - 404 D2:11EC F9 FF D9 00 + 401 D2:11FF 3F 00 FF - .db 63,0,-1 + 402 D2:1202 01 02 3F - .db 1,2,63 + 403 D2:1205 00 3F FE - .db 0,63,-2 + 404 D2:1208 F9 FF D9 00 FC FF - - .dw -7,217,-4 - 405 D2:11F2 3F 00 FF - .db 63,0,-1 - 406 D2:11F5 01 02 3F - .db 1,2,63 - 407 D2:11F8 00 3F FE - .db 0,63,-2 - 408 D2:11FB 06 00 DA 00 + 405 D2:120E 3F 00 FF - .db 63,0,-1 + 406 D2:1211 01 02 3F - .db 1,2,63 + 407 D2:1214 00 3F FE - .db 0,63,-2 + 408 D2:1217 06 00 DA 00 FD FF - - .dw 6,218,-3 - 409 D2:1201 3F FF FF - .db 63,-1,-1 - 410 D2:1204 01 02 3F - .db 1,2,63 - 411 D2:1207 01 3F FE - .db 1,63,-2 - 412 D2:120A 16 00 DB 00 + 409 D2:121D 3F FF FF - .db 63,-1,-1 + 410 D2:1220 01 02 3F - .db 1,2,63 + 411 D2:1223 01 3F FE - .db 1,63,-2 + 412 D2:1226 16 00 DB 00 FD FF - - .dw 22,219,-3 - 413 D2:1210 3F FC FF - .db 63,-4,-1 - 414 D2:1213 01 02 3F - .db 1,2,63 - 415 D2:1216 04 3F FE - .db 4,63,-2 - 416 D2:1219 22 00 DC 00 + 413 D2:122C 3F FC FF - .db 63,-4,-1 + 414 D2:122F 01 02 3F - .db 1,2,63 + 415 D2:1232 04 3F FE - .db 4,63,-2 + 416 D2:1235 22 00 DC 00 00 00 - - .dw 34,220,0 - 417 D2:121F 3F FB FC - .db 63,-5,-4 - 418 D2:1222 04 01 3F - .db 4,1,63 - 419 D2:1225 05 3F FE - .db 5,63,-2 - 420 D2:1228 23 00 DD 00 + 417 D2:123B 3F FB FC - .db 63,-5,-4 + 418 D2:123E 04 01 3F - .db 4,1,63 + 419 D2:1241 05 3F FE - .db 5,63,-2 + 420 D2:1244 23 00 DD 00 00 00 - - .dw 35,221,0 - 421 D2:122E 3E FB F7 - .db 62,-5,-9 - 422 D2:1231 0A 01 3F - .db 10,1,63 - 423 D2:1234 05 3F FE - .db 5,63,-2 - 424 D2:1237 1F 00 DE 00 + 421 D2:124A 3E FB F7 - .db 62,-5,-9 + 422 D2:124D 0A 01 3F - .db 10,1,63 + 423 D2:1250 05 3F FE - .db 5,63,-2 + 424 D2:1253 1F 00 DE 00 01 00 - - .dw 31,222,1 - 425 D2:123D 3C FA ED - .db 60,-6,-19 - 426 D2:1240 13 01 3C - .db 19,1,60 - 427 D2:1243 05 3F FD - .db 5,63,-3 - 428 D2:1246 0D 00 DC 00 + 425 D2:1259 3C FA ED - .db 60,-6,-19 + 426 D2:125C 13 01 3C - .db 19,1,60 + 427 D2:125F 05 3F FD - .db 5,63,-3 + 428 D2:1262 0D 00 DC 00 00 00 - - .dw 13,220,0 - 429 D2:124C 2D FA D4 - .db 45,-6,-44 - 430 D2:124F 2D 01 2D - .db 45,1,45 - 431 D2:1252 03 3F FB - .db 3,63,-5 - 432 D2:1255 C4 FF B5 00 + 429 D2:1268 2D FA D4 - .db 45,-6,-44 + 430 D2:126B 2D 01 2D - .db 45,1,45 + 431 D2:126E 03 3F FB - .db 3,63,-5 + 432 D2:1271 C4 FF B5 00 FA FF - - .dw -60,181,-6 - 433 D2:125B 24 FB CC - .db 36,-5,-52 - 434 D2:125E 34 02 24 - .db 52,2,36 - 435 D2:1261 01 3F FB - .db 1,63,-5 - 436 D2:1264 A5 FF A1 00 + 433 D2:1277 24 FB CC - .db 36,-5,-52 + 434 D2:127A 34 02 24 - .db 52,2,36 + 435 D2:127D 01 3F FB - .db 1,63,-5 + 436 D2:1280 A5 FF A1 00 F9 FF - - .dw -91,161,-7 - 437 D2:126A 27 FD CE - .db 39,-3,-50 - 438 D2:126D 32 02 27 - .db 50,2,39 - 439 D2:1270 00 3F FC - .db 0,63,-4 - 440 D2:1273 9A FF AD 00 + 437 D2:1286 27 FD CE - .db 39,-3,-50 + 438 D2:1289 32 02 27 - .db 50,2,39 + 439 D2:128C 00 3F FC - .db 0,63,-4 + 440 D2:128F 9A FF AD 00 FC FF - - .dw -102,173,-4 - 441 D2:1279 31 FE D9 - .db 49,-2,-39 - 442 D2:127C 27 01 31 - .db 39,1,49 - 443 D2:127F 00 3F FD - .db 0,63,-3 - 444 D2:1282 A0 FF CA 00 + 441 D2:1295 31 FE D9 - .db 49,-2,-39 + 442 D2:1298 27 01 31 - .db 39,1,49 + 443 D2:129B 00 3F FD - .db 0,63,-3 + 444 D2:129E A0 FF CA 00 FD FF - - .dw -96,202,-3 - 445 D2:1288 3D 00 EF - .db 61,0,-17 - 446 D2:128B 11 01 3D - .db 17,1,61 - 447 D2:128E 00 3F FF - .db 0,63,-1 - 448 D2:1291 C4 FF E1 00 + 445 D2:12A4 3D 00 EF - .db 61,0,-17 + 446 D2:12A7 11 01 3D - .db 17,1,61 + 447 D2:12AA 00 3F FF - .db 0,63,-1 + 448 D2:12AD C4 FF E1 00 00 00 - - .dw -60,225,0 - 449 D2:1297 3F 01 00 - .db 63,1,0 - 450 D2:129A 00 00 3F - .db 0,0,63 - 451 D2:129D FF 3F 00 - .db -1,63,0 - 452 D2:12A0 E1 FF E2 00 + 449 D2:12B3 3F 01 00 - .db 63,1,0 + 450 D2:12B6 00 00 3F - .db 0,0,63 + 451 D2:12B9 FF 3F 00 - .db -1,63,0 + 452 D2:12BC E1 FF E2 00 01 00 - - .dw -31,226,1 - 453 D2:12A6 EA FF E5 FF + 453 D2:12C2 EA FF E5 FF 28 FF - - .dw -22,-27,-216 - 454 D2:12AC D4 E1 21 - .db -44,-31,33 - 455 D2:12AF EE FF E7 FF + 454 D2:12C8 D4 E1 21 - .db -44,-31,33 + 455 D2:12CB EE FF E7 FF 39 FF - - .dw -18,-25,-199 - 456 D2:12B5 D4 1F 21 - .db -44,31,33 - 457 D2:12B8 0B 00 E8 FF + 456 D2:12D1 D4 1F 21 - .db -44,31,33 + 457 D2:12D4 0B 00 E8 FF 38 FF - - .dw 11,-24,-200 - 458 D2:12BE D7 22 DE - .db -41,34,-34 - 459 D2:12C1 0D 00 E9 FF + 458 D2:12DA D7 22 DE - .db -41,34,-34 + 459 D2:12DD 0D 00 E9 FF 28 FF - - .dw 13,-23,-216 - 460 D2:12C7 D7 DE DE - .db -41,-34,-34 - 461 D2:12CA D5 FF EA FF + 460 D2:12E3 D7 DE DE - .db -41,-34,-34 + 461 D2:12E6 D5 FF EA FF 28 FF - - .dw -43,-22,-216 - 462 D2:12D0 FC CF D8 - .db -4,-49,-40 - 463 D2:12D3 F8 FF EA FF + 462 D2:12EC FC CF D8 - .db -4,-49,-40 + 463 D2:12EF F8 FF EA FF 42 FF - - .dw -8,-22,-190 - 464 D2:12D9 FF 31 D8 - .db -1,49,-40 - 465 D2:12DC 08 00 EA FF + 464 D2:12F5 FF 31 D8 - .db -1,49,-40 + 465 D2:12F8 08 00 EA FF 43 FF - - .dw 8,-22,-189 - 466 D2:12E2 29 21 DD - .db 41,33,-35 - 467 D2:12E5 D5 FF EB FF + 466 D2:12FE 29 21 DD - .db 41,33,-35 + 467 D2:1301 D5 FF EB FF 32 FF - - .dw -43,-21,-206 - 468 D2:12EB 29 DF DD - .db 41,-33,-35 - 469 D2:12EE D5 FF F6 FF + 468 D2:1307 29 DF DD - .db 41,-33,-35 + 469 D2:130A D5 FF F6 FF 32 FF - - .dw -43,-10,-206 - 470 D2:12F4 EE 1E 35 - .db -18,30,53 - 471 D2:12F7 D5 FF F7 FF + 470 D2:1310 EE 1E 35 - .db -18,30,53 + 471 D2:1313 D5 FF F7 FF 28 FF - - .dw -43,-9,-216 - 472 D2:12FD F0 DF 33 - .db -16,-33,51 - 473 D2:1300 F8 FF F7 FF + 472 D2:1319 F0 DF 33 - .db -16,-33,51 + 473 D2:131C F8 FF F7 FF 42 FF - - .dw -8,-9,-190 - 474 D2:1306 1D DF 2D - .db 29,-33,45 - 475 D2:1309 08 00 F7 FF + 474 D2:1322 1D DF 2D - .db 29,-33,45 + 475 D2:1325 08 00 F7 FF 43 FF - - .dw 8,-9,-189 - 476 D2:130F 1E 20 2E - .db 30,32,46 - 477 D2:1312 0D 00 F8 FF + 476 D2:132B 1E 20 2E - .db 30,32,46 + 477 D2:132E 0D 00 F8 FF 28 FF - - .dw 13,-8,-216 - 478 D2:1318 2C 2C 0B - .db 44,44,11 - 479 D2:131B 0B 00 F9 FF + 478 D2:1334 2C 2C 0B - .db 44,44,11 + 479 D2:1337 0B 00 F9 FF 38 FF - - .dw 11,-7,-200 - 480 D2:1321 2C D4 0B - .db 44,-44,11 - 481 D2:1324 EE FF FB FF + 480 D2:133D 2C D4 0B - .db 44,-44,11 + 481 D2:1340 EE FF FB FF 39 FF - - .dw -18,-5,-199 - 482 D2:132A EE 30 25 - .db -18,48,37 - 483 D2:132D EE FF FD FF + 482 D2:1346 EE 30 25 - .db -18,48,37 + 483 D2:1349 EE FF FD FF 28 FF - - .dw -18,-3,-216 - 484 D2:1333 EF D0 25 - .db -17,-48,37 - 485 D2:1336 00 80 - - .dw VX_ANIMATION_BONE - 486 D2:1338 13 - - - .db 19 - 487 D2:1339 3E 03 F3 - .db 62,3,-13 - 488 D2:133C 0E FF 3E - .db 14,-1,62 - 489 D2:133F FD 3F 02 - .db -3,63,2 - 490 D2:1342 FF FF D7 00 + 484 D2:134F EF D0 25 - .db -17,-48,37 + 485 D2:1352 00 80 - - .dw VX_ANIMATION_BONE + 486 D2:1354 13 - - - .db 19 + 487 D2:1355 3E 03 F3 - .db 62,3,-13 + 488 D2:1358 0E FF 3E - .db 14,-1,62 + 489 D2:135B FD 3F 02 - .db -3,63,2 + 490 D2:135E FF FF D7 00 01 00 - - .dw -1,215,1 - 491 D2:1348 3D 05 EE - .db 61,5,-18 - 492 D2:134B 12 00 3D - .db 18,0,61 - 493 D2:134E FB 3F 02 - .db -5,63,2 - 494 D2:1351 FB FF D6 00 + 491 D2:1364 3D 05 EE - .db 61,5,-18 + 492 D2:1367 12 00 3D - .db 18,0,61 + 493 D2:136A FB 3F 02 - .db -5,63,2 + 494 D2:136D FB FF D6 00 00 00 - - .dw -5,214,0 - 495 D2:1357 3D 05 F0 - .db 61,5,-16 - 496 D2:135A 11 00 3D - .db 17,0,61 - 497 D2:135D FC 3F 02 - .db -4,63,2 - 498 D2:1360 FA FF D5 00 + 495 D2:1373 3D 05 F0 - .db 61,5,-16 + 496 D2:1376 11 00 3D - .db 17,0,61 + 497 D2:1379 FC 3F 02 - .db -4,63,2 + 498 D2:137C FA FF D5 00 00 00 - - .dw -6,213,0 - 499 D2:1366 3F 03 F7 - .db 63,3,-9 - 500 D2:1369 09 FF 3F - .db 9,-1,63 - 501 D2:136C FE 3F 02 - .db -2,63,2 - 502 D2:136F FA FF D5 00 + 499 D2:1382 3F 03 F7 - .db 63,3,-9 + 500 D2:1385 09 FF 3F - .db 9,-1,63 + 501 D2:1388 FE 3F 02 - .db -2,63,2 + 502 D2:138B FA FF D5 00 FE FF - - .dw -6,213,-2 - 503 D2:1375 3F 00 FF - .db 63,0,-1 - 504 D2:1378 01 FF 3F - .db 1,-1,63 - 505 D2:137B 00 3F 01 - .db 0,63,1 - 506 D2:137E FE FF D6 00 + 503 D2:1391 3F 00 FF - .db 63,0,-1 + 504 D2:1394 01 FF 3F - .db 1,-1,63 + 505 D2:1397 00 3F 01 - .db 0,63,1 + 506 D2:139A FE FF D6 00 FE FF - - .dw -2,214,-2 - 507 D2:1384 3F 00 07 - .db 63,0,7 - 508 D2:1387 F9 FF 3F - .db -7,-1,63 - 509 D2:138A 00 3F 01 - .db 0,63,1 - 510 D2:138D 00 00 D6 00 + 507 D2:13A0 3F 00 07 - .db 63,0,7 + 508 D2:13A3 F9 FF 3F - .db -7,-1,63 + 509 D2:13A6 00 3F 01 - .db 0,63,1 + 510 D2:13A9 00 00 D6 00 FD FF - - .dw 0,214,-3 - 511 D2:1393 3D 00 11 - .db 61,0,17 - 512 D2:1396 EF FF 3D - .db -17,-1,61 - 513 D2:1399 00 3F 01 - .db 0,63,1 - 514 D2:139C 03 00 D6 00 + 511 D2:13AF 3D 00 11 - .db 61,0,17 + 512 D2:13B2 EF FF 3D - .db -17,-1,61 + 513 D2:13B5 00 3F 01 - .db 0,63,1 + 514 D2:13B8 03 00 D6 00 FD FF - - .dw 3,214,-3 - 515 D2:13A2 3A 00 19 - .db 58,0,25 - 516 D2:13A5 E7 FF 3A - .db -25,-1,58 - 517 D2:13A8 00 3F 01 - .db 0,63,1 - 518 D2:13AB 06 00 D7 00 + 515 D2:13BE 3A 00 19 - .db 58,0,25 + 516 D2:13C1 E7 FF 3A - .db -25,-1,58 + 517 D2:13C4 00 3F 01 - .db 0,63,1 + 518 D2:13C7 06 00 D7 00 FD FF - - .dw 6,215,-3 - 519 D2:13B1 39 FF 1C - .db 57,-1,28 - 520 D2:13B4 E4 00 39 - .db -28,0,57 - 521 D2:13B7 00 3F 01 - .db 0,63,1 - 522 D2:13BA 06 00 D6 00 + 519 D2:13CD 39 FF 1C - .db 57,-1,28 + 520 D2:13D0 E4 00 39 - .db -28,0,57 + 521 D2:13D3 00 3F 01 - .db 0,63,1 + 522 D2:13D6 06 00 D6 00 FE FF - - .dw 6,214,-2 - 523 D2:13C0 3A FD 1A - .db 58,-3,26 - 524 D2:13C3 E6 FF 3A - .db -26,-1,58 - 525 D2:13C6 02 3F 02 - .db 2,63,2 - 526 D2:13C9 02 00 D4 00 + 523 D2:13DC 3A FD 1A - .db 58,-3,26 + 524 D2:13DF E6 FF 3A - .db -26,-1,58 + 525 D2:13E2 02 3F 02 - .db 2,63,2 + 526 D2:13E5 02 00 D4 00 FE FF - - .dw 2,212,-2 - 527 D2:13CF 3B FC 16 - .db 59,-4,22 - 528 D2:13D2 EA 00 3B - .db -22,0,59 - 529 D2:13D5 04 3F 01 - .db 4,63,1 - 530 D2:13D8 00 00 D3 00 + 527 D2:13EB 3B FC 16 - .db 59,-4,22 + 528 D2:13EE EA 00 3B - .db -22,0,59 + 529 D2:13F1 04 3F 01 - .db 4,63,1 + 530 D2:13F4 00 00 D3 00 FE FF - - .dw 0,211,-2 - 531 D2:13DE 3C FA 15 - .db 60,-6,21 - 532 D2:13E1 EB 00 3C - .db -21,0,60 - 533 D2:13E4 06 3F 01 - .db 6,63,1 - 534 D2:13E7 00 00 D3 00 + 531 D2:13FA 3C FA 15 - .db 60,-6,21 + 532 D2:13FD EB 00 3C - .db -21,0,60 + 533 D2:1400 06 3F 01 - .db 6,63,1 + 534 D2:1403 00 00 D3 00 FF FF - - .dw 0,211,-1 - 535 D2:13ED 3C F8 13 - .db 60,-8,19 - 536 D2:13F0 ED 00 3C - .db -19,0,60 - 537 D2:13F3 07 3F 02 - .db 7,63,2 - 538 D2:13F6 00 00 D3 00 + 535 D2:1409 3C F8 13 - .db 60,-8,19 + 536 D2:140C ED 00 3C - .db -19,0,60 + 537 D2:140F 07 3F 02 - .db 7,63,2 + 538 D2:1412 00 00 D3 00 FF FF - - .dw 0,211,-1 - 539 D2:13FC 3D F9 10 - .db 61,-7,16 - 540 D2:13FF EF 00 3D - .db -17,0,61 - 541 D2:1402 06 3F 02 - .db 6,63,2 - 542 D2:1405 00 00 D4 00 + 539 D2:1418 3D F9 10 - .db 61,-7,16 + 540 D2:141B EF 00 3D - .db -17,0,61 + 541 D2:141E 06 3F 02 - .db 6,63,2 + 542 D2:1421 00 00 D4 00 00 00 - - .dw 0,212,0 - 543 D2:140B 3E FA 0B - .db 62,-6,11 - 544 D2:140E F4 FF 3E - .db -12,-1,62 - 545 D2:1411 05 3F 02 - .db 5,63,2 - 546 D2:1414 01 00 D6 00 + 543 D2:1427 3E FA 0B - .db 62,-6,11 + 544 D2:142A F4 FF 3E - .db -12,-1,62 + 545 D2:142D 05 3F 02 - .db 5,63,2 + 546 D2:1430 01 00 D6 00 00 00 - - .dw 1,214,0 - 547 D2:141A 3F FC 04 - .db 63,-4,4 - 548 D2:141D FB FF 3F - .db -5,-1,63 - 549 D2:1420 04 3F 02 - .db 4,63,2 - 550 D2:1423 02 00 D9 00 + 547 D2:1436 3F FC 04 - .db 63,-4,4 + 548 D2:1439 FB FF 3F - .db -5,-1,63 + 549 D2:143C 04 3F 02 - .db 4,63,2 + 550 D2:143F 02 00 D9 00 00 00 - - .dw 2,217,0 - 551 D2:1429 3F FD 00 - .db 63,-3,0 - 552 D2:142C 00 FE 3F - .db 0,-2,63 - 553 D2:142F 03 3F 01 - .db 3,63,1 - 554 D2:1432 03 00 DB 00 + 551 D2:1445 3F FD 00 - .db 63,-3,0 + 552 D2:1448 00 FE 3F - .db 0,-2,63 + 553 D2:144B 03 3F 01 - .db 3,63,1 + 554 D2:144E 03 00 DB 00 01 00 - - .dw 3,219,1 - 555 D2:1438 3F 00 F9 - .db 63,0,-7 - 556 D2:143B 07 FF 3F - .db 7,-1,63 - 557 D2:143E 00 3F 01 - .db 0,63,1 - 558 D2:1441 02 00 DA 00 + 555 D2:1454 3F 00 F9 - .db 63,0,-7 + 556 D2:1457 07 FF 3F - .db 7,-1,63 + 557 D2:145A 00 3F 01 - .db 0,63,1 + 558 D2:145D 02 00 DA 00 00 00 - - .dw 2,218,0 - 559 D2:1447 3F 01 F6 - .db 63,1,-10 - 560 D2:144A 0A FF 3F - .db 10,-1,63 - 561 D2:144D FF 3F 02 - .db -1,63,2 - 562 D2:1450 00 00 D9 00 + 559 D2:1463 3F 01 F6 - .db 63,1,-10 + 560 D2:1466 0A FF 3F - .db 10,-1,63 + 561 D2:1469 FF 3F 02 - .db -1,63,2 + 562 D2:146C 00 00 D9 00 00 00 - - .dw 0,217,0 - 563 D2:1456 FC FF 00 00 + 563 D2:1472 FC FF 00 00 F8 FF - - .dw -4,0,-8 - 564 D2:145C 2B E3 24 - .db 43,-29,36 - 565 D2:145F FB FF 00 00 + 564 D2:1478 2B E3 24 - .db 43,-29,36 + 565 D2:147B FB FF 00 00 C9 FF - - .dw -5,0,-55 - 566 D2:1465 F1 CF 25 - .db -15,-49,37 - 567 D2:1468 FF FF 07 00 + 566 D2:1481 F1 CF 25 - .db -15,-49,37 + 567 D2:1484 FF FF 07 00 9E FF - - .dw -1,7,-98 - 568 D2:146E ED C4 FB - .db -19,-60,-5 - 569 D2:1471 0E 00 07 00 + 568 D2:148A ED C4 FB - .db -19,-60,-5 + 569 D2:148D 0E 00 07 00 C9 FF - - .dw 14,7,-55 - 570 D2:1477 33 DB F9 - .db 51,-37,-7 - 571 D2:147A 10 00 07 00 + 570 D2:1493 33 DB F9 - .db 51,-37,-7 + 571 D2:1496 10 00 07 00 F7 FF - - .dw 16,7,-9 - 572 D2:1480 2E DF E5 - .db 46,-33,-27 - 573 D2:1483 06 00 0A 00 + 572 D2:149C 2E DF E5 - .db 46,-33,-27 + 573 D2:149F 06 00 0A 00 9E FF - - .dw 6,10,-98 - 574 D2:1489 2E 21 E4 - .db 46,33,-28 - 575 D2:148C FB FF 0B 00 + 574 D2:14A5 2E 21 E4 - .db 46,33,-28 + 575 D2:14A8 FB FF 0B 00 98 FF - - .dw -5,11,-104 - 576 D2:1492 33 25 F7 - .db 51,37,-9 - 577 D2:1495 03 00 10 00 + 576 D2:14AE 33 25 F7 - .db 51,37,-9 + 577 D2:14B1 03 00 10 00 98 FF - - .dw 3,16,-104 - 578 D2:149B 2B 1E 23 - .db 43,30,35 - 579 D2:149E F6 FF 10 00 + 578 D2:14B7 2B 1E 23 - .db 43,30,35 + 579 D2:14BA F6 FF 10 00 9E FF - - .dw -10,16,-98 - 580 D2:14A4 F0 32 24 - .db -16,50,36 - 581 D2:14A7 EF FF 11 00 + 580 D2:14C0 F0 32 24 - .db -16,50,36 + 581 D2:14C3 EF FF 11 00 C9 FF - - .dw -17,17,-55 - 582 D2:14AD EC 3C F7 - .db -20,60,-9 - 583 D2:14B0 EF FF 13 00 + 582 D2:14C9 EC 3C F7 - .db -20,60,-9 + 583 D2:14CC EF FF 13 00 F8 FF - - .dw -17,19,-8 - 584 D2:14B6 E4 32 1A - .db -28,50,26 - 585 D2:14B9 FB FF 15 00 + 584 D2:14D2 E4 32 1A - .db -28,50,26 + 585 D2:14D5 FB FF 15 00 98 FF - - .dw -5,21,-104 - 586 D2:14BF 22 2E 1A - .db 34,46,26 - 587 D2:14C2 06 00 15 00 + 586 D2:14DB 22 2E 1A - .db 34,46,26 + 587 D2:14DE 06 00 15 00 9E FF - - .dw 6,21,-98 - 588 D2:14C8 20 29 DC - .db 32,41,-36 - 589 D2:14CB FE FF 18 00 + 588 D2:14E4 20 29 DC - .db 32,41,-36 + 589 D2:14E7 FE FF 18 00 9E FF - - .dw -2,24,-98 - 590 D2:14D1 EC 31 DD - .db -20,49,-35 - 591 D2:14D4 0E 00 1C 00 + 590 D2:14ED EC 31 DD - .db -20,49,-35 + 591 D2:14F0 0E 00 1C 00 C9 FF - - .dw 14,28,-55 - 592 D2:14DA 2A E5 27 - .db 42,-27,39 - 593 D2:14DD 10 00 1F 00 + 592 D2:14F6 2A E5 27 - .db 42,-27,39 + 593 D2:14F9 10 00 1F 00 F7 FF - - .dw 16,31,-9 - 594 D2:14E3 D7 E9 2A - .db -41,-23,42 - 595 D2:14E6 09 00 20 00 + 594 D2:14FF D7 E9 2A - .db -41,-23,42 + 595 D2:1502 09 00 20 00 D5 FF - - .dw 9,32,-43 - 596 D2:14EC 1F 01 C9 - .db 31,1,-55 - 597 D2:14EF FB FF 22 00 + 596 D2:1508 1F 01 C9 - .db 31,1,-55 + 597 D2:150B FB FF 22 00 C9 FF - - .dw -5,34,-55 - 598 D2:14F5 E6 DD D2 - .db -26,-35,-46 - 599 D2:14F8 F9 FF 22 00 + 598 D2:1511 E6 DD D2 - .db -26,-35,-46 + 599 D2:1514 F9 FF 22 00 D4 FF - - .dw -7,34,-44 - 600 D2:14FE F8 C5 EA - .db -8,-59,-22 - 601 D2:1501 0E 00 24 00 + 600 D2:151A F8 C5 EA - .db -8,-59,-22 + 601 D2:151D 0E 00 24 00 00 00 - - .dw 14,36,0 - 602 D2:1507 F7 3A E9 - .db -9,58,-23 - 603 D2:150A FA FF 26 00 + 602 D2:1523 F7 3A E9 - .db -9,58,-23 + 603 D2:1526 FA FF 26 00 00 00 - - .dw -6,38,0 - 604 D2:1510 E7 22 D1 - .db -25,34,-47 - 605 D2:1513 FC FF 26 00 + 604 D2:152C E7 22 D1 - .db -25,34,-47 + 605 D2:152F FC FF 26 00 F8 FF - - .dw -4,38,-8 - 606 D2:1519 C3 00 EE - .db -61,0,-18 - 607 D2:151C 07 00 28 00 + 606 D2:1535 C3 00 EE - .db -61,0,-18 + 607 D2:1538 07 00 28 00 D7 FF - - .dw 7,40,-41 - 608 D2:1522 C1 00 FB - .db -63,0,-5 - 609 D2:1525 FD FF 29 00 + 608 D2:153E C1 00 FB - .db -63,0,-5 + 609 D2:1541 FD FF 29 00 D7 FF - - .dw -3,41,-41 - 610 D2:152B CD 01 26 - .db -51,1,38 - 611 D2:152E 0A 00 2F 00 + 610 D2:1547 CD 01 26 - .db -51,1,38 + 611 D2:154A 0A 00 2F 00 FD FF - - .dw 10,47,-3 - 612 D2:1534 25 E0 D8 - .db 37,-32,-40 - 613 D2:1537 FC FF 31 00 + 612 D2:1550 25 E0 D8 - .db 37,-32,-40 + 613 D2:1553 FC FF 31 00 FD FF - - .dw -4,49,-3 - 614 D2:153D D5 EA D7 - .db -43,-22,-41 - 615 D2:1540 00 80 - - .dw VX_ANIMATION_BONE - 616 D2:1542 13 - - - .db 19 - 617 D2:1543 3E 03 F2 - .db 62,3,-14 - 618 D2:1546 0E FF 3E - .db 14,-1,62 - 619 D2:1549 FD 3F 02 - .db -3,63,2 - 620 D2:154C FF FF D7 00 + 614 D2:1559 D5 EA D7 - .db -43,-22,-41 + 615 D2:155C 00 80 - - .dw VX_ANIMATION_BONE + 616 D2:155E 13 - - - .db 19 + 617 D2:155F 3E 03 F2 - .db 62,3,-14 + 618 D2:1562 0E FF 3E - .db 14,-1,62 + 619 D2:1565 FD 3F 02 - .db -3,63,2 + 620 D2:1568 FF FF D7 00 01 00 - - .dw -1,215,1 - 621 D2:1552 3C 05 EE - .db 60,5,-18 - 622 D2:1555 12 00 3D - .db 18,0,61 - 623 D2:1558 FB 3F 02 - .db -5,63,2 - 624 D2:155B FB FF D6 00 + 621 D2:156E 3C 05 EE - .db 60,5,-18 + 622 D2:1571 12 00 3D - .db 18,0,61 + 623 D2:1574 FB 3F 02 - .db -5,63,2 + 624 D2:1577 FB FF D6 00 01 00 - - .dw -5,214,1 - 625 D2:1561 39 05 E5 - .db 57,5,-27 - 626 D2:1564 1B 00 39 - .db 27,0,57 - 627 D2:1567 FC 3F 02 - .db -4,63,2 - 628 D2:156A EA FF D0 00 + 625 D2:157D 39 05 E5 - .db 57,5,-27 + 626 D2:1580 1B 00 39 - .db 27,0,57 + 627 D2:1583 FC 3F 02 - .db -4,63,2 + 628 D2:1586 EA FF D0 00 00 00 - - .dw -22,208,0 - 629 D2:1570 33 03 DA - .db 51,3,-38 - 630 D2:1573 26 FF 33 - .db 38,-1,51 - 631 D2:1576 FF 3F 03 - .db -1,63,3 - 632 D2:1579 CE FF C4 00 + 629 D2:158C 33 03 DA - .db 51,3,-38 + 630 D2:158F 26 FF 33 - .db 38,-1,51 + 631 D2:1592 FF 3F 03 - .db -1,63,3 + 632 D2:1595 CE FF C4 00 00 00 - - .dw -50,196,0 - 633 D2:157F 2E 00 D4 - .db 46,0,-44 - 634 D2:1582 2C FF 2E - .db 44,-1,46 - 635 D2:1585 00 3F 01 - .db 0,63,1 - 636 D2:1588 BC FF BC 00 + 633 D2:159B 2E 00 D4 - .db 46,0,-44 + 634 D2:159E 2C FF 2E - .db 44,-1,46 + 635 D2:15A1 00 3F 01 - .db 0,63,1 + 636 D2:15A4 BC FF BC 00 FE FF - - .dw -68,188,-2 - 637 D2:158E 2E 00 D4 - .db 46,0,-44 - 638 D2:1591 2C FF 2E - .db 44,-1,46 - 639 D2:1594 01 3F 01 - .db 1,63,1 - 640 D2:1597 B1 FF BE 00 + 637 D2:15AA 2E 00 D4 - .db 46,0,-44 + 638 D2:15AD 2C FF 2E - .db 44,-1,46 + 639 D2:15B0 01 3F 01 - .db 1,63,1 + 640 D2:15B3 B1 FF BE 00 FC FF - - .dw -79,190,-4 - 641 D2:159D 33 00 DA - .db 51,0,-38 - 642 D2:15A0 26 FF 33 - .db 38,-1,51 - 643 D2:15A3 01 3F 01 - .db 1,63,1 - 644 D2:15A6 B0 FF C8 00 + 641 D2:15B9 33 00 DA - .db 51,0,-38 + 642 D2:15BC 26 FF 33 - .db 38,-1,51 + 643 D2:15BF 01 3F 01 - .db 1,63,1 + 644 D2:15C2 B0 FF C8 00 FD FF - - .dw -80,200,-3 - 645 D2:15AC 37 00 E1 - .db 55,0,-31 - 646 D2:15AF 1F FF 37 - .db 31,-1,55 - 647 D2:15B2 00 3F 01 - .db 0,63,1 - 648 D2:15B5 B0 FF D4 00 + 645 D2:15C8 37 00 E1 - .db 55,0,-31 + 646 D2:15CB 1F FF 37 - .db 31,-1,55 + 647 D2:15CE 00 3F 01 - .db 0,63,1 + 648 D2:15D1 B0 FF D4 00 FD FF - - .dw -80,212,-3 - 649 D2:15BB 3E FF F2 - .db 62,-1,-14 - 650 D2:15BE 0E 00 3E - .db 14,0,62 - 651 D2:15C1 01 3F 00 - .db 1,63,0 - 652 D2:15C4 C5 FF DF 00 + 649 D2:15D7 3E FF F2 - .db 62,-1,-14 + 650 D2:15DA 0E 00 3E - .db 14,0,62 + 651 D2:15DD 01 3F 00 - .db 1,63,0 + 652 D2:15E0 C5 FF DF 00 FD FF - - .dw -59,223,-3 - 653 D2:15CA 3F FD 0A - .db 63,-3,10 - 654 D2:15CD F6 FF 3F - .db -10,-1,63 - 655 D2:15D0 03 3F 01 - .db 3,63,1 - 656 D2:15D3 EB FF DC 00 + 653 D2:15E6 3F FD 0A - .db 63,-3,10 + 654 D2:15E9 F6 FF 3F - .db -10,-1,63 + 655 D2:15EC 03 3F 01 - .db 3,63,1 + 656 D2:15EF EB FF DC 00 FD FF - - .dw -21,220,-3 - 657 D2:15D9 3D FC 12 - .db 61,-4,18 - 658 D2:15DC EE 00 3D - .db -18,0,61 - 659 D2:15DF 04 3F 01 - .db 4,63,1 - 660 D2:15E2 FA FF D5 00 + 657 D2:15F5 3D FC 12 - .db 61,-4,18 + 658 D2:15F8 EE 00 3D - .db -18,0,61 + 659 D2:15FB 04 3F 01 - .db 4,63,1 + 660 D2:15FE FA FF D5 00 FE FF - - .dw -6,213,-2 - 661 D2:15E8 3D FA 10 - .db 61,-6,16 - 662 D2:15EB F0 00 3D - .db -16,0,61 - 663 D2:15EE 06 3F 00 - .db 6,63,0 - 664 D2:15F1 F9 FF D5 00 + 661 D2:1604 3D FA 10 - .db 61,-6,16 + 662 D2:1607 F0 00 3D - .db -16,0,61 + 663 D2:160A 06 3F 00 - .db 6,63,0 + 664 D2:160D F9 FF D5 00 FE FF - - .dw -7,213,-2 - 665 D2:15F7 3E F8 08 - .db 62,-8,8 - 666 D2:15FA F8 00 3F - .db -8,0,63 - 667 D2:15FD 08 3F 00 - .db 8,63,0 - 668 D2:1600 F0 FF D8 00 + 665 D2:1613 3E F8 08 - .db 62,-8,8 + 666 D2:1616 F8 00 3F - .db -8,0,63 + 667 D2:1619 08 3F 00 - .db 8,63,0 + 668 D2:161C F0 FF D8 00 FD FF - - .dw -16,216,-3 - 669 D2:1606 3F F9 03 - .db 63,-7,3 - 670 D2:1609 FD 00 3F - .db -3,0,63 - 671 D2:160C 07 3F 01 - .db 7,63,1 - 672 D2:160F EC FF D8 00 + 669 D2:1622 3F F9 03 - .db 63,-7,3 + 670 D2:1625 FD 00 3F - .db -3,0,63 + 671 D2:1628 07 3F 01 - .db 7,63,1 + 672 D2:162B EC FF D8 00 FE FF - - .dw -20,216,-2 - 673 D2:1615 3F FA 00 - .db 63,-6,0 - 674 D2:1618 00 FF 3F - .db 0,-1,63 - 675 D2:161B 06 3F 01 - .db 6,63,1 - 676 D2:161E F1 FF D8 00 + 673 D2:1631 3F FA 00 - .db 63,-6,0 + 674 D2:1634 00 FF 3F - .db 0,-1,63 + 675 D2:1637 06 3F 01 - .db 6,63,1 + 676 D2:163A F1 FF D8 00 FF FF - - .dw -15,216,-1 - 677 D2:1624 3F FC 00 - .db 63,-4,0 - 678 D2:1627 00 FF 3F - .db 0,-1,63 - 679 D2:162A 04 3F 01 - .db 4,63,1 - 680 D2:162D FA FF D9 00 + 677 D2:1640 3F FC 00 - .db 63,-4,0 + 678 D2:1643 00 FF 3F - .db 0,-1,63 + 679 D2:1646 04 3F 01 - .db 4,63,1 + 680 D2:1649 FA FF D9 00 00 00 - - .dw -6,217,0 - 681 D2:1633 3F FD FB - .db 63,-3,-5 - 682 D2:1636 05 FE 3F - .db 5,-2,63 - 683 D2:1639 03 3F 01 - .db 3,63,1 - 684 D2:163C FD FF DA 00 + 681 D2:164F 3F FD FB - .db 63,-3,-5 + 682 D2:1652 05 FE 3F - .db 5,-2,63 + 683 D2:1655 03 3F 01 - .db 3,63,1 + 684 D2:1658 FD FF DA 00 00 00 - - .dw -3,218,0 - 685 D2:1642 3F 00 F7 - .db 63,0,-9 - 686 D2:1645 09 FF 3F - .db 9,-1,63 - 687 D2:1648 00 3F 01 - .db 0,63,1 - 688 D2:164B 00 00 DA 00 + 685 D2:165E 3F 00 F7 - .db 63,0,-9 + 686 D2:1661 09 FF 3F - .db 9,-1,63 + 687 D2:1664 00 3F 01 - .db 0,63,1 + 688 D2:1667 00 00 DA 00 00 00 - - .dw 0,218,0 - 689 D2:1651 3E 01 F4 - .db 62,1,-12 - 690 D2:1654 0C FF 3E - .db 12,-1,62 - 691 D2:1657 FF 3F 02 - .db -1,63,2 - 692 D2:165A FF FF D9 00 + 689 D2:166D 3E 01 F4 - .db 62,1,-12 + 690 D2:1670 0C FF 3E - .db 12,-1,62 + 691 D2:1673 FF 3F 02 - .db -1,63,2 + 692 D2:1676 FF FF D9 00 01 00 - - .dw -1,217,1 - 693 D2:1660 02 00 01 00 + 693 D2:167C 02 00 01 00 7A FF - - .dw 2,1,-134 - 694 D2:1666 21 1A 30 - .db 33,26,48 - 695 D2:1669 01 00 06 00 + 694 D2:1682 21 1A 30 - .db 33,26,48 + 695 D2:1685 01 00 06 00 69 FF - - .dw 1,6,-151 - 696 D2:166F 22 E6 2E - .db 34,-26,46 - 697 D2:1672 12 00 07 00 + 696 D2:168B 22 E6 2E - .db 34,-26,46 + 697 D2:168E 12 00 07 00 7F FF - - .dw 18,7,-129 - 698 D2:1678 35 DD 05 - .db 53,-35,5 - 699 D2:167B FE FF 08 00 + 698 D2:1694 35 DD 05 - .db 53,-35,5 + 699 D2:1697 FE FF 08 00 9E FF - - .dw -2,8,-98 - 700 D2:1681 34 23 06 - .db 52,35,6 - 701 D2:1684 FE FF 08 00 + 700 D2:169D 34 23 06 - .db 52,35,6 + 701 D2:16A0 FE FF 08 00 43 FF - - .dw -2,8,-189 - 702 D2:168A F2 2D 2A - .db -14,45,42 - 703 D2:168D 0D 00 0A 00 + 702 D2:16A6 F2 2D 2A - .db -14,45,42 + 703 D2:16A9 0D 00 0A 00 6A FF - - .dw 13,10,-150 - 704 D2:1693 F2 D2 29 - .db -14,-46,41 - 705 D2:1696 07 00 0B 00 + 704 D2:16AF F2 D2 29 - .db -14,-46,41 + 705 D2:16B2 07 00 0B 00 43 FF - - .dw 7,11,-189 - 706 D2:169C 33 DE F3 - .db 51,-34,-13 - 707 D2:169F 05 00 0B 00 + 706 D2:16B8 33 DE F3 - .db 51,-34,-13 + 707 D2:16BB 05 00 0B 00 9E FF - - .dw 5,11,-98 - 708 D2:16A5 32 24 F2 - .db 50,36,-14 - 709 D2:16A8 FD FF 0B 00 + 708 D2:16C1 32 24 F2 - .db 50,36,-14 + 709 D2:16C4 FD FF 0B 00 3E FF - - .dw -3,11,-194 - 710 D2:16AE 2D DA E8 - .db 45,-38,-24 - 711 D2:16B1 F7 FF 0F 00 + 710 D2:16CA 2D DA E8 - .db 45,-38,-24 + 711 D2:16CD F7 FF 0F 00 43 FF - - .dw -9,15,-189 - 712 D2:16B7 2F 24 E9 - .db 47,36,-23 - 713 D2:16BA F5 FF 0F 00 + 712 D2:16D3 2F 24 E9 - .db 47,36,-23 + 713 D2:16D6 F5 FF 0F 00 9E FF - - .dw -11,15,-98 - 714 D2:16C0 1F 04 C9 - .db 31,4,-55 - 715 D2:16C3 04 00 10 00 + 714 D2:16DC 1F 04 C9 - .db 31,4,-55 + 715 D2:16DF 04 00 10 00 3E FF - - .dw 4,16,-194 - 716 D2:16C9 EC DE CF - .db -20,-34,-49 - 717 D2:16CC F8 FF 11 00 + 716 D2:16E5 EC DE CF - .db -20,-34,-49 + 717 D2:16E8 F8 FF 11 00 69 FF - - .dw -8,17,-151 - 718 D2:16D2 EE C5 F3 - .db -18,-59,-13 - 719 D2:16D5 F7 FF 11 00 + 718 D2:16EE EE C5 F3 - .db -18,-59,-13 + 719 D2:16F1 F7 FF 11 00 7A FF - - .dw -9,17,-134 - 720 D2:16DB EF 3C F5 - .db -17,60,-11 - 721 D2:16DE 07 00 14 00 + 720 D2:16F7 EF 3C F5 - .db -17,60,-11 + 721 D2:16FA 07 00 14 00 43 FF - - .dw 7,20,-189 - 722 D2:16E4 E8 26 D3 - .db -24,38,-45 - 723 D2:16E7 05 00 14 00 + 722 D2:1700 E8 26 D3 - .db -24,38,-45 + 723 D2:1703 05 00 14 00 9E FF - - .dw 5,20,-98 - 724 D2:16ED C2 FE F2 - .db -62,-2,-14 - 725 D2:16F0 FC FF 15 00 + 724 D2:1709 C2 FE F2 - .db -62,-2,-14 + 725 D2:170C FC FF 15 00 3E FF - - .dw -4,21,-194 - 726 D2:16F6 F3 C2 FC - .db -13,-62,-4 - 727 D2:16F9 FE FF 17 00 + 726 D2:1712 F3 C2 FC - .db -13,-62,-4 + 727 D2:1715 FE FF 17 00 43 FF - - .dw -2,23,-189 - 728 D2:16FF F2 3E FF - .db -14,62,-1 - 729 D2:1702 FE FF 17 00 + 728 D2:171B F2 3E FF - .db -14,62,-1 + 729 D2:171E FE FF 17 00 9E FF - - .dw -2,23,-98 - 730 D2:1708 C1 00 FD - .db -63,0,-3 - 731 D2:170B 0D 00 18 00 + 730 D2:1724 C1 00 FD - .db -63,0,-3 + 731 D2:1727 0D 00 18 00 6A FF - - .dw 13,24,-150 - 732 D2:1711 CB 00 23 - .db -53,0,35 - 733 D2:1714 12 00 1A 00 + 732 D2:172D CB 00 23 - .db -53,0,35 + 733 D2:1730 12 00 1A 00 7F FF - - .dw 18,26,-129 - 734 D2:171A F2 C3 F9 - .db -14,-61,-7 - 735 D2:171D 01 00 1C 00 + 734 D2:1736 F2 C3 F9 - .db -14,-61,-7 + 735 D2:1739 01 00 1C 00 69 FF - - .dw 1,28,-151 - 736 D2:1723 F1 3D F7 - .db -15,61,-9 - 737 D2:1726 02 00 20 00 + 736 D2:173F F1 3D F7 - .db -15,61,-9 + 737 D2:1742 02 00 20 00 7A FF - - .dw 2,32,-134 - 738 D2:172C C1 00 00 - .db -63,0,0 - 739 D2:172F 00 80 - - .dw VX_ANIMATION_BONE - 740 D2:1731 13 - - - .db 19 - 741 D2:1732 3F 03 FF - .db 63,3,-1 - 742 D2:1735 01 FF 3F - .db 1,-1,63 - 743 D2:1738 FD 3F 01 - .db -3,63,1 - 744 D2:173B 25 00 DC 00 + 738 D2:1748 C1 00 00 - .db -63,0,0 + 739 D2:174B 00 80 - - .dw VX_ANIMATION_BONE + 740 D2:174D 13 - - - .db 19 + 741 D2:174E 3F 03 FF - .db 63,3,-1 + 742 D2:1751 01 FF 3F - .db 1,-1,63 + 743 D2:1754 FD 3F 01 - .db -3,63,1 + 744 D2:1757 25 00 DC 00 FF FF - - .dw 37,220,-1 - 745 D2:1741 3F 05 F8 - .db 63,5,-8 - 746 D2:1744 09 00 3F - .db 9,0,63 - 747 D2:1747 FB 3F 01 - .db -5,63,1 - 748 D2:174A 17 00 DC 00 + 745 D2:175D 3F 05 F8 - .db 63,5,-8 + 746 D2:1760 09 00 3F - .db 9,0,63 + 747 D2:1763 FB 3F 01 - .db -5,63,1 + 748 D2:1766 17 00 DC 00 FF FF - - .dw 23,220,-1 - 749 D2:1750 3D 05 EE - .db 61,5,-18 - 750 D2:1753 12 00 3D - .db 18,0,61 - 751 D2:1756 FC 3F 02 - .db -4,63,2 - 752 D2:1759 03 00 DA 00 + 749 D2:176C 3D 05 EE - .db 61,5,-18 + 750 D2:176F 12 00 3D - .db 18,0,61 + 751 D2:1772 FC 3F 02 - .db -4,63,2 + 752 D2:1775 03 00 DA 00 FF FF - - .dw 3,218,-1 - 753 D2:175F 39 03 E4 - .db 57,3,-28 - 754 D2:1762 1C FF 39 - .db 28,-1,57 - 755 D2:1765 FF 3F 03 - .db -1,63,3 - 756 D2:1768 EB FF D5 00 + 753 D2:177B 39 03 E4 - .db 57,3,-28 + 754 D2:177E 1C FF 39 - .db 28,-1,57 + 755 D2:1781 FF 3F 03 - .db -1,63,3 + 756 D2:1784 EB FF D5 00 FF FF - - .dw -21,213,-1 - 757 D2:176E 2E 00 D4 - .db 46,0,-44 - 758 D2:1771 2C FF 2E - .db 44,-1,46 - 759 D2:1774 00 3F 01 - .db 0,63,1 - 760 D2:1777 BC FF BC 00 + 757 D2:178A 2E 00 D4 - .db 46,0,-44 + 758 D2:178D 2C FF 2E - .db 44,-1,46 + 759 D2:1790 00 3F 01 - .db 0,63,1 + 760 D2:1793 BC FF BC 00 FE FF - - .dw -68,188,-2 - 761 D2:177D 2C 00 D3 - .db 44,0,-45 - 762 D2:1780 2D FF 2C - .db 45,-1,44 - 763 D2:1783 01 3F 01 - .db 1,63,1 - 764 D2:1786 AC FF B9 00 + 761 D2:1799 2C 00 D3 - .db 44,0,-45 + 762 D2:179C 2D FF 2C - .db 45,-1,44 + 763 D2:179F 01 3F 01 - .db 1,63,1 + 764 D2:17A2 AC FF B9 00 FC FF - - .dw -84,185,-4 - 765 D2:178C 36 00 DF - .db 54,0,-33 - 766 D2:178F 21 FF 36 - .db 33,-1,54 - 767 D2:1792 00 3F 01 - .db 0,63,1 - 768 D2:1795 BD FF D1 00 + 765 D2:17A8 36 00 DF - .db 54,0,-33 + 766 D2:17AB 21 FF 36 - .db 33,-1,54 + 767 D2:17AE 00 3F 01 - .db 0,63,1 + 768 D2:17B1 BD FF D1 00 FD FF - - .dw -67,209,-3 - 769 D2:179B 3A 00 E7 - .db 58,0,-25 - 770 D2:179E 19 FF 3A - .db 25,-1,58 - 771 D2:17A1 00 3F 01 - .db 0,63,1 - 772 D2:17A4 C1 FF DC 00 + 769 D2:17B7 3A 00 E7 - .db 58,0,-25 + 770 D2:17BA 19 FF 3A - .db 25,-1,58 + 771 D2:17BD 00 3F 01 - .db 0,63,1 + 772 D2:17C0 C1 FF DC 00 FD FF - - .dw -63,220,-3 - 773 D2:17AA 3F FF F7 - .db 63,-1,-9 - 774 D2:17AD 09 00 3F - .db 9,0,63 - 775 D2:17B0 01 3F 00 - .db 1,63,0 - 776 D2:17B3 D4 FF E2 00 + 773 D2:17C6 3F FF F7 - .db 63,-1,-9 + 774 D2:17C9 09 00 3F - .db 9,0,63 + 775 D2:17CC 01 3F 00 - .db 1,63,0 + 776 D2:17CF D4 FF E2 00 FD FF - - .dw -44,226,-3 - 777 D2:17B9 3E FD 0D - .db 62,-3,13 - 778 D2:17BC F3 FF 3E - .db -13,-1,62 - 779 D2:17BF 03 3F 01 - .db 3,63,1 - 780 D2:17C2 F4 FF DA 00 + 777 D2:17D5 3E FD 0D - .db 62,-3,13 + 778 D2:17D8 F3 FF 3E - .db -13,-1,62 + 779 D2:17DB 03 3F 01 - .db 3,63,1 + 780 D2:17DE F4 FF DA 00 FE FF - - .dw -12,218,-2 - 781 D2:17C8 3C FC 13 - .db 60,-4,19 - 782 D2:17CB ED 00 3C - .db -19,0,60 - 783 D2:17CE 04 3F 01 - .db 4,63,1 - 784 D2:17D1 FE FF D4 00 + 781 D2:17E4 3C FC 13 - .db 60,-4,19 + 782 D2:17E7 ED 00 3C - .db -19,0,60 + 783 D2:17EA 04 3F 01 - .db 4,63,1 + 784 D2:17ED FE FF D4 00 FE FF - - .dw -2,212,-2 - 785 D2:17D7 3C FA 13 - .db 60,-6,19 - 786 D2:17DA ED 00 3C - .db -19,0,60 - 787 D2:17DD 06 3F 01 - .db 6,63,1 - 788 D2:17E0 02 00 D2 00 + 785 D2:17F3 3C FA 13 - .db 60,-6,19 + 786 D2:17F6 ED 00 3C - .db -19,0,60 + 787 D2:17F9 06 3F 01 - .db 6,63,1 + 788 D2:17FC 02 00 D2 00 FF FF - - .dw 2,210,-1 - 789 D2:17E6 3F F8 FF - .db 63,-8,-1 - 790 D2:17E9 01 00 3F - .db 1,0,63 - 791 D2:17EC 08 3F 00 - .db 8,63,0 - 792 D2:17EF D2 FF D9 00 + 789 D2:1802 3F F8 FF - .db 63,-8,-1 + 790 D2:1805 01 00 3F - .db 1,0,63 + 791 D2:1808 08 3F 00 - .db 8,63,0 + 792 D2:180B D2 FF D9 00 F9 FF - - .dw -46,217,-7 - 793 D2:17F5 3F F9 FF - .db 63,-7,-1 - 794 D2:17F8 01 00 3F - .db 1,0,63 - 795 D2:17FB 07 3F 00 - .db 7,63,0 - 796 D2:17FE DF FF D8 00 + 793 D2:1811 3F F9 FF - .db 63,-7,-1 + 794 D2:1814 01 00 3F - .db 1,0,63 + 795 D2:1817 07 3F 00 - .db 7,63,0 + 796 D2:181A DF FF D8 00 FC FF - - .dw -33,216,-4 - 797 D2:1804 3F FA 00 - .db 63,-6,0 - 798 D2:1807 00 FF 3F - .db 0,-1,63 - 799 D2:180A 06 3F 01 - .db 6,63,1 - 800 D2:180D EC FF D8 00 + 797 D2:1820 3F FA 00 - .db 63,-6,0 + 798 D2:1823 00 FF 3F - .db 0,-1,63 + 799 D2:1826 06 3F 01 - .db 6,63,1 + 800 D2:1829 EC FF D8 00 FE FF - - .dw -20,216,-2 - 801 D2:1813 3F FC 00 - .db 63,-4,0 - 802 D2:1816 00 FF 3F - .db 0,-1,63 - 803 D2:1819 04 3F 01 - .db 4,63,1 - 804 D2:181C FA FF D9 00 + 801 D2:182F 3F FC 00 - .db 63,-4,0 + 802 D2:1832 00 FF 3F - .db 0,-1,63 + 803 D2:1835 04 3F 01 - .db 4,63,1 + 804 D2:1838 FA FF D9 00 00 00 - - .dw -6,217,0 - 805 D2:1822 3F FD FE - .db 63,-3,-2 - 806 D2:1825 01 FE 3F - .db 1,-2,63 - 807 D2:1828 03 3F 01 - .db 3,63,1 - 808 D2:182B 06 00 DB 00 + 805 D2:183E 3F FD FE - .db 63,-3,-2 + 806 D2:1841 01 FE 3F - .db 1,-2,63 + 807 D2:1844 03 3F 01 - .db 3,63,1 + 808 D2:1847 06 00 DB 00 01 00 - - .dw 6,219,1 - 809 D2:1831 3F 00 FF - .db 63,0,-1 - 810 D2:1834 01 FF 3F - .db 1,-1,63 - 811 D2:1837 00 3F 01 - .db 0,63,1 - 812 D2:183A 16 00 DB 00 + 809 D2:184D 3F 00 FF - .db 63,0,-1 + 810 D2:1850 01 FF 3F - .db 1,-1,63 + 811 D2:1853 00 3F 01 - .db 0,63,1 + 812 D2:1856 16 00 DB 00 01 00 - - .dw 22,219,1 - 813 D2:1840 3F 01 FF - .db 63,1,-1 - 814 D2:1843 01 FF 3F - .db 1,-1,63 - 815 D2:1846 FF 3F 01 - .db -1,63,1 - 816 D2:1849 1D 00 DC 00 + 813 D2:185C 3F 01 FF - .db 63,1,-1 + 814 D2:185F 01 FF 3F - .db 1,-1,63 + 815 D2:1862 FF 3F 01 - .db -1,63,1 + 816 D2:1865 1D 00 DC 00 00 00 - - .dw 29,220,0 - 817 D2:184F EF FF 03 00 + 817 D2:186B EF FF 03 00 27 FF - - .dw -17,3,-217 - 818 D2:1855 D5 E0 22 - .db -43,-32,34 - 819 D2:1858 EE FF 05 00 + 818 D2:1871 D5 E0 22 - .db -43,-32,34 + 819 D2:1874 EE FF 05 00 39 FF - - .dw -18,5,-199 - 820 D2:185E D5 20 22 - .db -43,32,34 - 821 D2:1861 0C 00 06 00 + 820 D2:187A D5 20 22 - .db -43,32,34 + 821 D2:187D 0C 00 06 00 38 FF - - .dw 12,6,-200 - 822 D2:1867 D6 22 DF - .db -42,34,-33 - 823 D2:186A 0D 00 07 00 + 822 D2:1883 D6 22 DF - .db -42,34,-33 + 823 D2:1886 0D 00 07 00 27 FF - - .dw 13,7,-217 - 824 D2:1870 D7 DE DF - .db -41,-34,-33 - 825 D2:1873 D5 FF 08 00 + 824 D2:188C D7 DE DF - .db -41,-34,-33 + 825 D2:188F D5 FF 08 00 28 FF - - .dw -43,8,-216 - 826 D2:1879 FF CF D8 - .db -1,-49,-40 - 827 D2:187C F8 FF 08 00 + 826 D2:1895 FF CF D8 - .db -1,-49,-40 + 827 D2:1898 F8 FF 08 00 41 FF - - .dw -8,8,-191 - 828 D2:1882 FC 31 D8 - .db -4,49,-40 - 829 D2:1885 08 00 08 00 + 828 D2:189E FC 31 D8 - .db -4,49,-40 + 829 D2:18A1 08 00 08 00 42 FF - - .dw 8,8,-190 - 830 D2:188B 28 22 DD - .db 40,34,-35 - 831 D2:188E D6 FF 09 00 + 830 D2:18A7 28 22 DD - .db 40,34,-35 + 831 D2:18AA D6 FF 09 00 31 FF - - .dw -42,9,-207 - 832 D2:1894 28 DE DD - .db 40,-34,-35 - 833 D2:1897 D6 FF 15 00 + 832 D2:18B0 28 DE DD - .db 40,-34,-35 + 833 D2:18B3 D6 FF 15 00 31 FF - - .dw -42,21,-207 - 834 D2:189D EE E0 34 - .db -18,-32,52 - 835 D2:18A0 D5 FF 16 00 + 834 D2:18B9 EE E0 34 - .db -18,-32,52 + 835 D2:18BC D5 FF 16 00 28 FF - - .dw -43,22,-216 - 836 D2:18A6 1E DF 2D - .db 30,-33,45 - 837 D2:18A9 F8 FF 16 00 + 836 D2:18C2 1E DF 2D - .db 30,-33,45 + 837 D2:18C5 F8 FF 16 00 41 FF - - .dw -8,22,-191 - 838 D2:18AF 1D 22 2C - .db 29,34,44 - 839 D2:18B2 08 00 16 00 + 838 D2:18CB 1D 22 2C - .db 29,34,44 + 839 D2:18CE 08 00 16 00 42 FF - - .dw 8,22,-190 - 840 D2:18B8 F0 22 32 - .db -16,34,50 - 841 D2:18BB 0D 00 16 00 + 840 D2:18D4 F0 22 32 - .db -16,34,50 + 841 D2:18D7 0D 00 16 00 27 FF - - .dw 13,22,-217 - 842 D2:18C1 2C 2C 0B - .db 44,44,11 - 843 D2:18C4 0C 00 17 00 + 842 D2:18DD 2C 2C 0B - .db 44,44,11 + 843 D2:18E0 0C 00 17 00 38 FF - - .dw 12,23,-200 - 844 D2:18CA 2D D4 0A - .db 45,-44,10 - 845 D2:18CD EE FF 18 00 + 844 D2:18E6 2D D4 0A - .db 45,-44,10 + 845 D2:18E9 EE FF 18 00 39 FF - - .dw -18,24,-199 - 846 D2:18D3 EF 2F 26 - .db -17,47,38 - 847 D2:18D6 EA FF 1A 00 + 846 D2:18EF EF 2F 26 - .db -17,47,38 + 847 D2:18F2 EA FF 1A 00 27 FF - - .dw -22,26,-217 - 848 D2:18DC EE D1 26 - .db -18,-47,38 - 849 D2:18DF 00 80 - - .dw VX_ANIMATION_BONE - 850 D2:18E1 13 - - - .db 19 - 851 D2:18E2 3F FF FF - .db 63,-1,-1 - 852 D2:18E5 01 00 3F - .db 1,0,63 - 853 D2:18E8 01 3F 00 - .db 1,63,0 - 854 D2:18EB 00 00 D6 00 + 848 D2:18F8 EE D1 26 - .db -18,-47,38 + 849 D2:18FB 00 80 - - .dw VX_ANIMATION_BONE + 850 D2:18FD 13 - - - .db 19 + 851 D2:18FE 3F FF FF - .db 63,-1,-1 + 852 D2:1901 01 00 3F - .db 1,0,63 + 853 D2:1904 01 3F 00 - .db 1,63,0 + 854 D2:1907 00 00 D6 00 00 00 - - .dw 0,214,0 - 855 D2:18F1 3F FD FF - .db 63,-3,-1 - 856 D2:18F4 01 01 3F - .db 1,1,63 - 857 D2:18F7 03 3F FF - .db 3,63,-1 - 858 D2:18FA FD FF D5 00 + 855 D2:190D 3F FD FF - .db 63,-3,-1 + 856 D2:1910 01 01 3F - .db 1,1,63 + 857 D2:1913 03 3F FF - .db 3,63,-1 + 858 D2:1916 FD FF D5 00 01 00 - - .dw -3,213,1 - 859 D2:1900 3F FD FE - .db 63,-3,-2 - 860 D2:1903 02 01 3F - .db 2,1,63 - 861 D2:1906 03 3F FF - .db 3,63,-1 - 862 D2:1909 FB FF D5 00 + 859 D2:191C 3F FD FE - .db 63,-3,-2 + 860 D2:191F 02 01 3F - .db 2,1,63 + 861 D2:1922 03 3F FF - .db 3,63,-1 + 862 D2:1925 FB FF D5 00 01 00 - - .dw -5,213,1 - 863 D2:190F 3F FE FF - .db 63,-2,-1 - 864 D2:1912 02 01 3F - .db 2,1,63 - 865 D2:1915 02 3F FF - .db 2,63,-1 - 866 D2:1918 FB FF D5 00 + 863 D2:192B 3F FE FF - .db 63,-2,-1 + 864 D2:192E 02 01 3F - .db 2,1,63 + 865 D2:1931 02 3F FF - .db 2,63,-1 + 866 D2:1934 FB FF D5 00 00 00 - - .dw -5,213,0 - 867 D2:191E 3F 00 FF - .db 63,0,-1 - 868 D2:1921 01 01 3F - .db 1,1,63 - 869 D2:1924 00 3F FF - .db 0,63,-1 - 870 D2:1927 FC FF D6 00 + 867 D2:193A 3F 00 FF - .db 63,0,-1 + 868 D2:193D 01 01 3F - .db 1,1,63 + 869 D2:1940 00 3F FF - .db 0,63,-1 + 870 D2:1943 FC FF D6 00 00 00 - - .dw -4,214,0 - 871 D2:192D 3F 00 FF - .db 63,0,-1 - 872 D2:1930 01 01 3F - .db 1,1,63 - 873 D2:1933 00 3F FF - .db 0,63,-1 - 874 D2:1936 FE FF D6 00 + 871 D2:1949 3F 00 FF - .db 63,0,-1 + 872 D2:194C 01 01 3F - .db 1,1,63 + 873 D2:194F 00 3F FF - .db 0,63,-1 + 874 D2:1952 FE FF D6 00 FE FF - - .dw -2,214,-2 - 875 D2:193C 3F 00 FF - .db 63,0,-1 - 876 D2:193F 01 01 3F - .db 1,1,63 - 877 D2:1942 00 3F FF - .db 0,63,-1 - 878 D2:1945 00 00 D7 00 + 875 D2:1958 3F 00 FF - .db 63,0,-1 + 876 D2:195B 01 01 3F - .db 1,1,63 + 877 D2:195E 00 3F FF - .db 0,63,-1 + 878 D2:1961 00 00 D7 00 FE FF - - .dw 0,215,-2 - 879 D2:194B 3F 00 FF - .db 63,0,-1 - 880 D2:194E 01 00 3F - .db 1,0,63 - 881 D2:1951 00 3F 00 - .db 0,63,0 - 882 D2:1954 01 00 D8 00 + 879 D2:1967 3F 00 FF - .db 63,0,-1 + 880 D2:196A 01 00 3F - .db 1,0,63 + 881 D2:196D 00 3F 00 - .db 0,63,0 + 882 D2:1970 01 00 D8 00 FE FF - - .dw 1,216,-2 - 883 D2:195A 3F 00 FF - .db 63,0,-1 - 884 D2:195D 01 00 3F - .db 1,0,63 - 885 D2:1960 00 3F 00 - .db 0,63,0 - 886 D2:1963 00 00 D7 00 + 883 D2:1976 3F 00 FF - .db 63,0,-1 + 884 D2:1979 01 00 3F - .db 1,0,63 + 885 D2:197C 00 3F 00 - .db 0,63,0 + 886 D2:197F 00 00 D7 00 FE FF - - .dw 0,215,-2 - 887 D2:1969 3F 00 FE - .db 63,0,-2 - 888 D2:196C 02 00 3F - .db 2,0,63 - 889 D2:196F 00 3F 00 - .db 0,63,0 - 890 D2:1972 FE FF D5 00 + 887 D2:1985 3F 00 FE - .db 63,0,-2 + 888 D2:1988 02 00 3F - .db 2,0,63 + 889 D2:198B 00 3F 00 - .db 0,63,0 + 890 D2:198E FE FF D5 00 FE FF - - .dw -2,213,-2 - 891 D2:1978 3F 02 FF - .db 63,2,-1 - 892 D2:197B 01 00 3F - .db 1,0,63 - 893 D2:197E FE 3F 00 - .db -2,63,0 - 894 D2:1981 FC FF D3 00 + 891 D2:1994 3F 02 FF - .db 63,2,-1 + 892 D2:1997 01 00 3F - .db 1,0,63 + 893 D2:199A FE 3F 00 - .db -2,63,0 + 894 D2:199D FC FF D3 00 FD FF - - .dw -4,211,-3 - 895 D2:1987 3F 03 FE - .db 63,3,-2 - 896 D2:198A 02 FF 3F - .db 2,-1,63 - 897 D2:198D FD 3F 01 - .db -3,63,1 - 898 D2:1990 FC FF D3 00 + 895 D2:19A3 3F 03 FE - .db 63,3,-2 + 896 D2:19A6 02 FF 3F - .db 2,-1,63 + 897 D2:19A9 FD 3F 01 - .db -3,63,1 + 898 D2:19AC FC FF D3 00 FD FF - - .dw -4,211,-3 - 899 D2:1996 3F 01 FF - .db 63,1,-1 - 900 D2:1999 01 FF 3F - .db 1,-1,63 - 901 D2:199C FF 3F 01 - .db -1,63,1 - 902 D2:199F FD FF D3 00 + 899 D2:19B2 3F 01 FF - .db 63,1,-1 + 900 D2:19B5 01 FF 3F - .db 1,-1,63 + 901 D2:19B8 FF 3F 01 - .db -1,63,1 + 902 D2:19BB FD FF D3 00 FC FF - - .dw -3,211,-4 - 903 D2:19A5 3F 01 FF - .db 63,1,-1 - 904 D2:19A8 01 FF 3F - .db 1,-1,63 - 905 D2:19AB FF 3F 01 - .db -1,63,1 - 906 D2:19AE FD FF D3 00 + 903 D2:19C1 3F 01 FF - .db 63,1,-1 + 904 D2:19C4 01 FF 3F - .db 1,-1,63 + 905 D2:19C7 FF 3F 01 - .db -1,63,1 + 906 D2:19CA FD FF D3 00 FD FF - - .dw -3,211,-3 - 907 D2:19B4 3F 01 FF - .db 63,1,-1 - 908 D2:19B7 01 FE 3F - .db 1,-2,63 - 909 D2:19BA FF 3F 02 - .db -1,63,2 - 910 D2:19BD FF FF D5 00 + 907 D2:19D0 3F 01 FF - .db 63,1,-1 + 908 D2:19D3 01 FE 3F - .db 1,-2,63 + 909 D2:19D6 FF 3F 02 - .db -1,63,2 + 910 D2:19D9 FF FF D5 00 FD FF - - .dw -1,213,-3 - 911 D2:19C3 3F 00 FF - .db 63,0,-1 - 912 D2:19C6 01 FE 3F - .db 1,-2,63 - 913 D2:19C9 00 3F 02 - .db 0,63,2 - 914 D2:19CC 00 00 D7 00 + 911 D2:19DF 3F 00 FF - .db 63,0,-1 + 912 D2:19E2 01 FE 3F - .db 1,-2,63 + 913 D2:19E5 00 3F 02 - .db 0,63,2 + 914 D2:19E8 00 00 D7 00 FE FF - - .dw 0,215,-2 - 915 D2:19D2 3F FF FF - .db 63,-1,-1 - 916 D2:19D5 01 FF 3F - .db 1,-1,63 - 917 D2:19D8 01 3F 01 - .db 1,63,1 - 918 D2:19DB 02 00 D9 00 + 915 D2:19EE 3F FF FF - .db 63,-1,-1 + 916 D2:19F1 01 FF 3F - .db 1,-1,63 + 917 D2:19F4 01 3F 01 - .db 1,63,1 + 918 D2:19F7 02 00 D9 00 00 00 - - .dw 2,217,0 - 919 D2:19E1 3F FF FF - .db 63,-1,-1 - 920 D2:19E4 01 00 3F - .db 1,0,63 - 921 D2:19E7 01 3F 00 - .db 1,63,0 - 922 D2:19EA 02 00 D9 00 + 919 D2:19FD 3F FF FF - .db 63,-1,-1 + 920 D2:1A00 01 00 3F - .db 1,0,63 + 921 D2:1A03 01 3F 00 - .db 1,63,0 + 922 D2:1A06 02 00 D9 00 00 00 - - .dw 2,217,0 - 923 D2:19F0 3F FF FF - .db 63,-1,-1 - 924 D2:19F3 01 00 3F - .db 1,0,63 - 925 D2:19F6 01 3F 00 - .db 1,63,0 - 926 D2:19F9 01 00 D8 00 + 923 D2:1A0C 3F FF FF - .db 63,-1,-1 + 924 D2:1A0F 01 00 3F - .db 1,0,63 + 925 D2:1A12 01 3F 00 - .db 1,63,0 + 926 D2:1A15 01 00 D8 00 00 00 - - .dw 1,216,0 - 927 D2:19FF EA FF E4 FF + 927 D2:1A1B EA FF E4 FF 49 00 - - .dw -22,-28,73 - 928 D2:1A05 DA D6 E5 - .db -38,-42,-27 - 929 D2:1A08 F1 FF E5 FF + 928 D2:1A21 DA D6 E5 - .db -38,-42,-27 + 929 D2:1A24 F1 FF E5 FF 48 00 - - .dw -15,-27,72 - 930 D2:1A0E DA 2A E5 - .db -38,42,-27 - 931 D2:1A11 F9 FF E6 FF + 930 D2:1A2A DA 2A E5 - .db -38,42,-27 + 931 D2:1A2D F9 FF E6 FF 61 00 - - .dw -7,-26,97 - 932 D2:1A17 25 2B E4 - .db 37,43,-28 - 933 D2:1A1A 09 00 E6 FF + 932 D2:1A33 25 2B E4 - .db 37,43,-28 + 933 D2:1A36 09 00 E6 FF 61 00 - - .dw 9,-26,97 - 934 D2:1A20 25 D5 E4 - .db 37,-43,-28 - 935 D2:1A23 F2 FF E6 FF + 934 D2:1A3C 25 D5 E4 - .db 37,-43,-28 + 935 D2:1A3F F2 FF E6 FF 55 00 - - .dw -14,-26,85 - 936 D2:1A29 DE 23 28 - .db -34,35,40 - 937 D2:1A2C E8 FF E8 FF + 936 D2:1A45 DE 23 28 - .db -34,35,40 + 937 D2:1A48 E8 FF E8 FF 42 00 - - .dw -24,-24,66 - 938 D2:1A32 D6 12 2C - .db -42,18,44 - 939 D2:1A35 E4 FF E8 FF + 938 D2:1A4E D6 12 2C - .db -42,18,44 + 939 D2:1A51 E4 FF E8 FF 4B 00 - - .dw -28,-24,75 - 940 D2:1A3B D6 EF 2C - .db -42,-17,44 - 941 D2:1A3E EC FF E8 FF + 940 D2:1A57 D6 EF 2C - .db -42,-17,44 + 941 D2:1A5A EC FF E8 FF 52 00 - - .dw -20,-24,82 - 942 D2:1A44 DE DD 28 - .db -34,-35,40 - 943 D2:1A47 EF FF E9 FF + 942 D2:1A60 DE DD 28 - .db -34,-35,40 + 943 D2:1A63 EF FF E9 FF 3F 00 - - .dw -17,-23,63 - 944 D2:1A4D 22 DF 2A - .db 34,-33,42 - 945 D2:1A50 E1 FF EA FF + 944 D2:1A69 22 DF 2A - .db 34,-33,42 + 945 D2:1A6C E1 FF EA FF 47 00 - - .dw -31,-22,71 - 946 D2:1A56 22 21 2A - .db 34,33,42 - 947 D2:1A59 14 00 EA FF + 946 D2:1A72 22 21 2A - .db 34,33,42 + 947 D2:1A75 14 00 EA FF 4B 00 - - .dw 20,-22,75 - 948 D2:1A5F 33 E7 1C - .db 51,-25,28 - 949 D2:1A62 E7 FF EA FF + 948 D2:1A7B 33 E7 1C - .db 51,-25,28 + 949 D2:1A7E E7 FF EA FF 51 00 - - .dw -25,-22,81 - 950 D2:1A68 31 1A 1E - .db 49,26,30 - 951 D2:1A6B 0D 00 EC FF + 950 D2:1A84 31 1A 1E - .db 49,26,30 + 951 D2:1A87 0D 00 EC FF 3C 00 - - .dw 13,-20,60 - 952 D2:1A71 27 2A E6 - .db 39,42,-26 - 953 D2:1A74 13 00 ED FF + 952 D2:1A8D 27 2A E6 - .db 39,42,-26 + 953 D2:1A90 13 00 ED FF 3C 00 - - .dw 19,-19,60 - 954 D2:1A7A 26 D4 E7 - .db 38,-44,-25 - 955 D2:1A7D 18 00 EE FF + 954 D2:1A96 26 D4 E7 - .db 38,-44,-25 + 955 D2:1A99 18 00 EE FF 5D 00 - - .dw 24,-18,93 - 956 D2:1A83 2F D6 00 - .db 47,-42,0 - 957 D2:1A86 0B 00 EE FF + 956 D2:1A9F 2F D6 00 - .db 47,-42,0 + 957 D2:1AA2 0B 00 EE FF 61 00 - - .dw 11,-18,97 - 958 D2:1A8C 2F 2A 01 - .db 47,42,1 - 959 D2:1A8F 0F 00 EE FF + 958 D2:1AA8 2F 2A 01 - .db 47,42,1 + 959 D2:1AAB 0F 00 EE FF 62 00 - - .dw 15,-18,98 - 960 D2:1A95 D3 DA E9 - .db -45,-38,-23 - 961 D2:1A98 1A 00 EE FF + 960 D2:1AB1 D3 DA E9 - .db -45,-38,-23 + 961 D2:1AB4 1A 00 EE FF 45 00 - - .dw 26,-18,69 - 962 D2:1A9E D2 25 E9 - .db -46,37,-23 - 963 D2:1AA1 F2 FF EF FF + 962 D2:1ABA D2 25 E9 - .db -46,37,-23 + 963 D2:1ABD F2 FF EF FF 19 00 - - .dw -14,-17,25 - 964 D2:1AA7 D3 2D 00 - .db -45,45,0 - 965 D2:1AAA 05 00 EF FF + 964 D2:1AC3 D3 2D 00 - .db -45,45,0 + 965 D2:1AC6 05 00 EF FF 19 00 - - .dw 5,-17,25 - 966 D2:1AB0 D3 D3 00 - .db -45,-45,0 - 967 D2:1AB3 E0 FF EF FF + 966 D2:1ACC D3 D3 00 - .db -45,-45,0 + 967 D2:1ACF E0 FF EF FF 4D 00 - - .dw -32,-17,77 - 968 D2:1AB9 D2 05 2B - .db -46,5,43 - 969 D2:1ABC 06 00 F0 FF + 968 D2:1AD5 D2 05 2B - .db -46,5,43 + 969 D2:1AD8 06 00 F0 FF 2E 00 - - .dw 6,-16,46 - 970 D2:1AC2 D3 FB 2C - .db -45,-5,44 - 971 D2:1AC5 EF FF F0 FF + 970 D2:1ADE D3 FB 2C - .db -45,-5,44 + 971 D2:1AE1 EF FF F0 FF 30 00 - - .dw -17,-16,48 - 972 D2:1ACB CC F4 DF - .db -52,-12,-33 - 973 D2:1ACE ED FF F1 FF + 972 D2:1AE7 CC F4 DF - .db -52,-12,-33 + 973 D2:1AEA ED FF F1 FF 3B 00 - - .dw -19,-15,59 - 974 D2:1AD4 CB 09 DF - .db -53,9,-33 - 975 D2:1AD7 E8 FF F1 FF + 974 D2:1AF0 CB 09 DF - .db -53,9,-33 + 975 D2:1AF3 E8 FF F1 FF 53 00 - - .dw -24,-15,83 - 976 D2:1ADD DE F9 35 - .db -34,-7,53 - 977 D2:1AE0 ED FF F1 FF + 976 D2:1AF9 DE F9 35 - .db -34,-7,53 + 977 D2:1AFC ED FF F1 FF 56 00 - - .dw -19,-15,86 - 978 D2:1AE6 DE 07 35 - .db -34,7,53 - 979 D2:1AE9 E7 FF F1 FF + 978 D2:1B02 DE 07 35 - .db -34,7,53 + 979 D2:1B05 E7 FF F1 FF 3F 00 - - .dw -25,-15,63 - 980 D2:1AEF C8 0C 1C - .db -56,12,28 - 981 D2:1AF2 E0 FF F1 FF + 980 D2:1B0B C8 0C 1C - .db -56,12,28 + 981 D2:1B0E E0 FF F1 FF 45 00 - - .dw -32,-15,69 - 982 D2:1AF8 C8 F4 1B - .db -56,-12,27 - 983 D2:1AFB 04 00 F3 FF + 982 D2:1B14 C8 F4 1B - .db -56,-12,27 + 983 D2:1B17 04 00 F3 FF 23 00 - - .dw 4,-13,35 - 984 D2:1B01 C7 07 E5 - .db -57,7,-27 - 985 D2:1B04 F4 FF F3 FF + 984 D2:1B1D C7 07 E5 - .db -57,7,-27 + 985 D2:1B20 F4 FF F3 FF 24 00 - - .dw -12,-13,36 - 986 D2:1B0A C7 F9 E5 - .db -57,-7,-27 - 987 D2:1B0D F1 FF F4 FF + 986 D2:1B26 C7 F9 E5 - .db -57,-7,-27 + 987 D2:1B29 F1 FF F4 FF 5A 00 - - .dw -15,-12,90 - 988 D2:1B13 DC F5 32 - .db -36,-11,50 - 989 D2:1B16 0B 00 F6 FF + 988 D2:1B2F DC F5 32 - .db -36,-11,50 + 989 D2:1B32 0B 00 F6 FF 66 00 - - .dw 11,-10,102 - 990 D2:1B1C DB 0B 32 - .db -37,11,50 - 991 D2:1B1F FB FF F9 FF + 990 D2:1B38 DB 0B 32 - .db -37,11,50 + 991 D2:1B3B FB FF F9 FF 64 00 - - .dw -5,-7,100 - 992 D2:1B25 DA 09 CF - .db -38,9,-49 - 993 D2:1B28 FE FF FA FF + 992 D2:1B41 DA 09 CF - .db -38,9,-49 + 993 D2:1B44 FE FF FA FF 74 00 - - .dw -2,-6,116 - 994 D2:1B2E DA F7 CF - .db -38,-9,-49 - 995 D2:1B31 0A 00 FA FF + 994 D2:1B4A DA F7 CF - .db -38,-9,-49 + 995 D2:1B4D 0A 00 FA FF 74 00 - - .dw 10,-6,116 - 996 D2:1B37 1A 20 D0 - .db 26,32,-48 - 997 D2:1B3A FE FF 04 00 + 996 D2:1B53 1A 20 D0 - .db 26,32,-48 + 997 D2:1B56 FE FF 04 00 74 00 - - .dw -2,4,116 - 998 D2:1B40 18 DF D0 - .db 24,-33,-48 - 999 D2:1B43 0A 00 04 00 + 998 D2:1B5C 18 DF D0 - .db 24,-33,-48 + 999 D2:1B5F 0A 00 04 00 74 00 - - .dw 10,4,116 - 1000 D2:1B49 14 CF DE - .db 20,-49,-34 - 1001 D2:1B4C FB FF 06 00 + 1000 D2:1B65 14 CF DE - .db 20,-49,-34 + 1001 D2:1B68 FB FF 06 00 64 00 - - .dw -5,6,100 - 1002 D2:1B52 14 33 E0 - .db 20,51,-32 - 1003 D2:1B55 0B 00 09 00 + 1002 D2:1B6E 14 33 E0 - .db 20,51,-32 + 1003 D2:1B71 0B 00 09 00 66 00 - - .dw 11,9,102 - 1004 D2:1B5B 35 1E F0 - .db 53,30,-16 - 1005 D2:1B5E F1 FF 0A 00 + 1004 D2:1B77 35 1E F0 - .db 53,30,-16 + 1005 D2:1B7A F1 FF 0A 00 5A 00 - - .dw -15,10,90 - 1006 D2:1B64 35 E2 F0 - .db 53,-30,-16 - 1007 D2:1B67 E7 FF 0C 00 + 1006 D2:1B80 35 E2 F0 - .db 53,-30,-16 + 1007 D2:1B83 E7 FF 0C 00 3F 00 - - .dw -25,12,63 - 1008 D2:1B6D 2C 23 1D - .db 44,35,29 - 1009 D2:1B70 E0 FF 0C 00 + 1008 D2:1B89 2C 23 1D - .db 44,35,29 + 1009 D2:1B8C E0 FF 0C 00 45 00 - - .dw -32,12,69 - 1010 D2:1B76 2C DD 1D - .db 44,-35,29 - 1011 D2:1B79 E8 FF 0C 00 + 1010 D2:1B92 2C DD 1D - .db 44,-35,29 + 1011 D2:1B95 E8 FF 0C 00 53 00 - - .dw -24,12,83 - 1012 D2:1B7F 0A 25 32 - .db 10,37,50 - 1013 D2:1B82 ED FF 0C 00 + 1012 D2:1B9B 0A 25 32 - .db 10,37,50 + 1013 D2:1B9E ED FF 0C 00 56 00 - - .dw -19,12,86 - 1014 D2:1B88 0A DB 32 - .db 10,-37,50 - 1015 D2:1B8B ED FF 0D 00 + 1014 D2:1BA4 0A DB 32 - .db 10,-37,50 + 1015 D2:1BA7 ED FF 0D 00 3B 00 - - .dw -19,13,59 - 1016 D2:1B91 27 20 26 - .db 39,32,38 - 1017 D2:1B94 04 00 0D 00 + 1016 D2:1BAD 27 20 26 - .db 39,32,38 + 1017 D2:1BB0 04 00 0D 00 23 00 - - .dw 4,13,35 - 1018 D2:1B9A 2A E1 23 - .db 42,-31,35 - 1019 D2:1B9D F4 FF 0D 00 + 1018 D2:1BB6 2A E1 23 - .db 42,-31,35 + 1019 D2:1BB9 F4 FF 0D 00 24 00 - - .dw -12,13,36 - 1020 D2:1BA3 F8 CC DC - .db -8,-52,-36 - 1021 D2:1BA6 E0 FF 0F 00 + 1020 D2:1BBF F8 CC DC - .db -8,-52,-36 + 1021 D2:1BC2 E0 FF 0F 00 4D 00 - - .dw -32,15,77 - 1022 D2:1BAC F3 35 E1 - .db -13,53,-31 - 1023 D2:1BAF 06 00 0F 00 + 1022 D2:1BC8 F3 35 E1 - .db -13,53,-31 + 1023 D2:1BCB 06 00 0F 00 2E 00 - - .dw 6,15,46 - 1024 D2:1BB5 05 C2 F6 - .db 5,-62,-10 - 1025 D2:1BB8 EF FF 0F 00 + 1024 D2:1BD1 05 C2 F6 - .db 5,-62,-10 + 1025 D2:1BD4 EF FF 0F 00 30 00 - - .dw -17,15,48 - 1026 D2:1BBE 1E D1 1E - .db 30,-47,30 - 1027 D2:1BC1 F2 FF 11 00 + 1026 D2:1BDA 1E D1 1E - .db 30,-47,30 + 1027 D2:1BDD F2 FF 11 00 19 00 - - .dw -14,17,25 - 1028 D2:1BC7 E8 D6 28 - .db -24,-42,40 - 1029 D2:1BCA 05 00 11 00 + 1028 D2:1BE3 E8 D6 28 - .db -24,-42,40 + 1029 D2:1BE6 05 00 11 00 19 00 - - .dw 5,17,25 - 1030 D2:1BD0 04 3F FA - .db 4,63,-6 - 1031 D2:1BD3 1A 00 12 00 + 1030 D2:1BEC 04 3F FA - .db 4,63,-6 + 1031 D2:1BEF 1A 00 12 00 45 00 - - .dw 26,18,69 - 1032 D2:1BD9 E8 2B 28 - .db -24,43,40 - 1033 D2:1BDC 18 00 12 00 + 1032 D2:1BF5 E8 2B 28 - .db -24,43,40 + 1033 D2:1BF8 18 00 12 00 5D 00 - - .dw 24,18,93 - 1034 D2:1BE2 1C 2F 20 - .db 28,47,32 - 1035 D2:1BE5 0B 00 12 00 + 1034 D2:1BFE 1C 2F 20 - .db 28,47,32 + 1035 D2:1C01 0B 00 12 00 61 00 - - .dw 11,18,97 - 1036 D2:1BEB D9 2A 19 - .db -39,42,25 - 1037 D2:1BEE 0F 00 12 00 + 1036 D2:1C07 D9 2A 19 - .db -39,42,25 + 1037 D2:1C0A 0F 00 12 00 62 00 - - .dw 15,18,98 - 1038 D2:1BF4 E0 CF 18 - .db -32,-49,24 - 1039 D2:1BF7 13 00 13 00 + 1038 D2:1C10 E0 CF 18 - .db -32,-49,24 + 1039 D2:1C13 13 00 13 00 3C 00 - - .dw 19,19,60 - 1040 D2:1BFD E2 1C 30 - .db -30,28,48 - 1041 D2:1C00 E1 FF 13 00 + 1040 D2:1C19 E2 1C 30 - .db -30,28,48 + 1041 D2:1C1C E1 FF 13 00 47 00 - - .dw -31,19,71 - 1042 D2:1C06 DA 2F 12 - .db -38,47,18 - 1043 D2:1C09 E7 FF 13 00 + 1042 D2:1C22 DA 2F 12 - .db -38,47,18 + 1043 D2:1C25 E7 FF 13 00 51 00 - - .dw -25,19,81 - 1044 D2:1C0F CC 1F F0 - .db -52,31,-16 - 1045 D2:1C12 0D 00 14 00 + 1044 D2:1C2B CC 1F F0 - .db -52,31,-16 + 1045 D2:1C2E 0D 00 14 00 3C 00 - - .dw 13,20,60 - 1046 D2:1C18 E7 2D 25 - .db -25,45,37 - 1047 D2:1C1B 14 00 16 00 + 1046 D2:1C34 E7 2D 25 - .db -25,45,37 + 1047 D2:1C37 14 00 16 00 4B 00 - - .dw 20,22,75 - 1048 D2:1C21 F6 3F 03 - .db -10,63,3 - 1049 D2:1C24 EF FF 16 00 + 1048 D2:1C3D F6 3F 03 - .db -10,63,3 + 1049 D2:1C40 EF FF 16 00 3F 00 - - .dw -17,22,63 - 1050 D2:1C2A E2 2A DC - .db -30,42,-36 - 1051 D2:1C2D E8 FF 16 00 + 1050 D2:1C46 E2 2A DC - .db -30,42,-36 + 1051 D2:1C49 E8 FF 16 00 42 00 - - .dw -24,22,66 - 1052 D2:1C33 E2 E4 30 - .db -30,-28,48 - 1053 D2:1C36 E4 FF 16 00 + 1052 D2:1C4F E2 E4 30 - .db -30,-28,48 + 1053 D2:1C52 E4 FF 16 00 4B 00 - - .dw -28,22,75 - 1054 D2:1C3C DA D1 12 - .db -38,-47,18 - 1055 D2:1C3F EC FF 16 00 + 1054 D2:1C58 DA D1 12 - .db -38,-47,18 + 1055 D2:1C5B EC FF 16 00 52 00 - - .dw -20,22,82 - 1056 D2:1C45 CC E1 F0 - .db -52,-31,-16 - 1057 D2:1C48 F2 FF 17 00 + 1056 D2:1C61 CC E1 F0 - .db -52,-31,-16 + 1057 D2:1C64 F2 FF 17 00 55 00 - - .dw -14,23,85 - 1058 D2:1C4E E5 D3 24 - .db -27,-45,36 - 1059 D2:1C51 F1 FF 18 00 + 1058 D2:1C6A E5 D3 24 - .db -27,-45,36 + 1059 D2:1C6D F1 FF 18 00 48 00 - - .dw -15,24,72 - 1060 D2:1C57 F7 C1 02 - .db -9,-63,2 - 1061 D2:1C5A F9 FF 19 00 + 1060 D2:1C73 F7 C1 02 - .db -9,-63,2 + 1061 D2:1C76 F9 FF 19 00 61 00 - - .dw -7,25,97 - 1062 D2:1C60 E5 D5 DB - .db -27,-43,-37 - 1063 D2:1C63 09 00 19 00 + 1062 D2:1C7C E5 D5 DB - .db -27,-43,-37 + 1063 D2:1C7F 09 00 19 00 61 00 - - .dw 9,25,97 - 1064 D2:1C69 07 C1 00 - .db 7,-63,0 - 1065 D2:1C6C EA FF 1A 00 + 1064 D2:1C85 07 C1 00 - .db 7,-63,0 + 1065 D2:1C88 EA FF 1A 00 49 00 - - .dw -22,26,73 - 1066 D2:1C72 08 3F 00 - .db 8,63,0 - 1067 D2:1C75 00 80 - - .dw VX_ANIMATION_BONE - 1068 D2:1C77 13 - - - .db 19 - 1069 D2:1C78 3A EA 0B - .db 58,-22,11 - 1070 D2:1C7B F8 07 3E - .db -8,7,62 - 1071 D2:1C7E 17 3B FD - .db 23,59,-3 - 1072 D2:1C81 F7 FF D4 00 + 1066 D2:1C8E 08 3F 00 - .db 8,63,0 + 1067 D2:1C91 00 80 - - .dw VX_ANIMATION_BONE + 1068 D2:1C93 13 - - - .db 19 + 1069 D2:1C94 3A EA 0B - .db 58,-22,11 + 1070 D2:1C97 F8 07 3E - .db -8,7,62 + 1071 D2:1C9A 17 3B FD - .db 23,59,-3 + 1072 D2:1C9D F7 FF D4 00 07 00 - - .dw -9,212,7 - 1073 D2:1C87 33 DE 10 - .db 51,-34,16 - 1074 D2:1C8A F6 0D 3D - .db -10,13,61 - 1075 D2:1C8D 25 33 FC - .db 37,51,-4 - 1076 D2:1C90 F1 FF D4 00 + 1073 D2:1CA3 33 DE 10 - .db 51,-34,16 + 1074 D2:1CA6 F6 0D 3D - .db -10,13,61 + 1075 D2:1CA9 25 33 FC - .db 37,51,-4 + 1076 D2:1CAC F1 FF D4 00 0B 00 - - .dw -15,212,11 - 1077 D2:1C96 34 DF 0F - .db 52,-33,15 - 1078 D2:1C99 F6 0C 3D - .db -10,12,61 - 1079 D2:1C9C 23 34 FC - .db 35,52,-4 - 1080 D2:1C9F EF FF D3 00 + 1077 D2:1CB2 34 DF 0F - .db 52,-33,15 + 1078 D2:1CB5 F6 0C 3D - .db -10,12,61 + 1079 D2:1CB8 23 34 FC - .db 35,52,-4 + 1080 D2:1CBB EF FF D3 00 0A 00 - - .dw -17,211,10 - 1081 D2:1CA5 3B EB 0B - .db 59,-21,11 - 1082 D2:1CA8 F7 08 3E - .db -9,8,62 - 1083 D2:1CAB 16 3B FB - .db 22,59,-5 - 1084 D2:1CAE F0 FF D4 00 + 1081 D2:1CC1 3B EB 0B - .db 59,-21,11 + 1082 D2:1CC4 F7 08 3E - .db -9,8,62 + 1083 D2:1CC7 16 3B FB - .db 22,59,-5 + 1084 D2:1CCA F0 FF D4 00 07 00 - - .dw -16,212,7 - 1085 D2:1CB4 3D F0 08 - .db 61,-16,8 - 1086 D2:1CB7 FA 09 3F - .db -6,9,63 - 1087 D2:1CBA 11 3D F9 - .db 17,61,-7 - 1088 D2:1CBD F5 FF D4 00 + 1085 D2:1CD0 3D F0 08 - .db 61,-16,8 + 1086 D2:1CD3 FA 09 3F - .db -6,9,63 + 1087 D2:1CD6 11 3D F9 - .db 17,61,-7 + 1088 D2:1CD9 F5 FF D4 00 07 00 - - .dw -11,212,7 - 1089 D2:1CC3 3E F3 04 - .db 62,-13,4 - 1090 D2:1CC6 FE 0A 3F - .db -2,10,63 - 1091 D2:1CC9 0E 3D F7 - .db 14,61,-9 - 1092 D2:1CCC FB FF D4 00 + 1089 D2:1CDF 3E F3 04 - .db 62,-13,4 + 1090 D2:1CE2 FE 0A 3F - .db -2,10,63 + 1091 D2:1CE5 0E 3D F7 - .db 14,61,-9 + 1092 D2:1CE8 FB FF D4 00 0A 00 - - .dw -5,212,10 - 1093 D2:1CD2 3F F6 00 - .db 63,-10,0 - 1094 D2:1CD5 02 0D 3E - .db 2,13,62 - 1095 D2:1CD8 0A 3D F3 - .db 10,61,-13 - 1096 D2:1CDB 01 00 D4 00 + 1093 D2:1CEE 3F F6 00 - .db 63,-10,0 + 1094 D2:1CF1 02 0D 3E - .db 2,13,62 + 1095 D2:1CF4 0A 3D F3 - .db 10,61,-13 + 1096 D2:1CF7 01 00 D4 00 10 00 - - .dw 1,212,16 - 1097 D2:1CE1 3F FE F8 - .db 63,-2,-8 - 1098 D2:1CE4 08 0E 3D - .db 8,14,61 - 1099 D2:1CE7 00 3E F2 - .db 0,62,-14 - 1100 D2:1CEA 0B 00 D5 00 + 1097 D2:1CFD 3F FE F8 - .db 63,-2,-8 + 1098 D2:1D00 08 0E 3D - .db 8,14,61 + 1099 D2:1D03 00 3E F2 - .db 0,62,-14 + 1100 D2:1D06 0B 00 D5 00 12 00 - - .dw 11,213,18 - 1101 D2:1CF0 3D 04 F1 - .db 61,4,-15 - 1102 D2:1CF3 0E 0D 3C - .db 14,13,60 - 1103 D2:1CF6 F9 3E F4 - .db -7,62,-12 - 1104 D2:1CF9 12 00 D6 00 + 1101 D2:1D0C 3D 04 F1 - .db 61,4,-15 + 1102 D2:1D0F 0E 0D 3C - .db 14,13,60 + 1103 D2:1D12 F9 3E F4 - .db -7,62,-12 + 1104 D2:1D15 12 00 D6 00 0F 00 - - .dw 18,214,15 - 1105 D2:1CFF 3B 0A EC - .db 59,10,-20 - 1106 D2:1D02 12 0A 3C - .db 18,10,60 - 1107 D2:1D05 F4 3E F9 - .db -12,62,-7 - 1108 D2:1D08 13 00 D6 00 + 1105 D2:1D1B 3B 0A EC - .db 59,10,-20 + 1106 D2:1D1E 12 0A 3C - .db 18,10,60 + 1107 D2:1D21 F4 3E F9 - .db -12,62,-7 + 1108 D2:1D24 13 00 D6 00 08 00 - - .dw 19,214,8 - 1109 D2:1D0E 38 16 EB - .db 56,22,-21 - 1110 D2:1D11 13 09 3C - .db 19,9,60 - 1111 D2:1D14 E8 3B FF - .db -24,59,-1 - 1112 D2:1D17 0E 00 D4 00 + 1109 D2:1D2A 38 16 EB - .db 56,22,-21 + 1110 D2:1D2D 13 09 3C - .db 19,9,60 + 1111 D2:1D30 E8 3B FF - .db -24,59,-1 + 1112 D2:1D33 0E 00 D4 00 02 00 - - .dw 14,212,2 - 1113 D2:1D1D 37 18 EC - .db 55,24,-20 - 1114 D2:1D20 13 07 3C - .db 19,7,60 - 1115 D2:1D23 E7 3A 01 - .db -25,58,1 - 1116 D2:1D26 0C 00 D4 00 + 1113 D2:1D39 37 18 EC - .db 55,24,-20 + 1114 D2:1D3C 13 07 3C - .db 19,7,60 + 1115 D2:1D3F E7 3A 01 - .db -25,58,1 + 1116 D2:1D42 0C 00 D4 00 00 00 - - .dw 12,212,0 - 1117 D2:1D2C 3A 10 ED - .db 58,16,-19 - 1118 D2:1D2F 12 05 3C - .db 18,5,60 - 1119 D2:1D32 EF 3D 00 - .db -17,61,0 - 1120 D2:1D35 0F 00 D4 00 + 1117 D2:1D48 3A 10 ED - .db 58,16,-19 + 1118 D2:1D4B 12 05 3C - .db 18,5,60 + 1119 D2:1D4E EF 3D 00 - .db -17,61,0 + 1120 D2:1D51 0F 00 D4 00 00 00 - - .dw 15,212,0 - 1121 D2:1D3B 3C 08 EE - .db 60,8,-18 - 1122 D2:1D3E 11 08 3C - .db 17,8,60 - 1123 D2:1D41 F6 3E FA - .db -10,62,-6 - 1124 D2:1D44 12 00 D3 00 + 1121 D2:1D57 3C 08 EE - .db 60,8,-18 + 1122 D2:1D5A 11 08 3C - .db 17,8,60 + 1123 D2:1D5D F6 3E FA - .db -10,62,-6 + 1124 D2:1D60 12 00 D3 00 08 00 - - .dw 18,211,8 - 1125 D2:1D4A 3D 01 F0 - .db 61,1,-16 - 1126 D2:1D4D 0F 0C 3C - .db 15,12,60 - 1127 D2:1D50 FC 3E F4 - .db -4,62,-12 - 1128 D2:1D53 12 00 D3 00 + 1125 D2:1D66 3D 01 F0 - .db 61,1,-16 + 1126 D2:1D69 0F 0C 3C - .db 15,12,60 + 1127 D2:1D6C FC 3E F4 - .db -4,62,-12 + 1128 D2:1D6F 12 00 D3 00 11 00 - - .dw 18,211,17 - 1129 D2:1D59 3F FD F6 - .db 63,-3,-10 - 1130 D2:1D5C 0A 0E 3D - .db 10,14,61 - 1131 D2:1D5F 00 3E F1 - .db 0,62,-15 - 1132 D2:1D62 0E 00 D3 00 + 1129 D2:1D75 3F FD F6 - .db 63,-3,-10 + 1130 D2:1D78 0A 0E 3D - .db 10,14,61 + 1131 D2:1D7B 00 3E F1 - .db 0,62,-15 + 1132 D2:1D7E 0E 00 D3 00 16 00 - - .dw 14,211,22 - 1133 D2:1D68 3F 00 FF - .db 63,0,-1 - 1134 D2:1D6B 01 0B 3F - .db 1,11,63 - 1135 D2:1D6E 00 3F F5 - .db 0,63,-11 - 1136 D2:1D71 02 00 D5 00 + 1133 D2:1D84 3F 00 FF - .db 63,0,-1 + 1134 D2:1D87 01 0B 3F - .db 1,11,63 + 1135 D2:1D8A 00 3F F5 - .db 0,63,-11 + 1136 D2:1D8D 02 00 D5 00 11 00 - - .dw 2,213,17 - 1137 D2:1D77 3F FA 05 - .db 63,-6,5 - 1138 D2:1D7A FB 07 3F - .db -5,7,63 - 1139 D2:1D7D 07 3F FA - .db 7,63,-6 - 1140 D2:1D80 FB FF D6 00 + 1137 D2:1D93 3F FA 05 - .db 63,-6,5 + 1138 D2:1D96 FB 07 3F - .db -5,7,63 + 1139 D2:1D99 07 3F FA - .db 7,63,-6 + 1140 D2:1D9C FB FF D6 00 0A 00 - - .dw -5,214,10 - 1141 D2:1D86 3D F2 08 - .db 61,-14,8 - 1142 D2:1D89 F9 07 3F - .db -7,7,63 - 1143 D2:1D8C 0F 3D FB - .db 15,61,-5 - 1144 D2:1D8F F9 FF D6 00 + 1141 D2:1DA2 3D F2 08 - .db 61,-14,8 + 1142 D2:1DA5 F9 07 3F - .db -7,7,63 + 1143 D2:1DA8 0F 3D FB - .db 15,61,-5 + 1144 D2:1DAB F9 FF D6 00 08 00 - - .dw -7,214,8 - 1145 D2:1D95 FC FF 17 00 + 1145 D2:1DB1 FC FF 17 00 5D 00 - - .dw -4,23,93 - 1146 D2:1D9B C5 13 0E - .db -59,19,14 - 1147 D2:1D9E 05 00 17 00 + 1146 D2:1DB7 C5 13 0E - .db -59,19,14 + 1147 D2:1DBA 05 00 17 00 5D 00 - - .dw 5,23,93 - 1148 D2:1DA4 C6 10 EE - .db -58,16,-18 - 1149 D2:1DA7 FD FF 19 00 + 1148 D2:1DC0 C6 10 EE - .db -58,16,-18 + 1149 D2:1DC3 FD FF 19 00 2D 00 - - .dw -3,25,45 - 1150 D2:1DAD DE D0 E9 - .db -34,-48,-23 - 1151 D2:1DB0 05 00 19 00 + 1150 D2:1DC9 DE D0 E9 - .db -34,-48,-23 + 1151 D2:1DCC 05 00 19 00 2D 00 - - .dw 5,25,45 - 1152 D2:1DB6 DC D1 17 - .db -36,-47,23 - 1153 D2:1DB9 00 00 1A 00 + 1152 D2:1DD2 DC D1 17 - .db -36,-47,23 + 1153 D2:1DD5 00 00 1A 00 60 00 - - .dw 0,26,96 - 1154 D2:1DBF 24 D1 E9 - .db 36,-47,-23 - 1155 D2:1DC2 00 00 1C 00 + 1154 D2:1DDB 24 D1 E9 - .db 36,-47,-23 + 1155 D2:1DDE 00 00 1C 00 28 00 - - .dw 0,28,40 - 1156 D2:1DC8 24 D1 17 - .db 36,-47,23 - 1157 D2:1DCB FD FF 1F 00 + 1156 D2:1DE4 24 D1 17 - .db 36,-47,23 + 1157 D2:1DE7 FD FF 1F 00 60 00 - - .dw -3,31,96 - 1158 D2:1DD1 39 13 EE - .db 57,19,-18 - 1159 D2:1DD4 04 00 1F 00 + 1158 D2:1DED 39 13 EE - .db 57,19,-18 + 1159 D2:1DF0 04 00 1F 00 60 00 - - .dw 4,31,96 - 1160 D2:1DDA 3A 15 0F - .db 58,21,15 - 1161 D2:1DDD F9 FF 20 00 + 1160 D2:1DF6 3A 15 0F - .db 58,21,15 + 1161 D2:1DF9 F9 FF 20 00 5A 00 - - .dw -7,32,90 - 1162 D2:1DE3 FF 3B E9 - .db -1,59,-23 - 1163 D2:1DE6 08 00 20 00 + 1162 D2:1DFF FF 3B E9 - .db -1,59,-23 + 1163 D2:1E02 08 00 20 00 5A 00 - - .dw 8,32,90 - 1164 D2:1DEC FF 3E 0E - .db -1,62,14 - 1165 D2:1DEF FD FF 21 00 + 1164 D2:1E08 FF 3E 0E - .db -1,62,14 + 1165 D2:1E0B FD FF 21 00 28 00 - - .dw -3,33,40 - 1166 D2:1DF5 00 E4 C7 - .db 0,-28,-57 - 1167 D2:1DF8 04 00 21 00 + 1166 D2:1E11 00 E4 C7 - .db 0,-28,-57 + 1167 D2:1E14 04 00 21 00 28 00 - - .dw 4,33,40 - 1168 D2:1DFE E2 0B C9 - .db -30,11,-55 - 1169 D2:1E01 FA FF 21 00 + 1168 D2:1E1A E2 0B C9 - .db -30,11,-55 + 1169 D2:1E1D FA FF 21 00 2D 00 - - .dw -6,33,45 - 1170 D2:1E07 1D 0B C9 - .db 29,11,-55 - 1171 D2:1E0A 07 00 22 00 + 1170 D2:1E23 1D 0B C9 - .db 29,11,-55 + 1171 D2:1E26 07 00 22 00 2D 00 - - .dw 7,34,45 - 1172 D2:1E10 00 E6 3A - .db 0,-26,58 - 1173 D2:1E13 00 00 26 00 + 1172 D2:1E2C 00 E6 3A - .db 0,-26,58 + 1173 D2:1E2F 00 00 26 00 57 00 - - .dw 0,38,87 - 1174 D2:1E19 E2 13 34 - .db -30,19,52 - 1175 D2:1E1C 00 00 27 00 + 1174 D2:1E35 E2 13 34 - .db -30,19,52 + 1175 D2:1E38 00 00 27 00 2C 00 - - .dw 0,39,44 - 1176 D2:1E22 1E 13 34 - .db 30,19,52 - 1177 D2:1E25 00 80 - - .dw VX_ANIMATION_BONE - 1178 D2:1E27 13 - - - .db 19 - 1179 D2:1E28 36 EA 18 - .db 54,-22,24 - 1180 D2:1E2B EA 09 3B - .db -22,9,59 - 1181 D2:1E2E 18 3B 00 - .db 24,59,0 - 1182 D2:1E31 EE FF D6 00 + 1176 D2:1E3E 1E 13 34 - .db 30,19,52 + 1177 D2:1E41 00 80 - - .dw VX_ANIMATION_BONE + 1178 D2:1E43 13 - - - .db 19 + 1179 D2:1E44 36 EA 18 - .db 54,-22,24 + 1180 D2:1E47 EA 09 3B - .db -22,9,59 + 1181 D2:1E4A 18 3B 00 - .db 24,59,0 + 1182 D2:1E4D EE FF D6 00 04 00 - - .dw -18,214,4 - 1183 D2:1E37 2D DE 1C - .db 45,-34,28 - 1184 D2:1E3A E8 0F 39 - .db -24,15,57 - 1185 D2:1E3D 25 33 01 - .db 37,51,1 - 1186 D2:1E40 E8 FF D6 00 + 1183 D2:1E53 2D DE 1C - .db 45,-34,28 + 1184 D2:1E56 E8 0F 39 - .db -24,15,57 + 1185 D2:1E59 25 33 01 - .db 37,51,1 + 1186 D2:1E5C E8 FF D6 00 06 00 - - .dw -24,214,6 - 1187 D2:1E46 2E DF 1D - .db 46,-33,29 - 1188 D2:1E49 E7 0F 38 - .db -25,15,56 - 1189 D2:1E4C 24 34 02 - .db 36,52,2 - 1190 D2:1E4F E5 FF D6 00 + 1187 D2:1E62 2E DF 1D - .db 46,-33,29 + 1188 D2:1E65 E7 0F 38 - .db -25,15,56 + 1189 D2:1E68 24 34 02 - .db 36,52,2 + 1190 D2:1E6B E5 FF D6 00 05 00 - - .dw -27,214,5 - 1191 D2:1E55 34 EC 1E - .db 52,-20,30 - 1192 D2:1E58 E4 0A 38 - .db -28,10,56 - 1193 D2:1E5B 17 3B 00 - .db 23,59,0 - 1194 D2:1E5E E2 FF D8 00 + 1191 D2:1E71 34 EC 1E - .db 52,-20,30 + 1192 D2:1E74 E4 0A 38 - .db -28,10,56 + 1193 D2:1E77 17 3B 00 - .db 23,59,0 + 1194 D2:1E7A E2 FF D8 00 03 00 - - .dw -30,216,3 - 1195 D2:1E64 34 F0 21 - .db 52,-16,33 - 1196 D2:1E67 E1 0B 36 - .db -31,11,54 - 1197 D2:1E6A 13 3C FF - .db 19,60,-1 - 1198 D2:1E6D E3 FF DA 00 + 1195 D2:1E80 34 F0 21 - .db 52,-16,33 + 1196 D2:1E83 E1 0B 36 - .db -31,11,54 + 1197 D2:1E86 13 3C FF - .db 19,60,-1 + 1198 D2:1E89 E3 FF DA 00 03 00 - - .dw -29,218,3 - 1199 D2:1E73 36 F3 1D - .db 54,-13,29 - 1200 D2:1E76 E5 0C 38 - .db -27,12,56 - 1201 D2:1E79 12 3D FC - .db 18,61,-4 - 1202 D2:1E7C E9 FF D8 00 + 1199 D2:1E8F 36 F3 1D - .db 54,-13,29 + 1200 D2:1E92 E5 0C 38 - .db -27,12,56 + 1201 D2:1E95 12 3D FC - .db 18,61,-4 + 1202 D2:1E98 E9 FF D8 00 06 00 - - .dw -23,216,6 - 1203 D2:1E82 3B F6 13 - .db 59,-10,19 - 1204 D2:1E85 F0 0F 3B - .db -16,15,59 - 1205 D2:1E88 0E 3D F5 - .db 14,61,-11 - 1206 D2:1E8B F4 FF D5 00 + 1203 D2:1E9E 3B F6 13 - .db 59,-10,19 + 1204 D2:1EA1 F0 0F 3B - .db -16,15,59 + 1205 D2:1EA4 0E 3D F5 - .db 14,61,-11 + 1206 D2:1EA7 F4 FF D5 00 0F 00 - - .dw -12,213,15 - 1207 D2:1E91 3F FE 05 - .db 63,-2,5 - 1208 D2:1E94 FC 10 3D - .db -4,16,61 - 1209 D2:1E97 04 3D F0 - .db 4,61,-16 - 1210 D2:1E9A 01 00 D4 00 + 1207 D2:1EAD 3F FE 05 - .db 63,-2,5 + 1208 D2:1EB0 FC 10 3D - .db -4,16,61 + 1209 D2:1EB3 04 3D F0 - .db 4,61,-16 + 1210 D2:1EB6 01 00 D4 00 13 00 - - .dw 1,212,19 - 1211 D2:1EA0 3F 04 FB - .db 63,4,-5 - 1212 D2:1EA3 04 10 3D - .db 4,16,61 - 1213 D2:1EA6 FB 3D F1 - .db -5,61,-15 - 1214 D2:1EA9 0B 00 D4 00 + 1211 D2:1EBC 3F 04 FB - .db 63,4,-5 + 1212 D2:1EBF 04 10 3D - .db 4,16,61 + 1213 D2:1EC2 FB 3D F1 - .db -5,61,-15 + 1214 D2:1EC5 0B 00 D4 00 11 00 - - .dw 11,212,17 - 1215 D2:1EAF 3D 09 F2 - .db 61,9,-14 - 1216 D2:1EB2 0C 0C 3D - .db 12,12,61 - 1217 D2:1EB5 F5 3E F6 - .db -11,62,-10 - 1218 D2:1EB8 0F 00 D4 00 + 1215 D2:1ECB 3D 09 F2 - .db 61,9,-14 + 1216 D2:1ECE 0C 0C 3D - .db 12,12,61 + 1217 D2:1ED1 F5 3E F6 - .db -11,62,-10 + 1218 D2:1ED4 0F 00 D4 00 0A 00 - - .dw 15,212,10 - 1219 D2:1EBE 39 15 EE - .db 57,21,-18 - 1220 D2:1EC1 0F 0B 3D - .db 15,11,61 - 1221 D2:1EC4 E9 3B FC - .db -23,59,-4 - 1222 D2:1EC7 0D 00 D3 00 + 1219 D2:1EDA 39 15 EE - .db 57,21,-18 + 1220 D2:1EDD 0F 0B 3D - .db 15,11,61 + 1221 D2:1EE0 E9 3B FC - .db -23,59,-4 + 1222 D2:1EE3 0D 00 D3 00 04 00 - - .dw 13,211,4 - 1223 D2:1ECD 38 17 ED - .db 56,23,-19 - 1224 D2:1ED0 11 09 3C - .db 17,9,60 - 1225 D2:1ED3 E7 3A FF - .db -25,58,-1 - 1226 D2:1ED6 0C 00 D3 00 + 1223 D2:1EE9 38 17 ED - .db 56,23,-19 + 1224 D2:1EEC 11 09 3C - .db 17,9,60 + 1225 D2:1EEF E7 3A FF - .db -25,58,-1 + 1226 D2:1EF2 0C 00 D3 00 00 00 - - .dw 12,211,0 - 1227 D2:1EDC 3B 0F EF - .db 59,15,-17 - 1228 D2:1EDF 0F 07 3D - .db 15,7,61 - 1229 D2:1EE2 F0 3D FD - .db -16,61,-3 - 1230 D2:1EE5 0D 00 D3 00 + 1227 D2:1EF8 3B 0F EF - .db 59,15,-17 + 1228 D2:1EFB 0F 07 3D - .db 15,7,61 + 1229 D2:1EFE F0 3D FD - .db -16,61,-3 + 1230 D2:1F01 0D 00 D3 00 01 00 - - .dw 13,211,1 - 1231 D2:1EEB 3E 07 F3 - .db 62,7,-13 - 1232 D2:1EEE 0B 0A 3D - .db 11,10,61 - 1233 D2:1EF1 F7 3E F8 - .db -9,62,-8 - 1234 D2:1EF4 0E 00 D1 00 + 1231 D2:1F07 3E 07 F3 - .db 62,7,-13 + 1232 D2:1F0A 0B 0A 3D - .db 11,10,61 + 1233 D2:1F0D F7 3E F8 - .db -9,62,-8 + 1234 D2:1F10 0E 00 D1 00 0A 00 - - .dw 14,209,10 - 1235 D2:1EFA 3F 00 F8 - .db 63,0,-8 - 1236 D2:1EFD 07 0F 3D - .db 7,15,61 - 1237 D2:1F00 FE 3E F2 - .db -2,62,-14 - 1238 D2:1F03 0D 00 D2 00 + 1235 D2:1F16 3F 00 F8 - .db 63,0,-8 + 1236 D2:1F19 07 0F 3D - .db 7,15,61 + 1237 D2:1F1C FE 3E F2 - .db -2,62,-14 + 1238 D2:1F1F 0D 00 D2 00 13 00 - - .dw 13,210,19 - 1239 D2:1F09 3F FD FE - .db 63,-3,-2 - 1240 D2:1F0C 03 10 3D - .db 3,16,61 - 1241 D2:1F0F 02 3D EF - .db 2,61,-17 - 1242 D2:1F12 08 00 D2 00 + 1239 D2:1F25 3F FD FE - .db 63,-3,-2 + 1240 D2:1F28 03 10 3D - .db 3,16,61 + 1241 D2:1F2B 02 3D EF - .db 2,61,-17 + 1242 D2:1F2E 08 00 D2 00 18 00 - - .dw 8,210,24 - 1243 D2:1F18 3F 00 06 - .db 63,0,6 - 1244 D2:1F1B FA 0D 3E - .db -6,13,62 - 1245 D2:1F1E 02 3E F3 - .db 2,62,-13 - 1246 D2:1F21 FD FF D5 00 + 1243 D2:1F34 3F 00 06 - .db 63,0,6 + 1244 D2:1F37 FA 0D 3E - .db -6,13,62 + 1245 D2:1F3A 02 3E F3 - .db 2,62,-13 + 1246 D2:1F3D FD FF D5 00 12 00 - - .dw -3,213,18 - 1247 D2:1F27 3D FA 10 - .db 61,-6,16 - 1248 D2:1F2A F1 09 3D - .db -15,9,61 - 1249 D2:1F2D 08 3E F9 - .db 8,62,-7 - 1250 D2:1F30 F3 FF D7 00 + 1247 D2:1F43 3D FA 10 - .db 61,-6,16 + 1248 D2:1F46 F1 09 3D - .db -15,9,61 + 1249 D2:1F49 08 3E F9 - .db 8,62,-7 + 1250 D2:1F4C F3 FF D7 00 0B 00 - - .dw -13,215,11 - 1251 D2:1F36 3A F2 14 - .db 58,-14,20 - 1252 D2:1F39 EE 09 3C - .db -18,9,60 - 1253 D2:1F3C 10 3D FC - .db 16,61,-4 - 1254 D2:1F3F F0 FF D7 00 + 1251 D2:1F52 3A F2 14 - .db 58,-14,20 + 1252 D2:1F55 EE 09 3C - .db -18,9,60 + 1253 D2:1F58 10 3D FC - .db 16,61,-4 + 1254 D2:1F5B F0 FF D7 00 08 00 - - .dw -16,215,8 - 1255 D2:1F45 FE FF 19 00 + 1255 D2:1F61 FE FF 19 00 2D 00 - - .dw -2,25,45 - 1256 D2:1F4B CF 11 24 - .db -49,17,36 - 1257 D2:1F4E 05 00 19 00 + 1256 D2:1F67 CF 11 24 - .db -49,17,36 + 1257 D2:1F6A 05 00 19 00 2D 00 - - .dw 5,25,45 - 1258 D2:1F54 C5 11 F0 - .db -59,17,-16 - 1259 D2:1F57 FF FF 1B 00 + 1258 D2:1F70 C5 11 F0 - .db -59,17,-16 + 1259 D2:1F73 FF FF 1B 00 FD FF - - .dw -1,27,-3 - 1260 D2:1F5D DD CF ED - .db -35,-49,-19 - 1261 D2:1F60 04 00 1B 00 + 1260 D2:1F79 DD CF ED - .db -35,-49,-19 + 1261 D2:1F7C 04 00 1B 00 FD FF - - .dw 4,27,-3 - 1262 D2:1F66 E2 D6 24 - .db -30,-42,36 - 1263 D2:1F69 01 00 1E 00 + 1262 D2:1F82 E2 D6 24 - .db -30,-42,36 + 1263 D2:1F85 01 00 1E 00 F9 FF - - .dw 1,30,-7 - 1264 D2:1F6F 24 CF ED - .db 36,-49,-19 - 1265 D2:1F72 00 00 21 00 + 1264 D2:1F8B 24 CF ED - .db 36,-49,-19 + 1265 D2:1F8E 00 00 21 00 F9 FF - - .dw 0,33,-7 - 1266 D2:1F78 1E D6 24 - .db 30,-42,36 - 1267 D2:1F7B 03 00 21 00 + 1266 D2:1F94 1E D6 24 - .db 30,-42,36 + 1267 D2:1F97 03 00 21 00 F9 FF - - .dw 3,33,-7 - 1268 D2:1F81 3A 14 F0 - .db 58,20,-16 - 1269 D2:1F84 FD FF 21 00 + 1268 D2:1F9D 3A 14 F0 - .db 58,20,-16 + 1269 D2:1FA0 FD FF 21 00 FD FF - - .dw -3,33,-3 - 1270 D2:1F8A 31 10 25 - .db 49,16,37 - 1271 D2:1F8D 06 00 22 00 + 1270 D2:1FA6 31 10 25 - .db 49,16,37 + 1271 D2:1FA9 06 00 22 00 FD FF - - .dw 6,34,-3 - 1272 D2:1F93 FF 3D EE - .db -1,61,-18 - 1273 D2:1F96 FB FF 22 00 + 1272 D2:1FAF FF 3D EE - .db -1,61,-18 + 1273 D2:1FB2 FB FF 22 00 2D 00 - - .dw -5,34,45 - 1274 D2:1F9C 00 35 22 - .db 0,53,34 - 1275 D2:1F9F 08 00 22 00 + 1274 D2:1FB8 00 35 22 - .db 0,53,34 + 1275 D2:1FBB 08 00 22 00 2D 00 - - .dw 8,34,45 - 1276 D2:1FA5 00 DF CA - .db 0,-33,-54 - 1277 D2:1FA8 01 00 25 00 + 1276 D2:1FC1 00 DF CA - .db 0,-33,-54 + 1277 D2:1FC4 01 00 25 00 FD FF - - .dw 1,37,-3 - 1278 D2:1FAE DF 0D CC - .db -33,13,-52 - 1279 D2:1FB1 01 00 26 00 + 1278 D2:1FCA DF 0D CC - .db -33,13,-52 + 1279 D2:1FCD 01 00 26 00 2C 00 - - .dw 1,38,44 - 1280 D2:1FB7 21 0D CB - .db 33,13,-53 - 1281 D2:1FBA 00 80 - - .dw VX_ANIMATION_BONE - 1282 D2:1FBC 13 - - - .db 19 - 1283 D2:1FBD 36 F1 1D - .db 54,-15,29 - 1284 D2:1FC0 EA 19 36 - .db -22,25,54 - 1285 D2:1FC3 18 38 F0 - .db 24,56,-16 - 1286 D2:1FC6 EA FF CE 00 + 1280 D2:1FD3 21 0D CB - .db 33,13,-53 + 1281 D2:1FD6 00 80 - - .dw VX_ANIMATION_BONE + 1282 D2:1FD8 13 - - - .db 19 + 1283 D2:1FD9 36 F1 1D - .db 54,-15,29 + 1284 D2:1FDC EA 19 36 - .db -22,25,54 + 1285 D2:1FDF 18 38 F0 - .db 24,56,-16 + 1286 D2:1FE2 EA FF CE 00 05 00 - - .dw -22,206,5 - 1287 D2:1FCC 2D E7 25 - .db 45,-25,37 - 1288 D2:1FCF E8 1E 32 - .db -24,30,50 - 1289 D2:1FD2 25 32 F4 - .db 37,50,-12 - 1290 D2:1FD5 E4 FF CE 00 + 1287 D2:1FE8 2D E7 25 - .db 45,-25,37 + 1288 D2:1FEB E8 1E 32 - .db -24,30,50 + 1289 D2:1FEE 25 32 F4 - .db 37,50,-12 + 1290 D2:1FF1 E4 FF CE 00 06 00 - - .dw -28,206,6 - 1291 D2:1FDB 2E E9 25 - .db 46,-23,37 - 1292 D2:1FDE E7 1E 32 - .db -25,30,50 - 1293 D2:1FE1 24 33 F4 - .db 36,51,-12 - 1294 D2:1FE4 E0 FF CE 00 + 1291 D2:1FF7 2E E9 25 - .db 46,-23,37 + 1292 D2:1FFA E7 1E 32 - .db -25,30,50 + 1293 D2:1FFD 24 33 F4 - .db 36,51,-12 + 1294 D2:2000 E0 FF CE 00 05 00 - - .dw -32,206,5 - 1295 D2:1FEA 34 F5 23 - .db 52,-11,35 - 1296 D2:1FED E4 1A 32 - .db -28,26,50 - 1297 D2:1FF0 17 39 F0 - .db 23,57,-16 - 1298 D2:1FF3 DD FF D0 00 + 1295 D2:2006 34 F5 23 - .db 52,-11,35 + 1296 D2:2009 E4 1A 32 - .db -28,26,50 + 1297 D2:200C 17 39 F0 - .db 23,57,-16 + 1298 D2:200F DD FF D0 00 04 00 - - .dw -35,208,4 - 1299 D2:1FF9 34 FB 24 - .db 52,-5,36 - 1300 D2:1FFC E1 1A 30 - .db -31,26,48 - 1301 D2:1FFF 13 39 ED - .db 19,57,-19 - 1302 D2:2002 DD FF D1 00 + 1299 D2:2015 34 FB 24 - .db 52,-5,36 + 1300 D2:2018 E1 1A 30 - .db -31,26,48 + 1301 D2:201B 13 39 ED - .db 19,57,-19 + 1302 D2:201E DD FF D1 00 04 00 - - .dw -35,209,4 - 1303 D2:2008 36 FC 20 - .db 54,-4,32 - 1304 D2:200B E5 1C 32 - .db -27,28,50 - 1305 D2:200E 12 38 EA - .db 18,56,-22 - 1306 D2:2011 E4 FF CF 00 + 1303 D2:2024 36 FC 20 - .db 54,-4,32 + 1304 D2:2027 E5 1C 32 - .db -27,28,50 + 1305 D2:202A 12 38 EA - .db 18,56,-22 + 1306 D2:202D E4 FF CF 00 08 00 - - .dw -28,207,8 - 1307 D2:2017 3B FC 16 - .db 59,-4,22 - 1308 D2:201A F0 20 34 - .db -16,32,52 - 1309 D2:201D 0E 36 E3 - .db 14,54,-29 - 1310 D2:2020 F0 FF CC 00 + 1307 D2:2033 3B FC 16 - .db 59,-4,22 + 1308 D2:2036 F0 20 34 - .db -16,32,52 + 1309 D2:2039 0E 36 E3 - .db 14,54,-29 + 1310 D2:203C F0 FF CC 00 11 00 - - .dw -16,204,17 - 1311 D2:2026 3F 00 06 - .db 63,0,6 - 1312 D2:2029 FC 22 35 - .db -4,34,53 - 1313 D2:202C 04 36 DE - .db 4,54,-34 - 1314 D2:202F 00 00 CB 00 + 1311 D2:2042 3F 00 06 - .db 63,0,6 + 1312 D2:2045 FC 22 35 - .db -4,34,53 + 1313 D2:2048 04 36 DE - .db 4,54,-34 + 1314 D2:204B 00 00 CB 00 16 00 - - .dw 0,203,22 - 1315 D2:2035 3F 02 FA - .db 63,2,-6 - 1316 D2:2038 04 21 36 - .db 4,33,54 - 1317 D2:203B FB 36 DF - .db -5,54,-33 - 1318 D2:203E 0C 00 CB 00 + 1315 D2:2051 3F 02 FA - .db 63,2,-6 + 1316 D2:2054 04 21 36 - .db 4,33,54 + 1317 D2:2057 FB 36 DF - .db -5,54,-33 + 1318 D2:205A 0C 00 CB 00 15 00 - - .dw 12,203,21 - 1319 D2:2044 3D 04 F0 - .db 61,4,-16 - 1320 D2:2047 0C 1E 37 - .db 12,30,55 - 1321 D2:204A F5 38 E4 - .db -11,56,-28 - 1322 D2:204D 11 00 CB 00 + 1319 D2:2060 3D 04 F0 - .db 61,4,-16 + 1320 D2:2063 0C 1E 37 - .db 12,30,55 + 1321 D2:2066 F5 38 E4 - .db -11,56,-28 + 1322 D2:2069 11 00 CB 00 0D 00 - - .dw 17,203,13 - 1323 D2:2053 39 0F E9 - .db 57,15,-23 - 1324 D2:2056 0F 1C 37 - .db 15,28,55 - 1325 D2:2059 E9 37 EB - .db -23,55,-21 - 1326 D2:205C 10 00 CA 00 + 1323 D2:206F 39 0F E9 - .db 57,15,-23 + 1324 D2:2072 0F 1C 37 - .db 15,28,55 + 1325 D2:2075 E9 37 EB - .db -23,55,-21 + 1326 D2:2078 10 00 CA 00 06 00 - - .dw 16,202,6 - 1327 D2:2062 38 11 E7 - .db 56,17,-25 - 1328 D2:2065 11 1A 37 - .db 17,26,55 - 1329 D2:2068 E7 37 EE - .db -25,55,-18 - 1330 D2:206B 0F 00 CA 00 + 1327 D2:207E 38 11 E7 - .db 56,17,-25 + 1328 D2:2081 11 1A 37 - .db 17,26,55 + 1329 D2:2084 E7 37 EE - .db -25,55,-18 + 1330 D2:2087 0F 00 CA 00 01 00 - - .dw 15,202,1 - 1331 D2:2071 3B 0A EC - .db 59,10,-20 - 1332 D2:2074 0F 18 38 - .db 15,24,56 - 1333 D2:2077 F0 3A EC - .db -16,58,-20 - 1334 D2:207A 10 00 CA 00 + 1331 D2:208D 3B 0A EC - .db 59,10,-20 + 1332 D2:2090 0F 18 38 - .db 15,24,56 + 1333 D2:2093 F0 3A EC - .db -16,58,-20 + 1334 D2:2096 10 00 CA 00 03 00 - - .dw 16,202,3 - 1335 D2:2080 3E 03 F2 - .db 62,3,-14 - 1336 D2:2083 0B 1B 38 - .db 11,27,56 - 1337 D2:2086 F7 39 E7 - .db -9,57,-25 - 1338 D2:2089 10 00 C9 00 + 1335 D2:209C 3E 03 F2 - .db 62,3,-14 + 1336 D2:209F 0B 1B 38 - .db 11,27,56 + 1337 D2:20A2 F7 39 E7 - .db -9,57,-25 + 1338 D2:20A5 10 00 C9 00 0C 00 - - .dw 16,201,12 - 1339 D2:208F 3F FF F8 - .db 63,-1,-8 - 1340 D2:2092 07 1F 37 - .db 7,31,55 - 1341 D2:2095 FE 37 E1 - .db -2,55,-31 - 1342 D2:2098 0E 00 C9 00 + 1339 D2:20AB 3F FF F8 - .db 63,-1,-8 + 1340 D2:20AE 07 1F 37 - .db 7,31,55 + 1341 D2:20B1 FE 37 E1 - .db -2,55,-31 + 1342 D2:20B4 0E 00 C9 00 16 00 - - .dw 14,201,22 - 1343 D2:209E 3F FC FF - .db 63,-4,-1 - 1344 D2:20A1 03 20 36 - .db 3,32,54 - 1345 D2:20A4 02 36 E0 - .db 2,54,-32 - 1346 D2:20A7 08 00 CA 00 + 1343 D2:20BA 3F FC FF - .db 63,-4,-1 + 1344 D2:20BD 03 20 36 - .db 3,32,54 + 1345 D2:20C0 02 36 E0 - .db 2,54,-32 + 1346 D2:20C3 08 00 CA 00 1B 00 - - .dw 8,202,27 - 1347 D2:20AD 3F 00 06 - .db 63,0,6 - 1348 D2:20B0 FA 1D 38 - .db -6,29,56 - 1349 D2:20B3 02 38 E3 - .db 2,56,-29 - 1350 D2:20B6 FC FF CC 00 + 1347 D2:20C9 3F 00 06 - .db 63,0,6 + 1348 D2:20CC FA 1D 38 - .db -6,29,56 + 1349 D2:20CF 02 38 E3 - .db 2,56,-29 + 1350 D2:20D2 FC FF CC 00 15 00 - - .dw -4,204,21 - 1351 D2:20BC 3D FE 11 - .db 61,-2,17 - 1352 D2:20BF F1 19 38 - .db -15,25,56 - 1353 D2:20C2 08 3A E8 - .db 8,58,-24 - 1354 D2:20C5 F1 FF CE 00 + 1351 D2:20D8 3D FE 11 - .db 61,-2,17 + 1352 D2:20DB F1 19 38 - .db -15,25,56 + 1353 D2:20DE 08 3A E8 - .db 8,58,-24 + 1354 D2:20E1 F1 FF CE 00 0D 00 - - .dw -15,206,13 - 1355 D2:20CB 3A F8 17 - .db 58,-8,23 - 1356 D2:20CE EE 18 37 - .db -18,24,55 - 1357 D2:20D1 10 3A EC - .db 16,58,-20 - 1358 D2:20D4 ED FF CF 00 + 1355 D2:20E7 3A F8 17 - .db 58,-8,23 + 1356 D2:20EA EE 18 37 - .db -18,24,55 + 1357 D2:20ED 10 3A EC - .db 16,58,-20 + 1358 D2:20F0 ED FF CF 00 09 00 - - .dw -19,207,9 - 1359 D2:20DA F8 FF 16 00 + 1359 D2:20F6 F8 FF 16 00 E5 FF - - .dw -8,22,-27 - 1360 D2:20E0 27 24 DE - .db 39,36,-34 - 1361 D2:20E3 08 00 16 00 + 1360 D2:20FC 27 24 DE - .db 39,36,-34 + 1361 D2:20FF 08 00 16 00 E7 FF - - .dw 8,22,-25 - 1362 D2:20E9 27 D8 E2 - .db 39,-40,-30 - 1363 D2:20EC FD FF 1B 00 + 1362 D2:2105 27 D8 E2 - .db 39,-40,-30 + 1363 D2:2108 FD FF 1B 00 FE FF - - .dw -3,27,-2 - 1364 D2:20F2 DB D8 E0 - .db -37,-40,-32 - 1365 D2:20F5 07 00 1B 00 + 1364 D2:210E DB D8 E0 - .db -37,-40,-32 + 1365 D2:2111 07 00 1B 00 FE FF - - .dw 7,27,-2 - 1366 D2:20FB D9 23 DD - .db -39,35,-35 - 1367 D2:20FE F8 FF 24 00 + 1366 D2:2117 D9 23 DD - .db -39,35,-35 + 1367 D2:211A F8 FF 24 00 E6 FF - - .dw -8,36,-26 - 1368 D2:2104 23 E3 2C - .db 35,-29,44 - 1369 D2:2107 08 00 24 00 + 1368 D2:2120 23 E3 2C - .db 35,-29,44 + 1369 D2:2123 08 00 24 00 E7 FF - - .dw 8,36,-25 - 1370 D2:210D DF E3 2E - .db -33,-29,46 - 1371 D2:2110 FD FF 25 00 + 1370 D2:2129 DF E3 2E - .db -33,-29,46 + 1371 D2:212C FD FF 25 00 FC FF - - .dw -3,37,-4 - 1372 D2:2116 DF 29 23 - .db -33,41,35 - 1373 D2:2119 07 00 25 00 + 1372 D2:2132 DF 29 23 - .db -33,41,35 + 1373 D2:2135 07 00 25 00 FC FF - - .dw 7,37,-4 - 1374 D2:211F 23 28 22 - .db 35,40,34 - 1375 D2:2122 00 80 - - .dw VX_ANIMATION_BONE - 1376 D2:2124 13 - - - .db 19 - 1377 D2:2125 38 EA EC - .db 56,-22,-20 - 1378 D2:2128 13 F9 3C - .db 19,-7,60 - 1379 D2:212B 18 3B 00 - .db 24,59,0 - 1380 D2:212E 11 00 D7 00 + 1374 D2:213B 23 28 22 - .db 35,40,34 + 1375 D2:213E 00 80 - - .dw VX_ANIMATION_BONE + 1376 D2:2140 13 - - - .db 19 + 1377 D2:2141 38 EA EC - .db 56,-22,-20 + 1378 D2:2144 13 F9 3C - .db 19,-7,60 + 1379 D2:2147 18 3B 00 - .db 24,59,0 + 1380 D2:214A 11 00 D7 00 FE FF - - .dw 17,215,-2 - 1381 D2:2134 38 EC EB - .db 56,-20,-21 - 1382 D2:2137 14 F8 3C - .db 20,-8,60 - 1383 D2:213A 15 3C 00 - .db 21,60,0 - 1384 D2:213D 11 00 D6 00 + 1381 D2:2150 38 EC EB - .db 56,-20,-21 + 1382 D2:2153 14 F8 3C - .db 20,-8,60 + 1383 D2:2156 15 3C 00 - .db 21,60,0 + 1384 D2:2159 11 00 D6 00 FD FF - - .dw 17,214,-3 - 1385 D2:2143 3B F4 ED - .db 59,-12,-19 - 1386 D2:2146 12 F7 3C - .db 18,-9,60 - 1387 D2:2149 0E 3E 04 - .db 14,62,4 - 1388 D2:214C 0F 00 D5 00 + 1385 D2:215F 3B F4 ED - .db 59,-12,-19 + 1386 D2:2162 12 F7 3C - .db 18,-9,60 + 1387 D2:2165 0E 3E 04 - .db 14,62,4 + 1388 D2:2168 0F 00 D5 00 F8 FF - - .dw 15,213,-8 - 1389 D2:2152 3D FB F0 - .db 61,-5,-16 - 1390 D2:2155 0E F5 3D - .db 14,-11,61 - 1391 D2:2158 08 3E 0A - .db 8,62,10 - 1392 D2:215B 0D 00 D4 00 + 1389 D2:216E 3D FB F0 - .db 61,-5,-16 + 1390 D2:2171 0E F5 3D - .db 14,-11,61 + 1391 D2:2174 08 3E 0A - .db 8,62,10 + 1392 D2:2177 0D 00 D4 00 F0 FF - - .dw 13,212,-16 - 1393 D2:2161 3E 00 F4 - .db 62,0,-12 - 1394 D2:2164 0C F3 3D - .db 12,-13,61 - 1395 D2:2167 01 3E 0D - .db 1,62,13 - 1396 D2:216A 0B 00 D3 00 + 1393 D2:217D 3E 00 F4 - .db 62,0,-12 + 1394 D2:2180 0C F3 3D - .db 12,-13,61 + 1395 D2:2183 01 3E 0D - .db 1,62,13 + 1396 D2:2186 0B 00 D3 00 E9 FF - - .dw 11,211,-23 - 1397 D2:2170 3F 01 FA - .db 63,1,-6 - 1398 D2:2173 07 F4 3E - .db 7,-12,62 - 1399 D2:2176 00 3E 0C - .db 0,62,12 - 1400 D2:2179 05 00 D2 00 + 1397 D2:218C 3F 01 FA - .db 63,1,-6 + 1398 D2:218F 07 F4 3E - .db 7,-12,62 + 1399 D2:2192 00 3E 0C - .db 0,62,12 + 1400 D2:2195 05 00 D2 00 EA FF - - .dw 5,210,-22 - 1401 D2:217F 3F 00 00 - .db 63,0,0 - 1402 D2:2182 00 F9 3F - .db 0,-7,63 - 1403 D2:2185 00 3F 07 - .db 0,63,7 - 1404 D2:2188 FC FF D3 00 + 1401 D2:219B 3F 00 00 - .db 63,0,0 + 1402 D2:219E 00 F9 3F - .db 0,-7,63 + 1403 D2:21A1 00 3F 07 - .db 0,63,7 + 1404 D2:21A4 FC FF D3 00 F1 FF - - .dw -4,211,-15 - 1405 D2:218E 3E 08 09 - .db 62,8,9 - 1406 D2:2191 F8 FB 3F - .db -8,-5,63 - 1407 D2:2194 F7 3F 04 - .db -9,63,4 - 1408 D2:2197 F6 FF D6 00 + 1405 D2:21AA 3E 08 09 - .db 62,8,9 + 1406 D2:21AD F8 FB 3F - .db -8,-5,63 + 1407 D2:21B0 F7 3F 04 - .db -9,63,4 + 1408 D2:21B3 F6 FF D6 00 F6 FF - - .dw -10,214,-10 - 1409 D2:219D 3B 12 10 - .db 59,18,16 - 1410 D2:21A0 F2 F9 3D - .db -14,-7,61 - 1411 D2:21A3 ED 3C 02 - .db -19,60,2 - 1412 D2:21A6 F0 FF D7 00 + 1409 D2:21B9 3B 12 10 - .db 59,18,16 + 1410 D2:21BC F2 F9 3D - .db -14,-7,61 + 1411 D2:21BF ED 3C 02 - .db -19,60,2 + 1412 D2:21C2 F0 FF D7 00 F8 FF - - .dw -16,215,-8 - 1413 D2:21AC 36 1B 13 - .db 54,27,19 - 1414 D2:21AF F0 F6 3C - .db -16,-10,60 - 1415 D2:21B2 E3 38 02 - .db -29,56,2 - 1416 D2:21B5 EA FF D5 00 + 1413 D2:21C8 36 1B 13 - .db 54,27,19 + 1414 D2:21CB F0 F6 3C - .db -16,-10,60 + 1415 D2:21CE E3 38 02 - .db -29,56,2 + 1416 D2:21D1 EA FF D5 00 F8 FF - - .dw -22,213,-8 - 1417 D2:21BB 34 20 11 - .db 52,32,17 - 1418 D2:21BE F3 F5 3D - .db -13,-11,61 - 1419 D2:21C1 DE 35 02 - .db -34,53,2 - 1420 D2:21C4 ED FF D2 00 + 1417 D2:21D7 34 20 11 - .db 52,32,17 + 1418 D2:21DA F3 F5 3D - .db -13,-11,61 + 1419 D2:21DD DE 35 02 - .db -34,53,2 + 1420 D2:21E0 ED FF D2 00 F7 FF - - .dw -19,210,-9 - 1421 D2:21CA 36 1F 0B - .db 54,31,11 - 1422 D2:21CD F8 F8 3E - .db -8,-8,62 - 1423 D2:21D0 E0 36 02 - .db -32,54,2 - 1424 D2:21D3 F6 FF D2 00 + 1421 D2:21E6 36 1F 0B - .db 54,31,11 + 1422 D2:21E9 F8 F8 3E - .db -8,-8,62 + 1423 D2:21EC E0 36 02 - .db -32,54,2 + 1424 D2:21EF F6 FF D2 00 F7 FF - - .dw -10,210,-9 - 1425 D2:21D9 3B 16 04 - .db 59,22,4 - 1426 D2:21DC FE FC 3F - .db -2,-4,63 - 1427 D2:21DF E9 3B 03 - .db -23,59,3 - 1428 D2:21E2 FD FF D2 00 + 1425 D2:21F5 3B 16 04 - .db 59,22,4 + 1426 D2:21F8 FE FC 3F - .db -2,-4,63 + 1427 D2:21FB E9 3B 03 - .db -23,59,3 + 1428 D2:21FE FD FF D2 00 F8 FF - - .dw -3,210,-8 - 1429 D2:21E8 3E 0C 01 - .db 62,12,1 - 1430 D2:21EB 00 F9 3F - .db 0,-7,63 - 1431 D2:21EE F4 3E 07 - .db -12,62,7 - 1432 D2:21F1 FE FF D1 00 + 1429 D2:2204 3E 0C 01 - .db 62,12,1 + 1430 D2:2207 00 F9 3F - .db 0,-7,63 + 1431 D2:220A F4 3E 07 - .db -12,62,7 + 1432 D2:220D FE FF D1 00 F4 FF - - .dw -2,209,-12 - 1433 D2:21F7 3F 04 FC - .db 63,4,-4 - 1434 D2:21FA 05 F5 3E - .db 5,-11,62 - 1435 D2:21FD FD 3E 0B - .db -3,62,11 - 1436 D2:2200 04 00 D3 00 + 1433 D2:2213 3F 04 FC - .db 63,4,-4 + 1434 D2:2216 05 F5 3E - .db 5,-11,62 + 1435 D2:2219 FD 3E 0B - .db -3,62,11 + 1436 D2:221C 04 00 D3 00 EF FF - - .dw 4,211,-17 - 1437 D2:2206 3E 01 F3 - .db 62,1,-13 - 1438 D2:2209 0D F3 3D - .db 13,-13,61 - 1439 D2:220C 00 3E 0D - .db 0,62,13 - 1440 D2:220F 11 00 D6 00 + 1437 D2:2222 3E 01 F3 - .db 62,1,-13 + 1438 D2:2225 0D F3 3D - .db 13,-13,61 + 1439 D2:2228 00 3E 0D - .db 0,62,13 + 1440 D2:222B 11 00 D6 00 ED FF - - .dw 17,214,-19 - 1441 D2:2215 3D FE EE - .db 61,-2,-18 - 1442 D2:2218 11 F7 3C - .db 17,-9,60 - 1443 D2:221B 04 3F 08 - .db 4,63,8 - 1444 D2:221E 19 00 DA 00 + 1441 D2:2231 3D FE EE - .db 61,-2,-18 + 1442 D2:2234 11 F7 3C - .db 17,-9,60 + 1443 D2:2237 04 3F 08 - .db 4,63,8 + 1444 D2:223A 19 00 DA 00 F5 FF - - .dw 25,218,-11 - 1445 D2:2224 3B F6 EC - .db 59,-10,-20 - 1446 D2:2227 13 F9 3C - .db 19,-7,60 - 1447 D2:222A 0C 3E 04 - .db 12,62,4 - 1448 D2:222D 1A 00 DA 00 + 1445 D2:2240 3B F6 EC - .db 59,-10,-20 + 1446 D2:2243 13 F9 3C - .db 19,-7,60 + 1447 D2:2246 0C 3E 04 - .db 12,62,4 + 1448 D2:2249 1A 00 DA 00 FB FF - - .dw 26,218,-5 - 1449 D2:2233 3A F0 EC - .db 58,-16,-20 - 1450 D2:2236 13 F8 3C - .db 19,-8,60 - 1451 D2:2239 12 3D 02 - .db 18,61,2 - 1452 D2:223C 15 00 D9 00 + 1449 D2:224F 3A F0 EC - .db 58,-16,-20 + 1450 D2:2252 13 F8 3C - .db 19,-8,60 + 1451 D2:2255 12 3D 02 - .db 18,61,2 + 1452 D2:2258 15 00 D9 00 FC FF - - .dw 21,217,-4 - 1453 D2:2242 00 00 D9 FF + 1453 D2:225E 00 00 D9 FF 2D 00 - - .dw 0,-39,45 - 1454 D2:2248 C6 EB 0F - .db -58,-21,15 - 1455 D2:224B 00 00 DB FF + 1454 D2:2264 C6 EB 0F - .db -58,-21,15 + 1455 D2:2267 00 00 DB FF 57 00 - - .dw 0,-37,87 - 1456 D2:2251 DE 30 17 - .db -34,48,23 - 1457 D2:2254 07 00 DE FF + 1456 D2:226D DE 30 17 - .db -34,48,23 + 1457 D2:2270 07 00 DE FF 2D 00 - - .dw 7,-34,45 - 1458 D2:225A DF 30 E8 - .db -33,48,-24 - 1459 D2:225D FA FF DE FF + 1458 D2:2276 DF 30 E8 - .db -33,48,-24 + 1459 D2:2279 FA FF DE FF 2D 00 - - .dw -6,-34,45 - 1460 D2:2263 C6 EF EE - .db -58,-17,-18 - 1461 D2:2266 FD FF DF FF + 1460 D2:227F C6 EF EE - .db -58,-17,-18 + 1461 D2:2282 FD FF DF FF 28 00 - - .dw -3,-33,40 - 1462 D2:226C 24 2E 17 - .db 36,46,23 - 1463 D2:226F 04 00 DF FF + 1462 D2:2288 24 2E 17 - .db 36,46,23 + 1463 D2:228B 04 00 DF FF 28 00 - - .dw 4,-33,40 - 1464 D2:2275 25 2E E8 - .db 37,46,-24 - 1465 D2:2278 F9 FF E0 FF + 1464 D2:2291 25 2E E8 - .db 37,46,-24 + 1465 D2:2294 F9 FF E0 FF 5A 00 - - .dw -7,-32,90 - 1466 D2:227E 3A EB 0F - .db 58,-21,15 - 1467 D2:2281 08 00 E0 FF + 1466 D2:229A 3A EB 0F - .db 58,-21,15 + 1467 D2:229D 08 00 E0 FF 5A 00 - - .dw 8,-32,90 - 1468 D2:2287 39 EC EE - .db 57,-20,-18 - 1469 D2:228A FD FF E2 FF + 1468 D2:22A3 39 EC EE - .db 57,-20,-18 + 1469 D2:22A6 FD FF E2 FF 60 00 - - .dw -3,-30,96 - 1470 D2:2290 00 C2 0F - .db 0,-62,15 - 1471 D2:2293 04 00 E2 FF + 1470 D2:22AC 00 C2 0F - .db 0,-62,15 + 1471 D2:22AF 04 00 E2 FF 60 00 - - .dw 4,-30,96 - 1472 D2:2299 FF C4 EC - .db -1,-60,-20 - 1473 D2:229C 00 00 E3 FF + 1472 D2:22B5 FF C4 EC - .db -1,-60,-20 + 1473 D2:22B8 00 00 E3 FF 28 00 - - .dw 0,-29,40 - 1474 D2:22A2 00 1B C7 - .db 0,27,-57 - 1475 D2:22A5 00 00 E6 FF + 1474 D2:22BE 00 1B C7 - .db 0,27,-57 + 1475 D2:22C1 00 00 E6 FF 60 00 - - .dw 0,-26,96 - 1476 D2:22AB E2 F4 C9 - .db -30,-12,-55 - 1477 D2:22AE 05 00 E7 FF + 1476 D2:22C7 E2 F4 C9 - .db -30,-12,-55 + 1477 D2:22CA 05 00 E7 FF 2D 00 - - .dw 5,-25,45 - 1478 D2:22B4 1D F4 C9 - .db 29,-12,-55 - 1479 D2:22B7 FD FF E7 FF + 1478 D2:22D0 1D F4 C9 - .db 29,-12,-55 + 1479 D2:22D3 FD FF E7 FF 2D 00 - - .dw -3,-25,45 - 1480 D2:22BD 00 19 3A - .db 0,25,58 - 1481 D2:22C0 05 00 E9 FF + 1480 D2:22D9 00 19 3A - .db 0,25,58 + 1481 D2:22DC 05 00 E9 FF 5D 00 - - .dw 5,-23,93 - 1482 D2:22C6 E2 ED 35 - .db -30,-19,53 - 1483 D2:22C9 FC FF EA FF + 1482 D2:22E2 E2 ED 35 - .db -30,-19,53 + 1483 D2:22E5 FC FF EA FF 5D 00 - - .dw -4,-22,93 - 1484 D2:22CF 1E EE 35 - .db 30,-18,53 - 1485 D2:22D2 00 80 - - .dw VX_ANIMATION_BONE - 1486 D2:22D4 13 - - - .db 19 - 1487 D2:22D5 39 EA F0 - .db 57,-22,-16 - 1488 D2:22D8 0D F6 3D - .db 13,-10,61 - 1489 D2:22DB 18 3B 05 - .db 24,59,5 - 1490 D2:22DE 0E 00 D5 00 + 1484 D2:22EB 1E EE 35 - .db 30,-18,53 + 1485 D2:22EE 00 80 - - .dw VX_ANIMATION_BONE + 1486 D2:22F0 13 - - - .db 19 + 1487 D2:22F1 39 EA F0 - .db 57,-22,-16 + 1488 D2:22F4 0D F6 3D - .db 13,-10,61 + 1489 D2:22F7 18 3B 05 - .db 24,59,5 + 1490 D2:22FA 0E 00 D5 00 FA FF - - .dw 14,213,-6 - 1491 D2:22E4 3A ED EF - .db 58,-19,-17 - 1492 D2:22E7 0E F6 3D - .db 14,-10,61 - 1493 D2:22EA 15 3C 05 - .db 21,60,5 - 1494 D2:22ED 0E 00 D4 00 + 1491 D2:2300 3A ED EF - .db 58,-19,-17 + 1492 D2:2303 0E F6 3D - .db 14,-10,61 + 1493 D2:2306 15 3C 05 - .db 21,60,5 + 1494 D2:2309 0E 00 D4 00 F9 FF - - .dw 14,212,-7 - 1495 D2:22F3 3D F5 F2 - .db 61,-11,-14 - 1496 D2:22F6 0C F5 3D - .db 12,-11,61 - 1497 D2:22F9 0E 3D 08 - .db 14,61,8 - 1498 D2:22FC 0C 00 D3 00 + 1495 D2:230F 3D F5 F2 - .db 61,-11,-14 + 1496 D2:2312 0C F5 3D - .db 12,-11,61 + 1497 D2:2315 0E 3D 08 - .db 14,61,8 + 1498 D2:2318 0C 00 D3 00 F5 FF - - .dw 12,211,-11 - 1499 D2:2302 3F FC F7 - .db 63,-4,-9 - 1500 D2:2305 07 F2 3D - .db 7,-14,61 - 1501 D2:2308 06 3E 0D - .db 6,62,13 - 1502 D2:230B 08 00 D2 00 + 1499 D2:231E 3F FC F7 - .db 63,-4,-9 + 1500 D2:2321 07 F2 3D - .db 7,-14,61 + 1501 D2:2324 06 3E 0D - .db 6,62,13 + 1502 D2:2327 08 00 D2 00 ED FF - - .dw 8,210,-19 - 1503 D2:2311 3F 01 FD - .db 63,1,-3 - 1504 D2:2314 03 F0 3D - .db 3,-16,61 - 1505 D2:2317 00 3D 10 - .db 0,61,16 - 1506 D2:231A 05 00 D1 00 + 1503 D2:232D 3F 01 FD - .db 63,1,-3 + 1504 D2:2330 03 F0 3D - .db 3,-16,61 + 1505 D2:2333 00 3D 10 - .db 0,61,16 + 1506 D2:2336 05 00 D1 00 E7 FF - - .dw 5,209,-25 - 1507 D2:2320 3F 01 04 - .db 63,1,4 - 1508 D2:2323 FC F1 3E - .db -4,-15,62 - 1509 D2:2326 FE 3E 0E - .db -2,62,14 - 1510 D2:2329 FE FF D2 00 + 1507 D2:233C 3F 01 04 - .db 63,1,4 + 1508 D2:233F FC F1 3E - .db -4,-15,62 + 1509 D2:2342 FE 3E 0E - .db -2,62,14 + 1510 D2:2345 FE FF D2 00 E8 FF - - .dw -2,210,-24 - 1511 D2:232F 3E 00 0D - .db 62,0,13 - 1512 D2:2332 F3 F6 3D - .db -13,-10,61 - 1513 D2:2335 FE 3F 0A - .db -2,63,10 - 1514 D2:2338 F3 FF D4 00 + 1511 D2:234B 3E 00 0D - .db 62,0,13 + 1512 D2:234E F3 F6 3D - .db -13,-10,61 + 1513 D2:2351 FE 3F 0A - .db -2,63,10 + 1514 D2:2354 F3 FF D4 00 EF FF - - .dw -13,212,-17 - 1515 D2:233E 3B 08 17 - .db 59,8,23 - 1516 D2:2341 EA F8 3B - .db -22,-8,59 - 1517 D2:2344 F6 3E 05 - .db -10,62,5 - 1518 D2:2347 EC FF D8 00 + 1515 D2:235A 3B 08 17 - .db 59,8,23 + 1516 D2:235D EA F8 3B - .db -22,-8,59 + 1517 D2:2360 F6 3E 05 - .db -10,62,5 + 1518 D2:2363 EC FF D8 00 F6 FF - - .dw -20,216,-10 - 1519 D2:234D 36 11 1D - .db 54,17,29 - 1520 D2:2350 E5 F6 38 - .db -27,-10,56 - 1521 D2:2353 EC 3C 01 - .db -20,60,1 - 1522 D2:2356 E6 FF DA 00 + 1519 D2:2369 36 11 1D - .db 54,17,29 + 1520 D2:236C E5 F6 38 - .db -27,-10,56 + 1521 D2:236F EC 3C 01 - .db -20,60,1 + 1522 D2:2372 E6 FF DA 00 F9 FF - - .dw -26,218,-7 - 1523 D2:235C 30 19 20 - .db 48,25,32 - 1524 D2:235F E3 F3 37 - .db -29,-13,55 - 1525 D2:2362 E3 38 FF - .db -29,56,-1 - 1526 D2:2365 E1 FF D8 00 + 1523 D2:2378 30 19 20 - .db 48,25,32 + 1524 D2:237B E3 F3 37 - .db -29,-13,55 + 1525 D2:237E E3 38 FF - .db -29,56,-1 + 1526 D2:2381 E1 FF D8 00 FA FF - - .dw -31,216,-6 - 1527 D2:236B 2B 1F 22 - .db 43,31,34 - 1528 D2:236E E0 F2 35 - .db -32,-14,53 - 1529 D2:2371 DE 35 FA - .db -34,53,-6 - 1530 D2:2374 E1 FF D7 00 + 1527 D2:2387 2B 1F 22 - .db 43,31,34 + 1528 D2:238A E0 F2 35 - .db -32,-14,53 + 1529 D2:238D DE 35 FA - .db -34,53,-6 + 1530 D2:2390 E1 FF D7 00 FD FF - - .dw -31,215,-3 - 1531 D2:237A 2B 1F 23 - .db 43,31,35 - 1532 D2:237D DE F6 34 - .db -34,-10,52 - 1533 D2:2380 E1 36 F7 - .db -31,54,-9 - 1534 D2:2383 E5 FF D8 00 + 1531 D2:2396 2B 1F 23 - .db 43,31,35 + 1532 D2:2399 DE F6 34 - .db -34,-10,52 + 1533 D2:239C E1 36 F7 - .db -31,54,-9 + 1534 D2:239F E5 FF D8 00 00 00 - - .dw -27,216,0 - 1535 D2:2389 30 16 23 - .db 48,22,35 - 1536 D2:238C DD F9 34 - .db -35,-7,52 - 1537 D2:238F EA 3B FA - .db -22,59,-6 - 1538 D2:2392 E7 FF D9 00 + 1535 D2:23A5 30 16 23 - .db 48,22,35 + 1536 D2:23A8 DD F9 34 - .db -35,-7,52 + 1537 D2:23AB EA 3B FA - .db -22,59,-6 + 1538 D2:23AE E7 FF D9 00 FF FF - - .dw -25,217,-1 - 1539 D2:2398 38 0B 1C - .db 56,11,28 - 1540 D2:239B E6 F6 39 - .db -26,-10,57 - 1541 D2:239E F1 3D 04 - .db -15,61,4 - 1542 D2:23A1 EA FF D5 00 + 1539 D2:23B4 38 0B 1C - .db 56,11,28 + 1540 D2:23B7 E6 F6 39 - .db -26,-10,57 + 1541 D2:23BA F1 3D 04 - .db -15,61,4 + 1542 D2:23BD EA FF D5 00 F6 FF - - .dw -22,213,-10 - 1543 D2:23A7 3E 04 0D - .db 62,4,13 - 1544 D2:23AA F4 F2 3D - .db -12,-14,61 - 1545 D2:23AD F9 3E 0C - .db -7,62,12 - 1546 D2:23B0 F8 FF D3 00 + 1543 D2:23C3 3E 04 0D - .db 62,4,13 + 1544 D2:23C6 F4 F2 3D - .db -12,-14,61 + 1545 D2:23C9 F9 3E 0C - .db -7,62,12 + 1546 D2:23CC F8 FF D3 00 EE FF - - .dw -8,211,-18 - 1547 D2:23B6 3F 02 00 - .db 63,2,0 - 1548 D2:23B9 01 F1 3D - .db 1,-15,61 - 1549 D2:23BC FE 3D 0F - .db -2,61,15 - 1550 D2:23BF 09 00 D5 00 + 1547 D2:23D2 3F 02 00 - .db 63,2,0 + 1548 D2:23D5 01 F1 3D - .db 1,-15,61 + 1549 D2:23D8 FE 3D 0F - .db -2,61,15 + 1550 D2:23DB 09 00 D5 00 EB FF - - .dw 9,213,-21 - 1551 D2:23C5 3F FF F7 - .db 63,-1,-9 - 1552 D2:23C8 08 F4 3E - .db 8,-12,62 - 1553 D2:23CB 03 3E 0B - .db 3,62,11 - 1554 D2:23CE 13 00 D8 00 + 1551 D2:23E1 3F FF F7 - .db 63,-1,-9 + 1552 D2:23E4 08 F4 3E - .db 8,-12,62 + 1553 D2:23E7 03 3E 0B - .db 3,62,11 + 1554 D2:23EA 13 00 D8 00 F3 FF - - .dw 19,216,-13 - 1555 D2:23D4 3D F7 F3 - .db 61,-9,-13 - 1556 D2:23D7 0C F6 3D - .db 12,-10,61 - 1557 D2:23DA 0B 3E 08 - .db 11,62,8 - 1558 D2:23DD 15 00 D8 00 + 1555 D2:23F0 3D F7 F3 - .db 61,-9,-13 + 1556 D2:23F3 0C F6 3D - .db 12,-10,61 + 1557 D2:23F6 0B 3E 08 - .db 11,62,8 + 1558 D2:23F9 15 00 D8 00 F8 FF - - .dw 21,216,-8 - 1559 D2:23E3 3C F0 F2 - .db 60,-16,-14 - 1560 D2:23E6 0C F6 3D - .db 12,-10,61 - 1561 D2:23E9 12 3C 06 - .db 18,60,6 - 1562 D2:23EC 12 00 D7 00 + 1559 D2:23FF 3C F0 F2 - .db 60,-16,-14 + 1560 D2:2402 0C F6 3D - .db 12,-10,61 + 1561 D2:2405 12 3C 06 - .db 18,60,6 + 1562 D2:2408 12 00 D7 00 F9 FF - - .dw 18,215,-7 - 1563 D2:23F2 01 00 D9 FF + 1563 D2:240E 01 00 D9 FF 2C 00 - - .dw 1,-39,44 - 1564 D2:23F8 CF F0 24 - .db -49,-16,36 - 1565 D2:23FB 01 00 DB FF + 1564 D2:2414 CF F0 24 - .db -49,-16,36 + 1565 D2:2417 01 00 DB FF FD FF - - .dw 1,-37,-3 - 1566 D2:2401 E2 29 26 - .db -30,41,38 - 1567 D2:2404 FD FF DE FF + 1566 D2:241D E2 29 26 - .db -30,41,38 + 1567 D2:2420 FD FF DE FF FD FF - - .dw -3,-34,-3 - 1568 D2:240A DC 31 EF - .db -36,49,-17 - 1569 D2:240D 06 00 DE FF + 1568 D2:2426 DC 31 EF - .db -36,49,-17 + 1569 D2:2429 06 00 DE FF FD FF - - .dw 6,-34,-3 - 1570 D2:2413 C6 ED F0 - .db -58,-19,-16 - 1571 D2:2416 FB FF DE FF + 1570 D2:242F C6 ED F0 - .db -58,-19,-16 + 1571 D2:2432 FB FF DE FF 2C 00 - - .dw -5,-34,44 - 1572 D2:241C 1E 29 26 - .db 30,41,38 - 1573 D2:241F 08 00 DE FF + 1572 D2:2438 1E 29 26 - .db 30,41,38 + 1573 D2:243B 08 00 DE FF 2C 00 - - .dw 8,-34,44 - 1574 D2:2425 24 31 EF - .db 36,49,-17 - 1575 D2:2428 00 00 DF FF + 1574 D2:2441 24 31 EF - .db 36,49,-17 + 1575 D2:2444 00 00 DF FF F9 FF - - .dw 0,-33,-7 - 1576 D2:242E 32 F0 24 - .db 50,-16,36 - 1577 D2:2431 03 00 DF FF + 1576 D2:244A 32 F0 24 - .db 50,-16,36 + 1577 D2:244D 03 00 DF FF F9 FF - - .dw 3,-33,-7 - 1578 D2:2437 3A ED F0 - .db 58,-19,-16 - 1579 D2:243A 01 00 E2 FF + 1578 D2:2453 3A ED F0 - .db 58,-19,-16 + 1579 D2:2456 01 00 E2 FF F9 FF - - .dw 1,-30,-7 - 1580 D2:2440 00 CB 22 - .db 0,-53,34 - 1581 D2:2443 FF FF E4 FF + 1580 D2:245C 00 CB 22 - .db 0,-53,34 + 1581 D2:245F FF FF E4 FF FD FF - - .dw -1,-28,-3 - 1582 D2:2449 00 C4 EB - .db 0,-60,-21 - 1583 D2:244C 04 00 E4 FF + 1582 D2:2465 00 C4 EB - .db 0,-60,-21 + 1583 D2:2468 04 00 E4 FF FD FF - - .dw 4,-28,-3 - 1584 D2:2452 00 23 CB - .db 0,35,-53 - 1585 D2:2455 FE FF E7 FF + 1584 D2:246E 00 23 CB - .db 0,35,-53 + 1585 D2:2471 FE FF E7 FF 2D 00 - - .dw -2,-25,45 - 1586 D2:245B DF F5 CB - .db -33,-11,-53 - 1587 D2:245E 05 00 E7 FF + 1586 D2:2477 DF F5 CB - .db -33,-11,-53 + 1587 D2:247A 05 00 E7 FF 2D 00 - - .dw 5,-25,45 - 1588 D2:2464 21 F5 CB - .db 33,-11,-53 - 1589 D2:2467 00 80 - - .dw VX_ANIMATION_BONE - 1590 D2:2469 13 - - - .db 19 - 1591 D2:246A 39 F1 EA - .db 57,-15,-22 - 1592 D2:246D 0D E1 36 - .db 13,-31,54 - 1593 D2:2470 18 35 19 - .db 24,53,25 - 1594 D2:2473 12 00 CA 00 + 1588 D2:2480 21 F5 CB - .db 33,-11,-53 + 1589 D2:2483 00 80 - - .dw VX_ANIMATION_BONE + 1590 D2:2485 13 - - - .db 19 + 1591 D2:2486 39 F1 EA - .db 57,-15,-22 + 1592 D2:2489 0D E1 36 - .db 13,-31,54 + 1593 D2:248C 18 35 19 - .db 24,53,25 + 1594 D2:248F 12 00 CA 00 F8 FF - - .dw 18,202,-8 - 1595 D2:2479 3A F5 E9 - .db 58,-11,-23 - 1596 D2:247C 0E E0 35 - .db 14,-32,53 - 1597 D2:247F 15 35 1A - .db 21,53,26 - 1598 D2:2482 12 00 C9 00 + 1595 D2:2495 3A F5 E9 - .db 58,-11,-23 + 1596 D2:2498 0E E0 35 - .db 14,-32,53 + 1597 D2:249B 15 35 1A - .db 21,53,26 + 1598 D2:249E 12 00 C9 00 F7 FF - - .dw 18,201,-9 - 1599 D2:2488 3D FB EE - .db 61,-5,-18 - 1600 D2:248B 0C DE 34 - .db 12,-34,52 - 1601 D2:248E 0E 35 1F - .db 14,53,31 - 1602 D2:2491 0F 00 C8 00 + 1599 D2:24A4 3D FB EE - .db 61,-5,-18 + 1600 D2:24A7 0C DE 34 - .db 12,-34,52 + 1601 D2:24AA 0E 35 1F - .db 14,53,31 + 1602 D2:24AD 0F 00 C8 00 F1 FF - - .dw 15,200,-15 - 1603 D2:2497 3F FF F6 - .db 63,-1,-10 - 1604 D2:249A 07 DB 33 - .db 7,-37,51 - 1605 D2:249D 06 33 24 - .db 6,51,36 - 1606 D2:24A0 0A 00 C6 00 + 1603 D2:24B3 3F FF F6 - .db 63,-1,-10 + 1604 D2:24B6 07 DB 33 - .db 7,-37,51 + 1605 D2:24B9 06 33 24 - .db 6,51,36 + 1606 D2:24BC 0A 00 C6 00 E8 FF - - .dw 10,198,-24 - 1607 D2:24A6 3F 02 FE - .db 63,2,-2 - 1608 D2:24A9 03 D9 32 - .db 3,-39,50 - 1609 D2:24AC 00 32 27 - .db 0,50,39 - 1610 D2:24AF 06 00 C5 00 + 1607 D2:24C2 3F 02 FE - .db 63,2,-2 + 1608 D2:24C5 03 D9 32 - .db 3,-39,50 + 1609 D2:24C8 00 32 27 - .db 0,50,39 + 1610 D2:24CB 06 00 C5 00 E2 FF - - .dw 6,197,-30 - 1611 D2:24B5 3F 00 04 - .db 63,0,4 - 1612 D2:24B8 FC DA 32 - .db -4,-38,50 - 1613 D2:24BB FE 33 26 - .db -2,51,38 - 1614 D2:24BE FD FF C5 00 + 1611 D2:24D1 3F 00 04 - .db 63,0,4 + 1612 D2:24D4 FC DA 32 - .db -4,-38,50 + 1613 D2:24D7 FE 33 26 - .db -2,51,38 + 1614 D2:24DA FD FF C5 00 E3 FF - - .dw -3,197,-29 - 1615 D2:24C4 3E FB 0C - .db 62,-5,12 - 1616 D2:24C7 F3 DE 34 - .db -13,-34,52 - 1617 D2:24CA FE 35 22 - .db -2,53,34 - 1618 D2:24CD F0 FF C7 00 + 1615 D2:24E0 3E FB 0C - .db 62,-5,12 + 1616 D2:24E3 F3 DE 34 - .db -13,-34,52 + 1617 D2:24E6 FE 35 22 - .db -2,53,34 + 1618 D2:24E9 F0 FF C7 00 EB FF - - .dw -16,199,-21 - 1619 D2:24D3 3B FF 18 - .db 59,-1,24 - 1620 D2:24D6 EA E1 33 - .db -22,-31,51 - 1621 D2:24D9 F6 37 1D - .db -10,55,29 - 1622 D2:24DC E7 FF CC 00 + 1619 D2:24EF 3B FF 18 - .db 59,-1,24 + 1620 D2:24F2 EA E1 33 - .db -22,-31,51 + 1621 D2:24F5 F6 37 1D - .db -10,55,29 + 1622 D2:24F8 E7 FF CC 00 F3 FF - - .dw -25,204,-13 - 1623 D2:24E2 36 04 22 - .db 54,4,34 - 1624 D2:24E5 E5 E1 30 - .db -27,-31,48 - 1625 D2:24E8 EC 37 18 - .db -20,55,24 - 1626 D2:24EB DF FF CE 00 + 1623 D2:24FE 36 04 22 - .db 54,4,34 + 1624 D2:2501 E5 E1 30 - .db -27,-31,48 + 1625 D2:2504 EC 37 18 - .db -20,55,24 + 1626 D2:2507 DF FF CE 00 F7 FF - - .dw -33,206,-9 - 1627 D2:24F1 30 0B 27 - .db 48,11,39 - 1628 D2:24F4 E3 DE 2D - .db -29,-34,45 - 1629 D2:24F7 E3 34 14 - .db -29,52,20 - 1630 D2:24FA DA FF CD 00 + 1627 D2:250D 30 0B 27 - .db 48,11,39 + 1628 D2:2510 E3 DE 2D - .db -29,-34,45 + 1629 D2:2513 E3 34 14 - .db -29,52,20 + 1630 D2:2516 DA FF CD 00 F9 FF - - .dw -38,205,-7 - 1631 D2:2500 2B 0F 2C - .db 43,15,44 - 1632 D2:2503 E0 DF 2B - .db -32,-33,43 - 1633 D2:2506 DE 33 0F - .db -34,51,15 - 1634 D2:2509 D9 FF CD 00 + 1631 D2:251C 2B 0F 2C - .db 43,15,44 + 1632 D2:251F E0 DF 2B - .db -32,-33,43 + 1633 D2:2522 DE 33 0F - .db -34,51,15 + 1634 D2:2525 D9 FF CD 00 FD FF - - .dw -39,205,-3 - 1635 D2:250F 2B 0F 2C - .db 43,15,44 - 1636 D2:2512 DE E2 2C - .db -34,-30,44 - 1637 D2:2515 E1 36 0C - .db -31,54,12 - 1638 D2:2518 DD FF CE 00 + 1635 D2:252B 2B 0F 2C - .db 43,15,44 + 1636 D2:252E DE E2 2C - .db -34,-30,44 + 1637 D2:2531 E1 36 0C - .db -31,54,12 + 1638 D2:2534 DD FF CE 00 00 00 - - .dw -35,206,0 - 1639 D2:251E 30 07 29 - .db 48,7,41 - 1640 D2:2521 DD E6 2E - .db -35,-26,46 - 1641 D2:2524 EA 39 0F - .db -22,57,15 - 1642 D2:2527 DF FF CF 00 + 1639 D2:253A 30 07 29 - .db 48,7,41 + 1640 D2:253D DD E6 2E - .db -35,-26,46 + 1641 D2:2540 EA 39 0F - .db -22,57,15 + 1642 D2:2543 DF FF CF 00 FF FF - - .dw -33,207,-1 - 1643 D2:252D 38 00 1E - .db 56,0,30 - 1644 D2:2530 E6 E2 31 - .db -26,-30,49 - 1645 D2:2533 F1 38 1A - .db -15,56,26 - 1646 D2:2536 E5 FF CA 00 + 1643 D2:2549 38 00 1E - .db 56,0,30 + 1644 D2:254C E6 E2 31 - .db -26,-30,49 + 1645 D2:254F F1 38 1A - .db -15,56,26 + 1646 D2:2552 E5 FF CA 00 F4 FF - - .dw -27,202,-12 - 1647 D2:253C 3E 00 0E - .db 62,0,14 - 1648 D2:253F F4 DD 33 - .db -12,-35,51 - 1649 D2:2542 F9 35 22 - .db -7,53,34 - 1650 D2:2545 F5 FF C8 00 + 1647 D2:2558 3E 00 0E - .db 62,0,14 + 1648 D2:255B F4 DD 33 - .db -12,-35,51 + 1649 D2:255E F9 35 22 - .db -7,53,34 + 1650 D2:2561 F5 FF C8 00 EA FF - - .dw -11,200,-22 - 1651 D2:254B 3F 02 00 - .db 63,2,0 - 1652 D2:254E 01 DB 34 - .db 1,-37,52 - 1653 D2:2551 FE 34 25 - .db -2,52,37 - 1654 D2:2554 09 00 C9 00 + 1651 D2:2567 3F 02 00 - .db 63,2,0 + 1652 D2:256A 01 DB 34 - .db 1,-37,52 + 1653 D2:256D FE 34 25 - .db -2,52,37 + 1654 D2:2570 09 00 C9 00 E7 FF - - .dw 9,201,-25 - 1655 D2:255A 3F 01 F7 - .db 63,1,-9 - 1656 D2:255D 08 DF 35 - .db 8,-33,53 - 1657 D2:2560 03 36 21 - .db 3,54,33 - 1658 D2:2563 15 00 CD 00 + 1655 D2:2576 3F 01 F7 - .db 63,1,-9 + 1656 D2:2579 08 DF 35 - .db 8,-33,53 + 1657 D2:257C 03 36 21 - .db 3,54,33 + 1658 D2:257F 15 00 CD 00 EF FF - - .dw 21,205,-17 - 1659 D2:2569 3D FC F0 - .db 61,-4,-16 - 1660 D2:256C 0C E1 36 - .db 12,-31,54 - 1661 D2:256F 0B 37 1D - .db 11,55,29 - 1662 D2:2572 18 00 CD 00 + 1659 D2:2585 3D FC F0 - .db 61,-4,-16 + 1660 D2:2588 0C E1 36 - .db 12,-31,54 + 1661 D2:258B 0B 37 1D - .db 11,55,29 + 1662 D2:258E 18 00 CD 00 F5 FF - - .dw 24,205,-11 - 1663 D2:2578 3C F6 ED - .db 60,-10,-19 - 1664 D2:257B 0C E1 36 - .db 12,-31,54 - 1665 D2:257E 12 36 1B - .db 18,54,27 - 1666 D2:2581 15 00 CC 00 + 1663 D2:2594 3C F6 ED - .db 60,-10,-19 + 1664 D2:2597 0C E1 36 - .db 12,-31,54 + 1665 D2:259A 12 36 1B - .db 18,54,27 + 1666 D2:259D 15 00 CC 00 F6 FF - - .dw 21,204,-10 - 1667 D2:2587 FC FF DC FF + 1667 D2:25A3 FC FF DC FF FC FF - - .dw -4,-36,-4 - 1668 D2:258D D9 DD DD - .db -39,-35,-35 - 1669 D2:2590 06 00 DC FF + 1668 D2:25A9 D9 DD DD - .db -39,-35,-35 + 1669 D2:25AC 06 00 DC FF FC FF - - .dw 6,-36,-4 - 1670 D2:2596 DB 27 E0 - .db -37,39,-32 - 1671 D2:2599 F8 FF DC FF + 1670 D2:25B2 DB 27 E0 - .db -37,39,-32 + 1671 D2:25B5 F8 FF DC FF E6 FF - - .dw -8,-36,-26 - 1672 D2:259F 26 29 E2 - .db 38,41,-30 - 1673 D2:25A2 08 00 DC FF + 1672 D2:25BB 26 29 E2 - .db 38,41,-30 + 1673 D2:25BE 08 00 DC FF E7 FF - - .dw 8,-36,-25 - 1674 D2:25A8 27 DC DE - .db 39,-36,-34 - 1675 D2:25AB FC FF E5 FF + 1674 D2:25C4 27 DC DE - .db 39,-36,-34 + 1675 D2:25C7 FC FF E5 FF FE FF - - .dw -4,-27,-2 - 1676 D2:25B1 DF 1C 2E - .db -33,28,46 - 1677 D2:25B4 06 00 E5 FF + 1676 D2:25CD DF 1C 2E - .db -33,28,46 + 1677 D2:25D0 06 00 E5 FF FE FF - - .dw 6,-27,-2 - 1678 D2:25BA 23 1C 2C - .db 35,28,44 - 1679 D2:25BD F8 FF EA FF + 1678 D2:25D6 23 1C 2C - .db 35,28,44 + 1679 D2:25D9 F8 FF EA FF E5 FF - - .dw -8,-22,-27 - 1680 D2:25C3 23 D8 22 - .db 35,-40,34 - 1681 D2:25C6 08 00 EA FF + 1680 D2:25DF 23 D8 22 - .db 35,-40,34 + 1681 D2:25E2 08 00 EA FF E7 FF - - .dw 8,-22,-25 - 1682 D2:25CC DF D7 23 - .db -33,-41,35 - 1683 D2:25CF 00 80 - - .dw VX_ANIMATION_BONE - 1684 D2:25D1 13 - - - .db 19 - 1685 D2:25D2 3F FF FE - .db 63,-1,-2 - 1686 D2:25D5 02 00 3F - .db 2,0,63 - 1687 D2:25D8 01 3F 00 - .db 1,63,0 - 1688 D2:25DB 00 00 D6 00 + 1682 D2:25E8 DF D7 23 - .db -33,-41,35 + 1683 D2:25EB 00 80 - - .dw VX_ANIMATION_BONE + 1684 D2:25ED 13 - - - .db 19 + 1685 D2:25EE 3F FF FE - .db 63,-1,-2 + 1686 D2:25F1 02 00 3F - .db 2,0,63 + 1687 D2:25F4 01 3F 00 - .db 1,63,0 + 1688 D2:25F7 00 00 D6 00 01 00 - - .dw 0,214,1 - 1689 D2:25E1 3F FF FE - .db 63,-1,-2 - 1690 D2:25E4 02 00 3F - .db 2,0,63 - 1691 D2:25E7 01 3F 00 - .db 1,63,0 - 1692 D2:25EA FE FF D5 00 + 1689 D2:25FD 3F FF FE - .db 63,-1,-2 + 1690 D2:2600 02 00 3F - .db 2,0,63 + 1691 D2:2603 01 3F 00 - .db 1,63,0 + 1692 D2:2606 FE FF D5 00 00 00 - - .dw -2,213,0 - 1693 D2:25F0 3F FF FE - .db 63,-1,-2 - 1694 D2:25F3 02 00 3F - .db 2,0,63 - 1695 D2:25F6 01 3F 00 - .db 1,63,0 - 1696 D2:25F9 FC FF D5 00 + 1693 D2:260C 3F FF FE - .db 63,-1,-2 + 1694 D2:260F 02 00 3F - .db 2,0,63 + 1695 D2:2612 01 3F 00 - .db 1,63,0 + 1696 D2:2615 FC FF D5 00 00 00 - - .dw -4,213,0 - 1697 D2:25FF 3F 00 FE - .db 63,0,-2 - 1698 D2:2602 02 00 3F - .db 2,0,63 - 1699 D2:2605 00 3F 00 - .db 0,63,0 - 1700 D2:2608 FC FF D5 00 + 1697 D2:261B 3F 00 FE - .db 63,0,-2 + 1698 D2:261E 02 00 3F - .db 2,0,63 + 1699 D2:2621 00 3F 00 - .db 0,63,0 + 1700 D2:2624 FC FF D5 00 FF FF - - .dw -4,213,-1 - 1701 D2:260E 3F 00 FE - .db 63,0,-2 - 1702 D2:2611 02 01 3F - .db 2,1,63 - 1703 D2:2614 00 3F FF - .db 0,63,-1 - 1704 D2:2617 FE FF D6 00 + 1701 D2:262A 3F 00 FE - .db 63,0,-2 + 1702 D2:262D 02 01 3F - .db 2,1,63 + 1703 D2:2630 00 3F FF - .db 0,63,-1 + 1704 D2:2633 FE FF D6 00 FE FF - - .dw -2,214,-2 - 1705 D2:261D 3F 00 FE - .db 63,0,-2 - 1706 D2:2620 02 00 3F - .db 2,0,63 - 1707 D2:2623 00 3F 00 - .db 0,63,0 - 1708 D2:2626 FF FF D6 00 + 1705 D2:2639 3F 00 FE - .db 63,0,-2 + 1706 D2:263C 02 00 3F - .db 2,0,63 + 1707 D2:263F 00 3F 00 - .db 0,63,0 + 1708 D2:2642 FF FF D6 00 FD FF - - .dw -1,214,-3 - 1709 D2:262C 3F 00 FE - .db 63,0,-2 - 1710 D2:262F 02 00 3F - .db 2,0,63 - 1711 D2:2632 00 3F 00 - .db 0,63,0 - 1712 D2:2635 00 00 D7 00 + 1709 D2:2648 3F 00 FE - .db 63,0,-2 + 1710 D2:264B 02 00 3F - .db 2,0,63 + 1711 D2:264E 00 3F 00 - .db 0,63,0 + 1712 D2:2651 00 00 D7 00 FD FF - - .dw 0,215,-3 - 1713 D2:263B 3F 00 FE - .db 63,0,-2 - 1714 D2:263E 02 00 3F - .db 2,0,63 - 1715 D2:2641 00 3F 00 - .db 0,63,0 - 1716 D2:2644 03 00 D8 00 + 1713 D2:2657 3F 00 FE - .db 63,0,-2 + 1714 D2:265A 02 00 3F - .db 2,0,63 + 1715 D2:265D 00 3F 00 - .db 0,63,0 + 1716 D2:2660 03 00 D8 00 FE FF - - .dw 3,216,-2 - 1717 D2:264A 3F 00 FE - .db 63,0,-2 - 1718 D2:264D 02 00 3F - .db 2,0,63 - 1719 D2:2650 00 3F 00 - .db 0,63,0 - 1720 D2:2653 01 00 D7 00 + 1717 D2:2666 3F 00 FE - .db 63,0,-2 + 1718 D2:2669 02 00 3F - .db 2,0,63 + 1719 D2:266C 00 3F 00 - .db 0,63,0 + 1720 D2:266F 01 00 D7 00 FF FF - - .dw 1,215,-1 - 1721 D2:2659 3F 00 FE - .db 63,0,-2 - 1722 D2:265C 02 00 3F - .db 2,0,63 - 1723 D2:265F 00 3F 00 - .db 0,63,0 - 1724 D2:2662 FF FF D5 00 + 1721 D2:2675 3F 00 FE - .db 63,0,-2 + 1722 D2:2678 02 00 3F - .db 2,0,63 + 1723 D2:267B 00 3F 00 - .db 0,63,0 + 1724 D2:267E FF FF D5 00 FF FF - - .dw -1,213,-1 - 1725 D2:2668 3F FF FE - .db 63,-1,-2 - 1726 D2:266B 02 00 3F - .db 2,0,63 - 1727 D2:266E 01 3F 00 - .db 1,63,0 - 1728 D2:2671 FD FF D3 00 + 1725 D2:2684 3F FF FE - .db 63,-1,-2 + 1726 D2:2687 02 00 3F - .db 2,0,63 + 1727 D2:268A 01 3F 00 - .db 1,63,0 + 1728 D2:268D FD FF D3 00 FE FF - - .dw -3,211,-2 - 1729 D2:2677 3F 00 FE - .db 63,0,-2 - 1730 D2:267A 02 00 3F - .db 2,0,63 - 1731 D2:267D 00 3F 00 - .db 0,63,0 - 1732 D2:2680 FE FF D3 00 + 1729 D2:2693 3F 00 FE - .db 63,0,-2 + 1730 D2:2696 02 00 3F - .db 2,0,63 + 1731 D2:2699 00 3F 00 - .db 0,63,0 + 1732 D2:269C FE FF D3 00 FF FF - - .dw -2,211,-1 - 1733 D2:2686 3F 00 FE - .db 63,0,-2 - 1734 D2:2689 02 00 3F - .db 2,0,63 - 1735 D2:268C 00 3F 00 - .db 0,63,0 - 1736 D2:268F FE FF D3 00 + 1733 D2:26A2 3F 00 FE - .db 63,0,-2 + 1734 D2:26A5 02 00 3F - .db 2,0,63 + 1735 D2:26A8 00 3F 00 - .db 0,63,0 + 1736 D2:26AB FE FF D3 00 00 00 - - .dw -2,211,0 - 1737 D2:2695 3F 00 FE - .db 63,0,-2 - 1738 D2:2698 02 00 3F - .db 2,0,63 - 1739 D2:269B 00 3F 00 - .db 0,63,0 - 1740 D2:269E FF FF D3 00 + 1737 D2:26B1 3F 00 FE - .db 63,0,-2 + 1738 D2:26B4 02 00 3F - .db 2,0,63 + 1739 D2:26B7 00 3F 00 - .db 0,63,0 + 1740 D2:26BA FF FF D3 00 01 00 - - .dw -1,211,1 - 1741 D2:26A4 3F 00 FE - .db 63,0,-2 - 1742 D2:26A7 02 00 3F - .db 2,0,63 - 1743 D2:26AA 00 3F 00 - .db 0,63,0 - 1744 D2:26AD 00 00 D5 00 + 1741 D2:26C0 3F 00 FE - .db 63,0,-2 + 1742 D2:26C3 02 00 3F - .db 2,0,63 + 1743 D2:26C6 00 3F 00 - .db 0,63,0 + 1744 D2:26C9 00 00 D5 00 01 00 - - .dw 0,213,1 - 1745 D2:26B3 3F 00 FF - .db 63,0,-1 - 1746 D2:26B6 01 00 3F - .db 1,0,63 - 1747 D2:26B9 00 3F 00 - .db 0,63,0 - 1748 D2:26BC 00 00 D7 00 + 1745 D2:26CF 3F 00 FF - .db 63,0,-1 + 1746 D2:26D2 01 00 3F - .db 1,0,63 + 1747 D2:26D5 00 3F 00 - .db 0,63,0 + 1748 D2:26D8 00 00 D7 00 01 00 - - .dw 0,215,1 - 1749 D2:26C2 3F FF FE - .db 63,-1,-2 - 1750 D2:26C5 02 00 3F - .db 2,0,63 - 1751 D2:26C8 01 3F 00 - .db 1,63,0 - 1752 D2:26CB 03 00 D9 00 + 1749 D2:26DE 3F FF FE - .db 63,-1,-2 + 1750 D2:26E1 02 00 3F - .db 2,0,63 + 1751 D2:26E4 01 3F 00 - .db 1,63,0 + 1752 D2:26E7 03 00 D9 00 02 00 - - .dw 3,217,2 - 1753 D2:26D1 3F FE FF - .db 63,-2,-1 - 1754 D2:26D4 01 00 3F - .db 1,0,63 - 1755 D2:26D7 02 3F 00 - .db 2,63,0 - 1756 D2:26DA 03 00 D9 00 + 1753 D2:26ED 3F FE FF - .db 63,-2,-1 + 1754 D2:26F0 01 00 3F - .db 1,0,63 + 1755 D2:26F3 02 3F 00 - .db 2,63,0 + 1756 D2:26F6 03 00 D9 00 01 00 - - .dw 3,217,1 - 1757 D2:26E0 3F FE FE - .db 63,-2,-2 - 1758 D2:26E3 02 00 3F - .db 2,0,63 - 1759 D2:26E6 01 3F 00 - .db 1,63,0 - 1760 D2:26E9 01 00 D8 00 + 1757 D2:26FC 3F FE FE - .db 63,-2,-2 + 1758 D2:26FF 02 00 3F - .db 2,0,63 + 1759 D2:2702 01 3F 00 - .db 1,63,0 + 1760 D2:2705 01 00 D8 00 01 00 - - .dw 1,216,1 - 1761 D2:26EF F6 FF ED FF + 1761 D2:270B F6 FF ED FF 92 00 - - .dw -10,-19,146 - 1762 D2:26F5 DE CB 09 - .db -34,-53,9 - 1763 D2:26F8 0D 00 EE FF + 1762 D2:2711 DE CB 09 - .db -34,-53,9 + 1763 D2:2714 0D 00 EE FF 88 00 - - .dw 13,-18,136 - 1764 D2:26FE C2 F5 F6 - .db -62,-11,-10 - 1765 D2:2701 F2 FF F0 FF + 1764 D2:271A C2 F5 F6 - .db -62,-11,-10 + 1765 D2:271D F2 FF F0 FF 9C 00 - - .dw -14,-16,156 - 1766 D2:2707 C8 FF 1D - .db -56,-1,29 - 1767 D2:270A F0 FF F1 FF + 1766 D2:2723 C8 FF 1D - .db -56,-1,29 + 1767 D2:2726 F0 FF F1 FF 86 00 - - .dw -16,-15,134 - 1768 D2:2710 D2 02 D4 - .db -46,2,-44 - 1769 D2:2713 06 00 F1 FF + 1768 D2:272C D2 02 D4 - .db -46,2,-44 + 1769 D2:272F 06 00 F1 FF 88 00 - - .dw 6,-15,136 - 1770 D2:2719 D4 01 D2 - .db -44,1,-46 - 1771 D2:271C F1 FF F1 FF + 1770 D2:2735 D4 01 D2 - .db -44,1,-46 + 1771 D2:2738 F1 FF F1 FF 8A 00 - - .dw -15,-15,138 - 1772 D2:2722 E6 DC D3 - .db -26,-36,-45 - 1773 D2:2725 F0 FF F1 FF + 1772 D2:273E E6 DC D3 - .db -26,-36,-45 + 1773 D2:2741 F0 FF F1 FF 8F 00 - - .dw -16,-15,143 - 1774 D2:272B 13 D2 27 - .db 19,-46,39 - 1775 D2:272E FF FF F1 FF + 1774 D2:2747 13 D2 27 - .db 19,-46,39 + 1775 D2:274A FF FF F1 FF 88 00 - - .dw -1,-15,136 - 1776 D2:2734 2D D7 11 - .db 45,-41,17 - 1777 D2:2737 EE FF F2 FF + 1776 D2:2750 2D D7 11 - .db 45,-41,17 + 1777 D2:2753 EE FF F2 FF 83 00 - - .dw -18,-14,131 - 1778 D2:273D 32 E5 1C - .db 50,-27,28 - 1779 D2:2740 0A 00 F2 FF + 1778 D2:2759 32 E5 1C - .db 50,-27,28 + 1779 D2:275C 0A 00 F2 FF 9C 00 - - .dw 10,-14,156 - 1780 D2:2746 0B 3D F2 - .db 11,61,-14 - 1781 D2:2749 01 00 F4 FF + 1780 D2:2762 0B 3D F2 - .db 11,61,-14 + 1781 D2:2765 01 00 F4 FF 75 00 - - .dw 1,-12,117 - 1782 D2:274F 06 30 D8 - .db 6,48,-40 - 1783 D2:2752 F5 FF F5 FF + 1782 D2:276B 06 30 D8 - .db 6,48,-40 + 1783 D2:276E F5 FF F5 FF 9A 00 - - .dw -11,-11,154 - 1784 D2:2758 F5 31 DA - .db -11,49,-38 - 1785 D2:275B 1C 00 F6 FF + 1784 D2:2774 F5 31 DA - .db -11,49,-38 + 1785 D2:2777 1C 00 F6 FF 7C 00 - - .dw 28,-10,124 - 1786 D2:2761 C3 08 F1 - .db -61,8,-15 - 1787 D2:2764 14 00 F7 FF + 1786 D2:277D C3 08 F1 - .db -61,8,-15 + 1787 D2:2780 14 00 F7 FF 78 00 - - .dw 20,-9,120 - 1788 D2:276A DD 34 09 - .db -35,52,9 - 1789 D2:276D 1B 00 F7 FF + 1788 D2:2786 DD 34 09 - .db -35,52,9 + 1789 D2:2789 1B 00 F7 FF 88 00 - - .dw 27,-9,136 - 1790 D2:2773 E8 23 D2 - .db -24,35,-46 - 1791 D2:2776 0F 00 F8 FF + 1790 D2:278F E8 23 D2 - .db -24,35,-46 + 1791 D2:2792 0F 00 F8 FF 74 00 - - .dw 15,-8,116 - 1792 D2:277C 08 EE C4 - .db 8,-18,-60 - 1793 D2:277F 19 00 F8 FF + 1792 D2:2798 08 EE C4 - .db 8,-18,-60 + 1793 D2:279B 19 00 F8 FF 76 00 - - .dw 25,-8,118 - 1794 D2:2785 09 12 C4 - .db 9,18,-60 - 1795 D2:2788 F1 FF F8 FF + 1794 D2:27A1 09 12 C4 - .db 9,18,-60 + 1795 D2:27A4 F1 FF F8 FF A2 00 - - .dw -15,-8,162 - 1796 D2:278E C9 FF 1F - .db -55,-1,31 - 1797 D2:2791 18 00 F8 FF + 1796 D2:27AA C9 FF 1F - .db -55,-1,31 + 1797 D2:27AD 18 00 F8 FF 94 00 - - .dw 24,-8,148 - 1798 D2:2797 20 F4 35 - .db 32,-12,53 - 1799 D2:279A EA FF FA FF + 1798 D2:27B3 20 F4 35 - .db 32,-12,53 + 1799 D2:27B6 EA FF FA FF 7E 00 - - .dw -22,-6,126 - 1800 D2:27A0 06 00 3F - .db 6,0,63 - 1801 D2:27A3 05 00 FA FF + 1800 D2:27BC 06 00 3F - .db 6,0,63 + 1801 D2:27BF 05 00 FA FF 70 00 - - .dw 5,-6,112 - 1802 D2:27A9 20 0B 36 - .db 32,11,54 - 1803 D2:27AC EE FF FB FF + 1802 D2:27C5 20 0B 36 - .db 32,11,54 + 1803 D2:27C8 EE FF FB FF 70 00 - - .dw -18,-5,112 - 1804 D2:27B2 C1 00 0A - .db -63,0,10 - 1805 D2:27B5 20 00 FB FF + 1804 D2:27CE C1 00 0A - .db -63,0,10 + 1805 D2:27D1 20 00 FB FF 73 00 - - .dw 32,-5,115 - 1806 D2:27BB C1 01 F7 - .db -63,1,-9 - 1807 D2:27BE 24 00 FB FF + 1806 D2:27D7 C1 01 F7 - .db -63,1,-9 + 1807 D2:27DA 24 00 FB FF 7C 00 - - .dw 36,-5,124 - 1808 D2:27C4 C8 E3 FA - .db -56,-29,-6 - 1809 D2:27C7 22 00 FC FF + 1808 D2:27E0 C8 E3 FA - .db -56,-29,-6 + 1809 D2:27E3 22 00 FC FF 84 00 - - .dw 34,-4,132 - 1810 D2:27CD C9 1F FB - .db -55,31,-5 - 1811 D2:27D0 0F 00 FC FF + 1810 D2:27E9 C9 1F FB - .db -55,31,-5 + 1811 D2:27EC 0F 00 FC FF 9E 00 - - .dw 15,-4,158 - 1812 D2:27D6 FF 3C ED - .db -1,60,-19 - 1813 D2:27D9 EB FF 00 00 + 1812 D2:27F2 FF 3C ED - .db -1,60,-19 + 1813 D2:27F5 EB FF 00 00 6F 00 - - .dw -21,0,111 - 1814 D2:27DF D9 31 FC - .db -39,49,-4 - 1815 D2:27E2 E8 FF 00 00 + 1814 D2:27FB D9 31 FC - .db -39,49,-4 + 1815 D2:27FE E8 FF 00 00 7E 00 - - .dw -24,0,126 - 1816 D2:27E8 E3 C8 05 - .db -29,-56,5 - 1817 D2:27EB E5 FF 00 00 + 1816 D2:2804 E3 C8 05 - .db -29,-56,5 + 1817 D2:2807 E5 FF 00 00 80 00 - - .dw -27,0,128 - 1818 D2:27F1 D8 CF FF - .db -40,-49,-1 - 1819 D2:27F4 E9 FF 00 00 + 1818 D2:280D D8 CF FF - .db -40,-49,-1 + 1819 D2:2810 E9 FF 00 00 86 00 - - .dw -23,0,134 - 1820 D2:27FA 04 C8 E2 - .db 4,-56,-30 - 1821 D2:27FD E9 FF 00 00 + 1820 D2:2816 04 C8 E2 - .db 4,-56,-30 + 1821 D2:2819 E9 FF 00 00 8A 00 - - .dw -23,0,138 - 1822 D2:2803 D5 D7 EA - .db -43,-41,-22 - 1823 D2:2806 E9 FF 00 00 + 1822 D2:281F D5 D7 EA - .db -43,-41,-22 + 1823 D2:2822 E9 FF 00 00 8E 00 - - .dw -23,0,142 - 1824 D2:280C FE C3 F0 - .db -2,-61,-16 - 1825 D2:280F EF FF 00 00 + 1824 D2:2828 FE C3 F0 - .db -2,-61,-16 + 1825 D2:282B EF FF 00 00 9B 00 - - .dw -17,0,155 - 1826 D2:2815 E3 38 FE - .db -29,56,-2 - 1827 D2:2818 EF FF 00 00 + 1826 D2:2831 E3 38 FE - .db -29,56,-2 + 1827 D2:2834 EF FF 00 00 9C 00 - - .dw -17,0,156 - 1828 D2:281E E3 38 01 - .db -29,56,1 - 1829 D2:2821 01 00 00 00 + 1828 D2:283A E3 38 01 - .db -29,56,1 + 1829 D2:283D 01 00 00 00 A3 00 - - .dw 1,0,163 - 1830 D2:2827 E4 C7 FF - .db -28,-57,-1 - 1831 D2:282A 22 00 02 00 + 1830 D2:2843 E4 C7 FF - .db -28,-57,-1 + 1831 D2:2846 22 00 02 00 84 00 - - .dw 34,2,132 - 1832 D2:2830 C1 00 FB - .db -63,0,-5 - 1833 D2:2833 0F 00 02 00 + 1832 D2:284C C1 00 FB - .db -63,0,-5 + 1833 D2:284F 0F 00 02 00 9E 00 - - .dw 15,2,158 - 1834 D2:2839 06 37 E1 - .db 6,55,-31 - 1835 D2:283C 20 00 03 00 + 1834 D2:2855 06 37 E1 - .db 6,55,-31 + 1835 D2:2858 20 00 03 00 73 00 - - .dw 32,3,115 - 1836 D2:2842 CD 25 06 - .db -51,37,6 - 1837 D2:2845 24 00 03 00 + 1836 D2:285E CD 25 06 - .db -51,37,6 + 1837 D2:2861 24 00 03 00 7C 00 - - .dw 36,3,124 - 1838 D2:284B 14 2D 27 - .db 20,45,39 - 1839 D2:284E EE FF 04 00 + 1838 D2:2867 14 2D 27 - .db 20,45,39 + 1839 D2:286A EE FF 04 00 70 00 - - .dw -18,4,112 - 1840 D2:2854 C2 00 0C - .db -62,0,12 - 1841 D2:2857 05 00 04 00 + 1840 D2:2870 C2 00 0C - .db -62,0,12 + 1841 D2:2873 05 00 04 00 70 00 - - .dw 5,4,112 - 1842 D2:285D 33 18 1C - .db 51,24,28 - 1843 D2:2860 EA FF 05 00 + 1842 D2:2879 33 18 1C - .db 51,24,28 + 1843 D2:287C EA FF 05 00 7F 00 - - .dw -22,5,127 - 1844 D2:2866 1B 20 D1 - .db 27,32,-47 - 1845 D2:2869 0F 00 06 00 + 1844 D2:2882 1B 20 D1 - .db 27,32,-47 + 1845 D2:2885 0F 00 06 00 74 00 - - .dw 15,6,116 - 1846 D2:286F D4 F4 2B - .db -44,-12,43 - 1847 D2:2872 18 00 06 00 + 1846 D2:288B D4 F4 2B - .db -44,-12,43 + 1847 D2:288E 18 00 06 00 95 00 - - .dw 24,6,149 - 1848 D2:2878 1B DF D2 - .db 27,-33,-46 - 1849 D2:287B 19 00 07 00 + 1848 D2:2894 1B DF D2 - .db 27,-33,-46 + 1849 D2:2897 19 00 07 00 76 00 - - .dw 25,7,118 - 1850 D2:2881 CF 0E 26 - .db -49,14,38 - 1851 D2:2884 14 00 07 00 + 1850 D2:289D CF 0E 26 - .db -49,14,38 + 1851 D2:28A0 14 00 07 00 78 00 - - .dw 20,7,120 - 1852 D2:288A CD DB 09 - .db -51,-37,9 - 1853 D2:288D 1B 00 07 00 + 1852 D2:28A6 CD DB 09 - .db -51,-37,9 + 1853 D2:28A9 1B 00 07 00 88 00 - - .dw 27,7,136 - 1854 D2:2893 0C C3 F5 - .db 12,-61,-11 - 1855 D2:2896 1C 00 08 00 + 1854 D2:28AF 0C C3 F5 - .db 12,-61,-11 + 1855 D2:28B2 1C 00 08 00 7C 00 - - .dw 28,8,124 - 1856 D2:289C F7 CA E0 - .db -9,-54,-32 - 1857 D2:289F EF FF 08 00 + 1856 D2:28B8 F7 CA E0 - .db -9,-54,-32 + 1857 D2:28BB EF FF 08 00 A2 00 - - .dw -17,8,162 - 1858 D2:28A5 D4 25 E6 - .db -44,37,-26 - 1859 D2:28A8 01 00 0B 00 + 1858 D2:28C1 D4 25 E6 - .db -44,37,-26 + 1859 D2:28C4 01 00 0B 00 75 00 - - .dw 1,11,117 - 1860 D2:28AE 09 CF D9 - .db 9,-49,-39 - 1861 D2:28B1 F5 FF 0B 00 + 1860 D2:28CA 09 CF D9 - .db 9,-49,-39 + 1861 D2:28CD F5 FF 0B 00 9A 00 - - .dw -11,11,154 - 1862 D2:28B7 2E 28 11 - .db 46,40,17 - 1863 D2:28BA EE FF 0D 00 + 1862 D2:28D3 2E 28 11 - .db 46,40,17 + 1863 D2:28D6 EE FF 0D 00 83 00 - - .dw -18,13,131 - 1864 D2:28C0 0F C3 FD - .db 15,-61,-3 - 1865 D2:28C3 0A 00 0D 00 + 1864 D2:28DC 0F C3 FD - .db 15,-61,-3 + 1865 D2:28DF 0A 00 0D 00 9C 00 - - .dw 10,13,156 - 1866 D2:28C9 31 EA 22 - .db 49,-22,34 - 1867 D2:28CC FF FF 0E 00 + 1866 D2:28E5 31 EA 22 - .db 49,-22,34 + 1867 D2:28E8 FF FF 0E 00 88 00 - - .dw -1,14,136 - 1868 D2:28D2 F5 D8 D0 - .db -11,-40,-48 - 1869 D2:28D5 F0 FF 0E 00 + 1868 D2:28EE F5 D8 D0 - .db -11,-40,-48 + 1869 D2:28F1 F0 FF 0E 00 86 00 - - .dw -16,14,134 - 1870 D2:28DB F4 29 D1 - .db -12,41,-47 - 1871 D2:28DE 06 00 0E 00 + 1870 D2:28F7 F4 29 D1 - .db -12,41,-47 + 1871 D2:28FA 06 00 0E 00 88 00 - - .dw 6,14,136 - 1872 D2:28E4 0D 3E FE - .db 13,62,-2 - 1873 D2:28E7 F1 FF 0E 00 + 1872 D2:2900 0D 3E FE - .db 13,62,-2 + 1873 D2:2903 F1 FF 0E 00 8A 00 - - .dw -15,14,138 - 1874 D2:28ED 31 16 22 - .db 49,22,34 - 1875 D2:28F0 EF FF 0E 00 + 1874 D2:2909 31 16 22 - .db 49,22,34 + 1875 D2:290C EF FF 0E 00 8F 00 - - .dw -17,14,143 - 1876 D2:28F6 38 1D FD - .db 56,29,-3 - 1877 D2:28F9 F1 FF 10 00 + 1876 D2:2912 38 1D FD - .db 56,29,-3 + 1877 D2:2915 F1 FF 10 00 9B 00 - - .dw -15,16,155 - 1878 D2:28FF 18 18 CB - .db 24,24,-53 - 1879 D2:2902 0C 00 12 00 + 1878 D2:291B 18 18 CB - .db 24,24,-53 + 1879 D2:291E 0C 00 12 00 89 00 - - .dw 12,18,137 - 1880 D2:2908 38 E3 FD - .db 56,-29,-3 - 1881 D2:290B F6 FF 12 00 + 1880 D2:2924 38 E3 FD - .db 56,-29,-3 + 1881 D2:2927 F6 FF 12 00 91 00 - - .dw -10,18,145 - 1882 D2:2911 18 E8 CB - .db 24,-24,-53 - 1883 D2:2914 - - - - TRIDATA: - 1884 D2:2914 00 82 02 - .dl 164352 - 1885 D2:2917 10 01 00 20 + 1882 D2:292D 18 E8 CB - .db 24,-24,-53 + 1883 D2:2930 - - - - TRIDATA: + 1884 D2:2930 00 82 02 - .dl 164352 + 1885 D2:2933 10 01 00 20 00 00 40 00 00 - - - .f 17,2,4 Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\XML.ez80" - 1886 D2:2920 00 - - - .db 0 - 1887 D2:2921 D4 78 - - .db 212,120 - 1888 D2:2923 EB 78 - - .db 235,120 - 1889 D2:2925 EB 7F - - .db 235,127 - 1890 D2:2927 10 01 00 40 + 1886 D2:293C 00 - - - .db 0 + 1887 D2:293D D4 78 - - .db 212,120 + 1888 D2:293F EB 78 - - .db 235,120 + 1889 D2:2941 EB 7F - - .db 235,127 + 1890 D2:2943 10 01 00 40 00 00 F0 00 00 - - - .f 17,4,15 - 1891 D2:2930 00 - - - .db 0 - 1892 D2:2931 D4 78 - - .db 212,120 - 1893 D2:2933 EB 7F - - .db 235,127 - 1894 D2:2935 D4 7F - - .db 212,127 - 1895 D2:2937 70 00 00 C0 + 1891 D2:294C 00 - - - .db 0 + 1892 D2:294D D4 78 - - .db 212,120 + 1893 D2:294F EB 7F - - .db 235,127 + 1894 D2:2951 D4 7F - - .db 212,127 + 1895 D2:2953 70 00 00 C0 00 00 A0 00 00 - - - .f 7,12,10 - 1896 D2:2940 00 - - - .db 0 - 1897 D2:2941 EF 88 - - .db 239,136 - 1898 D2:2943 E8 88 - - .db 232,136 - 1899 D2:2945 E8 8F - - .db 232,143 - 1900 D2:2947 70 00 00 A0 + 1896 D2:295C 00 - - - .db 0 + 1897 D2:295D EF 88 - - .db 239,136 + 1898 D2:295F E8 88 - - .db 232,136 + 1899 D2:2961 E8 8F - - .db 232,143 + 1900 D2:2963 70 00 00 A0 00 00 90 00 00 - - - .f 7,10,9 - 1901 D2:2950 00 - - - .db 0 - 1902 D2:2951 EF 88 - - .db 239,136 - 1903 D2:2953 E8 8F - - .db 232,143 - 1904 D2:2955 EF 8F - - .db 239,143 - 1905 D2:2957 00 01 00 30 + 1901 D2:296C 00 - - - .db 0 + 1902 D2:296D EF 88 - - .db 239,136 + 1903 D2:296F E8 8F - - .db 232,143 + 1904 D2:2971 EF 8F - - .db 239,143 + 1905 D2:2973 00 01 00 30 00 00 20 00 00 - - - .f 16,3,2 - 1906 D2:2960 00 - - - .db 0 - 1907 D2:2961 E4 2C - - .db 228,44 - 1908 D2:2963 FB 2C - - .db 251,44 - 1909 D2:2965 FB 3A - - .db 251,58 - 1910 D2:2967 00 01 00 20 + 1906 D2:297C 00 - - - .db 0 + 1907 D2:297D E4 2C - - .db 228,44 + 1908 D2:297F FB 2C - - .db 251,44 + 1909 D2:2981 FB 3A - - .db 251,58 + 1910 D2:2983 00 01 00 20 00 00 10 01 00 - - - .f 16,2,17 - 1911 D2:2970 00 - - - .db 0 - 1912 D2:2971 E4 2C - - .db 228,44 - 1913 D2:2973 FB 3A - - .db 251,58 - 1914 D2:2975 E4 3A - - .db 228,58 - 1915 D2:2977 B0 00 00 D0 + 1911 D2:298C 00 - - - .db 0 + 1912 D2:298D E4 2C - - .db 228,44 + 1913 D2:298F FB 3A - - .db 251,58 + 1914 D2:2991 E4 3A - - .db 228,58 + 1915 D2:2993 B0 00 00 D0 00 00 20 01 00 - - - .f 11,13,18 - 1916 D2:2980 00 - - - .db 0 - 1917 D2:2981 80 2C - - .db 128,44 - 1918 D2:2983 8A 2C - - .db 138,44 - 1919 D2:2985 8A 4A - - .db 138,74 - 1920 D2:2987 B0 00 00 20 + 1916 D2:299C 00 - - - .db 0 + 1917 D2:299D 80 2C - - .db 128,44 + 1918 D2:299F 8A 2C - - .db 138,44 + 1919 D2:29A1 8A 4A - - .db 138,74 + 1920 D2:29A3 B0 00 00 20 01 00 30 01 00 - - - .f 11,18,19 - 1921 D2:2990 00 - - - .db 0 - 1922 D2:2991 80 2C - - .db 128,44 - 1923 D2:2993 8A 4A - - .db 138,74 - 1924 D2:2995 80 4A - - .db 128,74 - 1925 D2:2997 80 00 00 B0 + 1921 D2:29AC 00 - - - .db 0 + 1922 D2:29AD 80 2C - - .db 128,44 + 1923 D2:29AF 8A 4A - - .db 138,74 + 1924 D2:29B1 80 4A - - .db 128,74 + 1925 D2:29B3 80 00 00 B0 00 00 C0 00 00 - - - .f 8,11,12 - 1926 D2:29A0 00 - - - .db 0 - 1927 D2:29A1 B8 5C - - .db 184,92 - 1928 D2:29A3 CB 5C - - .db 203,92 - 1929 D2:29A5 CB 67 - - .db 203,103 - 1930 D2:29A7 80 00 00 C0 + 1926 D2:29BC 00 - - - .db 0 + 1927 D2:29BD B8 5C - - .db 184,92 + 1928 D2:29BF CB 5C - - .db 203,92 + 1929 D2:29C1 CB 67 - - .db 203,103 + 1930 D2:29C3 80 00 00 C0 00 00 70 00 00 - - - .f 8,12,7 - 1931 D2:29B0 00 - - - .db 0 - 1932 D2:29B1 B8 5C - - .db 184,92 - 1933 D2:29B3 CB 67 - - .db 203,103 - 1934 D2:29B5 B8 67 - - .db 184,103 - 1935 D2:29B7 E0 00 00 60 + 1931 D2:29CC 00 - - - .db 0 + 1932 D2:29CD B8 5C - - .db 184,92 + 1933 D2:29CF CB 67 - - .db 203,103 + 1934 D2:29D1 B8 67 - - .db 184,103 + 1935 D2:29D3 E0 00 00 60 00 00 30 00 00 - - - .f 14,6,3 - 1936 D2:29C0 00 - - - .db 0 - 1937 D2:29C1 B7 5C - - .db 183,92 - 1938 D2:29C3 9C 5C - - .db 156,92 - 1939 D2:29C5 9C 67 - - .db 156,103 - 1940 D2:29C7 E0 00 00 30 + 1936 D2:29DC 00 - - - .db 0 + 1937 D2:29DD B7 5C - - .db 183,92 + 1938 D2:29DF 9C 5C - - .db 156,92 + 1939 D2:29E1 9C 67 - - .db 156,103 + 1940 D2:29E3 E0 00 00 30 00 00 00 01 00 - - - .f 14,3,16 - 1941 D2:29D0 00 - - - .db 0 - 1942 D2:29D1 B7 5C - - .db 183,92 - 1943 D2:29D3 9C 67 - - .db 156,103 - 1944 D2:29D5 B7 67 - - .db 183,103 - 1945 D2:29D7 50 00 00 D0 + 1941 D2:29EC 00 - - - .db 0 + 1942 D2:29ED B7 5C - - .db 183,92 + 1943 D2:29EF 9C 67 - - .db 156,103 + 1944 D2:29F1 B7 67 - - .db 183,103 + 1945 D2:29F3 50 00 00 D0 00 00 B0 00 00 - - - .f 5,13,11 - 1946 D2:29E0 00 - - - .db 0 - 1947 D2:29E1 EC 78 - - .db 236,120 - 1948 D2:29E3 FF 78 - - .db 255,120 - 1949 D2:29E5 FF 7F - - .db 255,127 - 1950 D2:29E7 50 00 00 B0 + 1946 D2:29FC 00 - - - .db 0 + 1947 D2:29FD EC 78 - - .db 236,120 + 1948 D2:29FF FF 78 - - .db 255,120 + 1949 D2:2A01 FF 7F - - .db 255,127 + 1950 D2:2A03 50 00 00 B0 00 00 80 00 00 - - - .f 5,11,8 - 1951 D2:29F0 00 - - - .db 0 - 1952 D2:29F1 EC 78 - - .db 236,120 - 1953 D2:29F3 FF 7F - - .db 255,127 - 1954 D2:29F5 EC 7F - - .db 236,127 - 1955 D2:29F7 F0 00 00 40 + 1951 D2:2A0C 00 - - - .db 0 + 1952 D2:2A0D EC 78 - - .db 236,120 + 1953 D2:2A0F FF 7F - - .db 255,127 + 1954 D2:2A11 EC 7F - - .db 236,127 + 1955 D2:2A13 F0 00 00 40 00 00 90 00 00 - - - .f 15,4,9 - 1956 D2:2A00 00 - - - .db 0 - 1957 D2:2A01 8E 9C - - .db 142,156 - 1958 D2:2A03 8C 9C - - .db 140,156 - 1959 D2:2A05 8C 9F - - .db 140,159 - 1960 D2:2A07 F0 00 00 90 + 1956 D2:2A1C 00 - - - .db 0 + 1957 D2:2A1D 8E 9C - - .db 142,156 + 1958 D2:2A1F 8C 9C - - .db 140,156 + 1959 D2:2A21 8C 9F - - .db 140,159 + 1960 D2:2A23 F0 00 00 90 00 00 A0 00 00 - - - .f 15,9,10 - 1961 D2:2A10 00 - - - .db 0 - 1962 D2:2A11 8E 9C - - .db 142,156 - 1963 D2:2A13 8C 9F - - .db 140,159 - 1964 D2:2A15 8E 9F - - .db 142,159 - 1965 D2:2A17 50 00 00 60 + 1961 D2:2A2C 00 - - - .db 0 + 1962 D2:2A2D 8E 9C - - .db 142,156 + 1963 D2:2A2F 8C 9F - - .db 140,159 + 1964 D2:2A31 8E 9F - - .db 142,159 + 1965 D2:2A33 50 00 00 60 00 00 E0 00 00 - - - .f 5,6,14 - 1966 D2:2A20 00 - - - .db 0 - 1967 D2:2A21 92 9C - - .db 146,156 - 1968 D2:2A23 90 9C - - .db 144,156 - 1969 D2:2A25 90 9F - - .db 144,159 - 1970 D2:2A27 50 00 00 E0 + 1966 D2:2A3C 00 - - - .db 0 + 1967 D2:2A3D 92 9C - - .db 146,156 + 1968 D2:2A3F 90 9C - - .db 144,156 + 1969 D2:2A41 90 9F - - .db 144,159 + 1970 D2:2A43 50 00 00 E0 00 00 D0 00 00 - - - .f 5,14,13 - 1971 D2:2A30 00 - - - .db 0 - 1972 D2:2A31 92 9C - - .db 146,156 - 1973 D2:2A33 90 9F - - .db 144,159 - 1974 D2:2A35 92 9F - - .db 146,159 - 1975 D2:2A37 50 00 00 80 + 1971 D2:2A4C 00 - - - .db 0 + 1972 D2:2A4D 92 9C - - .db 146,156 + 1973 D2:2A4F 90 9F - - .db 144,159 + 1974 D2:2A51 92 9F - - .db 146,159 + 1975 D2:2A53 50 00 00 80 00 00 00 00 00 - - - .f 5,8,0 - 1976 D2:2A40 00 - - - .db 0 - 1977 D2:2A41 8A 2C - - .db 138,44 - 1978 D2:2A43 80 2C - - .db 128,44 - 1979 D2:2A45 80 4A - - .db 128,74 - 1980 D2:2A47 50 00 00 00 + 1976 D2:2A5C 00 - - - .db 0 + 1977 D2:2A5D 8A 2C - - .db 138,44 + 1978 D2:2A5F 80 2C - - .db 128,44 + 1979 D2:2A61 80 4A - - .db 128,74 + 1980 D2:2A63 50 00 00 00 00 00 10 00 00 - - - .f 5,0,1 - 1981 D2:2A50 00 - - - .db 0 - 1982 D2:2A51 8A 2C - - .db 138,44 - 1983 D2:2A53 80 4A - - .db 128,74 - 1984 D2:2A55 8A 4A - - .db 138,74 - 1985 D2:2A57 30 01 00 10 + 1981 D2:2A6C 00 - - - .db 0 + 1982 D2:2A6D 8A 2C - - .db 138,44 + 1983 D2:2A6F 80 4A - - .db 128,74 + 1984 D2:2A71 8A 4A - - .db 138,74 + 1985 D2:2A73 30 01 00 10 01 00 F0 00 00 - - - .f 19,17,15 - 1986 D2:2A60 00 - - - .db 0 - 1987 D2:2A61 8E 9C - - .db 142,156 - 1988 D2:2A63 8C 9C - - .db 140,156 - 1989 D2:2A65 8C 9F - - .db 140,159 - 1990 D2:2A67 A0 00 00 C0 + 1986 D2:2A7C 00 - - - .db 0 + 1987 D2:2A7D 8E 9C - - .db 142,156 + 1988 D2:2A7F 8C 9C - - .db 140,156 + 1989 D2:2A81 8C 9F - - .db 140,159 + 1990 D2:2A83 A0 00 00 C0 00 00 30 01 00 - - - .f 10,12,19 - 1991 D2:2A70 00 - - - .db 0 - 1992 D2:2A71 90 97 - - .db 144,151 - 1993 D2:2A73 90 90 - - .db 144,144 - 1994 D2:2A75 96 90 - - .db 150,144 - 1995 D2:2A77 30 01 00 F0 + 1991 D2:2A8C 00 - - - .db 0 + 1992 D2:2A8D 90 97 - - .db 144,151 + 1993 D2:2A8F 90 90 - - .db 144,144 + 1994 D2:2A91 96 90 - - .db 150,144 + 1995 D2:2A93 30 01 00 F0 00 00 A0 00 00 - - - .f 19,15,10 - 1996 D2:2A80 00 - - - .db 0 - 1997 D2:2A81 96 90 - - .db 150,144 - 1998 D2:2A83 96 97 - - .db 150,151 - 1999 D2:2A85 90 97 - - .db 144,151 - 2000 D2:2A87 10 01 00 30 + 1996 D2:2A9C 00 - - - .db 0 + 1997 D2:2A9D 96 90 - - .db 150,144 + 1998 D2:2A9F 96 97 - - .db 150,151 + 1999 D2:2AA1 90 97 - - .db 144,151 + 2000 D2:2AA3 10 01 00 30 01 00 20 01 00 - - - .f 17,19,18 - 2001 D2:2A90 00 - - - .db 0 - 2002 D2:2A91 F3 67 - - .db 243,103 - 2003 D2:2A93 E8 67 - - .db 232,103 - 2004 D2:2A95 E8 5C - - .db 232,92 - 2005 D2:2A97 20 01 00 00 + 2001 D2:2AAC 00 - - - .db 0 + 2002 D2:2AAD F3 67 - - .db 243,103 + 2003 D2:2AAF E8 67 - - .db 232,103 + 2004 D2:2AB1 E8 5C - - .db 232,92 + 2005 D2:2AB3 20 01 00 00 01 00 10 01 00 - - - .f 18,16,17 - 2006 D2:2AA0 00 - - - .db 0 - 2007 D2:2AA1 E8 5C - - .db 232,92 - 2008 D2:2AA3 F3 5C - - .db 243,92 - 2009 D2:2AA5 F3 67 - - .db 243,103 - 2010 D2:2AA7 30 01 00 C0 + 2006 D2:2ABC 00 - - - .db 0 + 2007 D2:2ABD E8 5C - - .db 232,92 + 2008 D2:2ABF F3 5C - - .db 243,92 + 2009 D2:2AC1 F3 67 - - .db 243,103 + 2010 D2:2AC3 30 01 00 C0 00 00 B0 00 00 - - - .f 19,12,11 - 2011 D2:2AB0 00 - - - .db 0 - 2012 D2:2AB1 FF 67 - - .db 255,103 - 2013 D2:2AB3 F4 67 - - .db 244,103 - 2014 D2:2AB5 F4 5C - - .db 244,92 - 2015 D2:2AB7 E0 00 00 00 + 2011 D2:2ACC 00 - - - .db 0 + 2012 D2:2ACD FF 67 - - .db 255,103 + 2013 D2:2ACF F4 67 - - .db 244,103 + 2014 D2:2AD1 F4 5C - - .db 244,92 + 2015 D2:2AD3 E0 00 00 00 01 00 20 01 00 - - - .f 14,16,18 - 2016 D2:2AC0 00 - - - .db 0 - 2017 D2:2AC1 DB 5C - - .db 219,92 - 2018 D2:2AC3 DB 67 - - .db 219,103 - 2019 D2:2AC5 CC 67 - - .db 204,103 - 2020 D2:2AC7 20 01 00 D0 + 2016 D2:2ADC 00 - - - .db 0 + 2017 D2:2ADD DB 5C - - .db 219,92 + 2018 D2:2ADF DB 67 - - .db 219,103 + 2019 D2:2AE1 CC 67 - - .db 204,103 + 2020 D2:2AE3 20 01 00 D0 00 00 E0 00 00 - - - .f 18,13,14 - 2021 D2:2AD0 00 - - - .db 0 - 2022 D2:2AD1 CC 67 - - .db 204,103 - 2023 D2:2AD3 CC 5C - - .db 204,92 - 2024 D2:2AD5 DB 5C - - .db 219,92 - 2025 D2:2AD7 00 00 00 40 + 2021 D2:2AEC 00 - - - .db 0 + 2022 D2:2AED CC 67 - - .db 204,103 + 2023 D2:2AEF CC 5C - - .db 204,92 + 2024 D2:2AF1 DB 5C - - .db 219,92 + 2025 D2:2AF3 00 00 00 40 00 00 20 00 00 - - - .f 0,4,2 - 2026 D2:2AE0 00 - - - .db 0 - 2027 D2:2AE1 8E 9C - - .db 142,156 - 2028 D2:2AE3 8C 9C - - .db 140,156 - 2029 D2:2AE5 8C 9F - - .db 140,159 - 2030 D2:2AE7 00 00 00 70 + 2026 D2:2AFC 00 - - - .db 0 + 2027 D2:2AFD 8E 9C - - .db 142,156 + 2028 D2:2AFF 8C 9C - - .db 140,156 + 2029 D2:2B01 8C 9F - - .db 140,159 + 2030 D2:2B03 00 00 00 70 00 00 90 00 00 - - - .f 0,7,9 - 2031 D2:2AF0 00 - - - .db 0 - 2032 D2:2AF1 96 90 - - .db 150,144 - 2033 D2:2AF3 90 90 - - .db 144,144 - 2034 D2:2AF5 90 97 - - .db 144,151 - 2035 D2:2AF7 90 00 00 40 + 2031 D2:2B0C 00 - - - .db 0 + 2032 D2:2B0D 96 90 - - .db 150,144 + 2033 D2:2B0F 90 90 - - .db 144,144 + 2034 D2:2B11 90 97 - - .db 144,151 + 2035 D2:2B13 90 00 00 40 00 00 00 00 00 - - - .f 9,4,0 - 2036 D2:2B00 00 - - - .db 0 - 2037 D2:2B01 90 97 - - .db 144,151 - 2038 D2:2B03 96 97 - - .db 150,151 - 2039 D2:2B05 96 90 - - .db 150,144 - 2040 D2:2B07 10 00 00 00 + 2036 D2:2B1C 00 - - - .db 0 + 2037 D2:2B1D 90 97 - - .db 144,151 + 2038 D2:2B1F 96 97 - - .db 150,151 + 2039 D2:2B21 96 90 - - .db 150,144 + 2040 D2:2B23 10 00 00 00 00 00 20 00 00 - - - .f 1,0,2 - 2041 D2:2B10 00 - - - .db 0 - 2042 D2:2B11 E8 5C - - .db 232,92 - 2043 D2:2B13 E8 67 - - .db 232,103 - 2044 D2:2B15 F3 67 - - .db 243,103 - 2045 D2:2B17 20 00 00 30 + 2041 D2:2B2C 00 - - - .db 0 + 2042 D2:2B2D E8 5C - - .db 232,92 + 2043 D2:2B2F E8 67 - - .db 232,103 + 2044 D2:2B31 F3 67 - - .db 243,103 + 2045 D2:2B33 20 00 00 30 00 00 10 00 00 - - - .f 2,3,1 - 2046 D2:2B20 00 - - - .db 0 - 2047 D2:2B21 F3 67 - - .db 243,103 - 2048 D2:2B23 F3 5C - - .db 243,92 - 2049 D2:2B25 E8 5C - - .db 232,92 - 2050 D2:2B27 80 00 00 70 + 2046 D2:2B3C 00 - - - .db 0 + 2047 D2:2B3D F3 67 - - .db 243,103 + 2048 D2:2B3F F3 5C - - .db 243,92 + 2049 D2:2B41 E8 5C - - .db 232,92 + 2050 D2:2B43 80 00 00 70 00 00 00 00 00 - - - .f 8,7,0 - 2051 D2:2B30 00 - - - .db 0 - 2052 D2:2B31 F4 5C - - .db 244,92 - 2053 D2:2B33 F4 67 - - .db 244,103 - 2054 D2:2B35 FF 67 - - .db 255,103 - 2055 D2:2B37 10 00 00 30 + 2051 D2:2B4C 00 - - - .db 0 + 2052 D2:2B4D F4 5C - - .db 244,92 + 2053 D2:2B4F F4 67 - - .db 244,103 + 2054 D2:2B51 FF 67 - - .db 255,103 + 2055 D2:2B53 10 00 00 30 00 00 60 00 00 - - - .f 1,3,6 - 2056 D2:2B40 00 - - - .db 0 - 2057 D2:2B41 CC 67 - - .db 204,103 - 2058 D2:2B43 DB 67 - - .db 219,103 - 2059 D2:2B45 DB 5C - - .db 219,92 - 2060 D2:2B47 60 00 00 50 + 2056 D2:2B5C 00 - - - .db 0 + 2057 D2:2B5D CC 67 - - .db 204,103 + 2058 D2:2B5F DB 67 - - .db 219,103 + 2059 D2:2B61 DB 5C - - .db 219,92 + 2060 D2:2B63 60 00 00 50 00 00 10 00 00 - - - .f 6,5,1 - 2061 D2:2B50 00 - - - .db 0 - 2062 D2:2B51 DB 5C - - .db 219,92 - 2063 D2:2B53 CC 5C - - .db 204,92 - 2064 D2:2B55 CC 67 - - .db 204,103 - 2065 D2:2B57 D0 02 00 A0 + 2061 D2:2B6C 00 - - - .db 0 + 2062 D2:2B6D DB 5C - - .db 219,92 + 2063 D2:2B6F CC 5C - - .db 204,92 + 2064 D2:2B71 CC 67 - - .db 204,103 + 2065 D2:2B73 D0 02 00 A0 02 00 90 02 00 - - - .f 45,42,41 - 2066 D2:2B60 00 - - - .db 0 - 2067 D2:2B61 BB 2C - - .db 187,44 - 2068 D2:2B63 B4 2C - - .db 180,44 - 2069 D2:2B65 B4 3E - - .db 180,62 - 2070 D2:2B67 D0 02 00 90 + 2066 D2:2B7C 00 - - - .db 0 + 2067 D2:2B7D BB 2C - - .db 187,44 + 2068 D2:2B7F B4 2C - - .db 180,44 + 2069 D2:2B81 B4 3E - - .db 180,62 + 2070 D2:2B83 D0 02 00 90 02 00 C0 02 00 - - - .f 45,41,44 - 2071 D2:2B70 00 - - - .db 0 - 2072 D2:2B71 BB 2C - - .db 187,44 - 2073 D2:2B73 B4 3E - - .db 180,62 - 2074 D2:2B75 BB 3E - - .db 187,62 - 2075 D2:2B77 90 02 00 F0 + 2071 D2:2B8C 00 - - - .db 0 + 2072 D2:2B8D BB 2C - - .db 187,44 + 2073 D2:2B8F B4 3E - - .db 180,62 + 2074 D2:2B91 BB 3E - - .db 187,62 + 2075 D2:2B93 90 02 00 F0 01 00 10 02 00 - - - .f 41,31,33 - 2076 D2:2B80 00 - - - .db 0 - 2077 D2:2B81 96 9C - - .db 150,156 - 2078 D2:2B83 94 9C - - .db 148,156 - 2079 D2:2B85 94 9F - - .db 148,159 - 2080 D2:2B87 90 02 00 10 + 2076 D2:2B9C 00 - - - .db 0 + 2077 D2:2B9D 96 9C - - .db 150,156 + 2078 D2:2B9F 94 9C - - .db 148,156 + 2079 D2:2BA1 94 9F - - .db 148,159 + 2080 D2:2BA3 90 02 00 10 02 00 80 02 00 - - - .f 41,33,40 - 2081 D2:2B90 00 - - - .db 0 - 2082 D2:2B91 96 9C - - .db 150,156 - 2083 D2:2B93 94 9F - - .db 148,159 - 2084 D2:2B95 96 9F - - .db 150,159 - 2085 D2:2B97 A0 02 00 E0 + 2081 D2:2BAC 00 - - - .db 0 + 2082 D2:2BAD 96 9C - - .db 150,156 + 2083 D2:2BAF 94 9F - - .db 148,159 + 2084 D2:2BB1 96 9F - - .db 150,159 + 2085 D2:2BB3 A0 02 00 E0 01 00 F0 01 00 - - - .f 42,30,31 - 2086 D2:2BA0 00 - - - .db 0 - 2087 D2:2BA1 B2 2C - - .db 178,44 - 2088 D2:2BA3 AC 2C - - .db 172,44 - 2089 D2:2BA5 AC 3E - - .db 172,62 - 2090 D2:2BA7 A0 02 00 F0 + 2086 D2:2BBC 00 - - - .db 0 + 2087 D2:2BBD B2 2C - - .db 178,44 + 2088 D2:2BBF AC 2C - - .db 172,44 + 2089 D2:2BC1 AC 3E - - .db 172,62 + 2090 D2:2BC3 A0 02 00 F0 01 00 90 02 00 - - - .f 42,31,41 - 2091 D2:2BB0 00 - - - .db 0 - 2092 D2:2BB1 B2 2C - - .db 178,44 - 2093 D2:2BB3 AC 3E - - .db 172,62 - 2094 D2:2BB5 B2 3E - - .db 178,62 - 2095 D2:2BB7 E0 01 00 80 + 2091 D2:2BCC 00 - - - .db 0 + 2092 D2:2BCD B2 2C - - .db 178,44 + 2093 D2:2BCF AC 3E - - .db 172,62 + 2094 D2:2BD1 B2 3E - - .db 178,62 + 2095 D2:2BD3 E0 01 00 80 01 00 B0 01 00 - - - .f 30,24,27 - 2096 D2:2BC0 00 - - - .db 0 - 2097 D2:2BC1 C3 2C - - .db 195,44 - 2098 D2:2BC3 BC 2C - - .db 188,44 - 2099 D2:2BC5 BC 3E - - .db 188,62 - 2100 D2:2BC7 E0 01 00 B0 + 2096 D2:2BDC 00 - - - .db 0 + 2097 D2:2BDD C3 2C - - .db 195,44 + 2098 D2:2BDF BC 2C - - .db 188,44 + 2099 D2:2BE1 BC 3E - - .db 188,62 + 2100 D2:2BE3 E0 01 00 B0 01 00 F0 01 00 - - - .f 30,27,31 - 2101 D2:2BD0 00 - - - .db 0 - 2102 D2:2BD1 C3 2C - - .db 195,44 - 2103 D2:2BD3 BC 3E - - .db 188,62 - 2104 D2:2BD5 C3 3E - - .db 195,62 - 2105 D2:2BD7 A0 02 00 D0 + 2101 D2:2BEC 00 - - - .db 0 + 2102 D2:2BED C3 2C - - .db 195,44 + 2103 D2:2BEF BC 3E - - .db 188,62 + 2104 D2:2BF1 C3 3E - - .db 195,62 + 2105 D2:2BF3 A0 02 00 D0 02 00 30 02 00 - - - .f 42,45,35 - 2106 D2:2BE0 00 - - - .db 0 - 2107 D2:2BE1 82 9C - - .db 130,156 - 2108 D2:2BE3 80 9C - - .db 128,156 - 2109 D2:2BE5 80 9F - - .db 128,159 - 2110 D2:2BE7 A0 02 00 30 + 2106 D2:2BFC 00 - - - .db 0 + 2107 D2:2BFD 82 9C - - .db 130,156 + 2108 D2:2BFF 80 9C - - .db 128,156 + 2109 D2:2C01 80 9F - - .db 128,159 + 2110 D2:2C03 A0 02 00 30 02 00 80 01 00 - - - .f 42,35,24 - 2111 D2:2BF0 00 - - - .db 0 - 2112 D2:2BF1 82 9C - - .db 130,156 - 2113 D2:2BF3 80 9F - - .db 128,159 - 2114 D2:2BF5 82 9F - - .db 130,159 - 2115 D2:2BF7 50 01 00 40 + 2111 D2:2C0C 00 - - - .db 0 + 2112 D2:2C0D 82 9C - - .db 130,156 + 2113 D2:2C0F 80 9F - - .db 128,159 + 2114 D2:2C11 82 9F - - .db 130,159 + 2115 D2:2C13 50 01 00 40 01 00 60 01 00 - - - .f 21,20,22 - 2116 D2:2C00 00 - - - .db 0 - 2117 D2:2C01 AA 6C - - .db 170,108 - 2118 D2:2C03 A4 6C - - .db 164,108 - 2119 D2:2C05 A4 77 - - .db 164,119 - 2120 D2:2C07 50 01 00 60 + 2116 D2:2C1C 00 - - - .db 0 + 2117 D2:2C1D AA 6C - - .db 170,108 + 2118 D2:2C1F A4 6C - - .db 164,108 + 2119 D2:2C21 A4 77 - - .db 164,119 + 2120 D2:2C23 50 01 00 60 01 00 70 01 00 - - - .f 21,22,23 - 2121 D2:2C10 00 - - - .db 0 - 2122 D2:2C11 AA 6C - - .db 170,108 - 2123 D2:2C13 A4 77 - - .db 164,119 - 2124 D2:2C15 AA 77 - - .db 170,119 - 2125 D2:2C17 A0 01 00 90 + 2121 D2:2C2C 00 - - - .db 0 + 2122 D2:2C2D AA 6C - - .db 170,108 + 2123 D2:2C2F A4 77 - - .db 164,119 + 2124 D2:2C31 AA 77 - - .db 170,119 + 2125 D2:2C33 A0 01 00 90 01 00 40 01 00 - - - .f 26,25,20 - 2126 D2:2C20 00 - - - .db 0 - 2127 D2:2C21 A4 6C - - .db 164,108 - 2128 D2:2C23 AA 6C - - .db 170,108 - 2129 D2:2C25 AA 77 - - .db 170,119 - 2130 D2:2C27 A0 01 00 40 + 2126 D2:2C3C 00 - - - .db 0 + 2127 D2:2C3D A4 6C - - .db 164,108 + 2128 D2:2C3F AA 6C - - .db 170,108 + 2129 D2:2C41 AA 77 - - .db 170,119 + 2130 D2:2C43 A0 01 00 40 01 00 50 01 00 - - - .f 26,20,21 - 2131 D2:2C30 00 - - - .db 0 - 2132 D2:2C31 A4 6C - - .db 164,108 - 2133 D2:2C33 AA 77 - - .db 170,119 - 2134 D2:2C35 A4 77 - - .db 164,119 - 2135 D2:2C37 50 02 00 70 + 2131 D2:2C4C 00 - - - .db 0 + 2132 D2:2C4D A4 6C - - .db 164,108 + 2133 D2:2C4F AA 77 - - .db 170,119 + 2134 D2:2C51 A4 77 - - .db 164,119 + 2135 D2:2C53 50 02 00 70 02 00 80 02 00 - - - .f 37,39,40 - 2136 D2:2C40 00 - - - .db 0 - 2137 D2:2C41 96 9C - - .db 150,156 - 2138 D2:2C43 94 9C - - .db 148,156 - 2139 D2:2C45 94 9F - - .db 148,159 - 2140 D2:2C47 80 02 00 70 + 2136 D2:2C5C 00 - - - .db 0 + 2137 D2:2C5D 96 9C - - .db 150,156 + 2138 D2:2C5F 94 9C - - .db 148,156 + 2139 D2:2C61 94 9F - - .db 148,159 + 2140 D2:2C63 80 02 00 70 02 00 B0 02 00 - - - .f 40,39,43 - 2141 D2:2C50 00 - - - .db 0 - 2142 D2:2C51 96 9C - - .db 150,156 - 2143 D2:2C53 94 9C - - .db 148,156 - 2144 D2:2C55 94 9F - - .db 148,159 - 2145 D2:2C57 10 02 00 50 + 2141 D2:2C6C 00 - - - .db 0 + 2142 D2:2C6D 96 9C - - .db 150,156 + 2143 D2:2C6F 94 9C - - .db 148,156 + 2144 D2:2C71 94 9F - - .db 148,159 + 2145 D2:2C73 10 02 00 50 02 00 80 02 00 - - - .f 33,37,40 - 2146 D2:2C60 00 - - - .db 0 - 2147 D2:2C61 96 9C - - .db 150,156 - 2148 D2:2C63 94 9C - - .db 148,156 - 2149 D2:2C65 94 9F - - .db 148,159 - 2150 D2:2C67 00 02 00 20 + 2146 D2:2C7C 00 - - - .db 0 + 2147 D2:2C7D 96 9C - - .db 150,156 + 2148 D2:2C7F 94 9C - - .db 148,156 + 2149 D2:2C81 94 9F - - .db 148,159 + 2150 D2:2C83 00 02 00 20 02 00 10 02 00 - - - .f 32,34,33 - 2151 D2:2C70 00 - - - .db 0 - 2152 D2:2C71 96 9C - - .db 150,156 - 2153 D2:2C73 94 9C - - .db 148,156 - 2154 D2:2C75 94 9F - - .db 148,159 - 2155 D2:2C77 50 02 00 10 + 2151 D2:2C8C 00 - - - .db 0 + 2152 D2:2C8D 96 9C - - .db 150,156 + 2153 D2:2C8F 94 9C - - .db 148,156 + 2154 D2:2C91 94 9F - - .db 148,159 + 2155 D2:2C93 50 02 00 10 02 00 20 02 00 - - - .f 37,33,34 - 2156 D2:2C80 00 - - - .db 0 - 2157 D2:2C81 96 9C - - .db 150,156 - 2158 D2:2C83 94 9C - - .db 148,156 - 2159 D2:2C85 94 9F - - .db 148,159 - 2160 D2:2C87 70 02 00 20 + 2156 D2:2C9C 00 - - - .db 0 + 2157 D2:2C9D 96 9C - - .db 150,156 + 2158 D2:2C9F 94 9C - - .db 148,156 + 2159 D2:2CA1 94 9F - - .db 148,159 + 2160 D2:2CA3 70 02 00 20 02 00 60 02 00 - - - .f 39,34,38 - 2161 D2:2C90 00 - - - .db 0 - 2162 D2:2C91 96 9C - - .db 150,156 - 2163 D2:2C93 94 9C - - .db 148,156 - 2164 D2:2C95 94 9F - - .db 148,159 - 2165 D2:2C97 60 02 00 20 + 2161 D2:2CAC 00 - - - .db 0 + 2162 D2:2CAD 96 9C - - .db 150,156 + 2163 D2:2CAF 94 9C - - .db 148,156 + 2164 D2:2CB1 94 9F - - .db 148,159 + 2165 D2:2CB3 60 02 00 20 02 00 00 02 00 - - - .f 38,34,32 - 2166 D2:2CA0 00 - - - .db 0 - 2167 D2:2CA1 96 9C - - .db 150,156 - 2168 D2:2CA3 94 9C - - .db 148,156 - 2169 D2:2CA5 94 9F - - .db 148,159 - 2170 D2:2CA7 B0 02 00 70 + 2166 D2:2CBC 00 - - - .db 0 + 2167 D2:2CBD 96 9C - - .db 150,156 + 2168 D2:2CBF 94 9C - - .db 148,156 + 2169 D2:2CC1 94 9F - - .db 148,159 + 2170 D2:2CC3 B0 02 00 70 02 00 60 02 00 - - - .f 43,39,38 - 2171 D2:2CB0 00 - - - .db 0 - 2172 D2:2CB1 96 9C - - .db 150,156 - 2173 D2:2CB3 94 9C - - .db 148,156 - 2174 D2:2CB5 94 9F - - .db 148,159 - 2175 D2:2CB7 80 02 00 B0 + 2171 D2:2CCC 00 - - - .db 0 + 2172 D2:2CCD 96 9C - - .db 150,156 + 2173 D2:2CCF 94 9C - - .db 148,156 + 2174 D2:2CD1 94 9F - - .db 148,159 + 2175 D2:2CD3 80 02 00 B0 02 00 90 02 00 - - - .f 40,43,41 - 2176 D2:2CC0 00 - - - .db 0 - 2177 D2:2CC1 96 9C - - .db 150,156 - 2178 D2:2CC3 94 9C - - .db 148,156 - 2179 D2:2CC5 94 9F - - .db 148,159 - 2180 D2:2CC7 00 02 00 10 + 2176 D2:2CDC 00 - - - .db 0 + 2177 D2:2CDD 96 9C - - .db 150,156 + 2178 D2:2CDF 94 9C - - .db 148,156 + 2179 D2:2CE1 94 9F - - .db 148,159 + 2180 D2:2CE3 00 02 00 10 02 00 B0 01 00 - - - .f 32,33,27 - 2181 D2:2CD0 00 - - - .db 0 - 2182 D2:2CD1 96 9C - - .db 150,156 - 2183 D2:2CD3 94 9C - - .db 148,156 - 2184 D2:2CD5 94 9F - - .db 148,159 - 2185 D2:2CD7 40 02 00 60 + 2181 D2:2CEC 00 - - - .db 0 + 2182 D2:2CED 96 9C - - .db 150,156 + 2183 D2:2CEF 94 9C - - .db 148,156 + 2184 D2:2CF1 94 9F - - .db 148,159 + 2185 D2:2CF3 40 02 00 60 02 00 00 02 00 - - - .f 36,38,32 - 2186 D2:2CE0 00 - - - .db 0 - 2187 D2:2CE1 B2 6C - - .db 178,108 - 2188 D2:2CE3 B2 77 - - .db 178,119 - 2189 D2:2CE5 AC 77 - - .db 172,119 - 2190 D2:2CE7 B0 01 00 80 + 2186 D2:2CFC 00 - - - .db 0 + 2187 D2:2CFD B2 6C - - .db 178,108 + 2188 D2:2CFF B2 77 - - .db 178,119 + 2189 D2:2D01 AC 77 - - .db 172,119 + 2190 D2:2D03 B0 01 00 80 01 00 30 02 00 - - - .f 27,24,35 - 2191 D2:2CF0 00 - - - .db 0 - 2192 D2:2CF1 AA 3E - - .db 170,62 - 2193 D2:2CF3 AA 2C - - .db 170,44 - 2194 D2:2CF5 A4 2C - - .db 164,44 - 2195 D2:2CF7 C0 02 00 B0 + 2191 D2:2D0C 00 - - - .db 0 + 2192 D2:2D0D AA 3E - - .db 170,62 + 2193 D2:2D0F AA 2C - - .db 170,44 + 2194 D2:2D11 A4 2C - - .db 164,44 + 2195 D2:2D13 C0 02 00 B0 02 00 60 02 00 - - - .f 44,43,38 - 2196 D2:2D00 00 - - - .db 0 - 2197 D2:2D01 AC 6C - - .db 172,108 - 2198 D2:2D03 AC 77 - - .db 172,119 - 2199 D2:2D05 B2 77 - - .db 178,119 - 2200 D2:2D07 40 02 00 30 + 2196 D2:2D1C 00 - - - .db 0 + 2197 D2:2D1D AC 6C - - .db 172,108 + 2198 D2:2D1F AC 77 - - .db 172,119 + 2199 D2:2D21 B2 77 - - .db 178,119 + 2200 D2:2D23 40 02 00 30 02 00 D0 02 00 - - - .f 36,35,45 - 2201 D2:2D10 00 - - - .db 0 - 2202 D2:2D11 A2 3E - - .db 162,62 - 2203 D2:2D13 A2 2C - - .db 162,44 - 2204 D2:2D15 9C 2C - - .db 156,44 - 2205 D2:2D17 E0 01 00 A0 + 2201 D2:2D2C 00 - - - .db 0 + 2202 D2:2D2D A2 3E - - .db 162,62 + 2203 D2:2D2F A2 2C - - .db 162,44 + 2204 D2:2D31 9C 2C - - .db 156,44 + 2205 D2:2D33 E0 01 00 A0 02 00 80 01 00 - - - .f 30,42,24 - 2206 D2:2D20 00 - - - .db 0 - 2207 D2:2D21 82 9C - - .db 130,156 - 2208 D2:2D23 80 9C - - .db 128,156 - 2209 D2:2D25 80 9F - - .db 128,159 - 2210 D2:2D27 20 02 00 70 + 2206 D2:2D3C 00 - - - .db 0 + 2207 D2:2D3D 82 9C - - .db 130,156 + 2208 D2:2D3F 80 9C - - .db 128,156 + 2209 D2:2D41 80 9F - - .db 128,159 + 2210 D2:2D43 20 02 00 70 02 00 50 02 00 - - - .f 34,39,37 - 2211 D2:2D30 00 - - - .db 0 - 2212 D2:2D31 96 9C - - .db 150,156 - 2213 D2:2D33 94 9C - - .db 148,156 - 2214 D2:2D35 94 9F - - .db 148,159 - 2215 D2:2D37 60 01 00 C0 + 2211 D2:2D4C 00 - - - .db 0 + 2212 D2:2D4D 96 9C - - .db 150,156 + 2213 D2:2D4F 94 9C - - .db 148,156 + 2214 D2:2D51 94 9F - - .db 148,159 + 2215 D2:2D53 60 01 00 C0 01 00 D0 01 00 - - - .f 22,28,29 - 2216 D2:2D40 00 - - - .db 0 - 2217 D2:2D41 A4 6C - - .db 164,108 - 2218 D2:2D43 A4 77 - - .db 164,119 - 2219 D2:2D45 AA 77 - - .db 170,119 - 2220 D2:2D47 D0 01 00 70 + 2216 D2:2D5C 00 - - - .db 0 + 2217 D2:2D5D A4 6C - - .db 164,108 + 2218 D2:2D5F A4 77 - - .db 164,119 + 2219 D2:2D61 AA 77 - - .db 170,119 + 2220 D2:2D63 D0 01 00 70 01 00 60 01 00 - - - .f 29,23,22 - 2221 D2:2D50 00 - - - .db 0 - 2222 D2:2D51 AA 77 - - .db 170,119 - 2223 D2:2D53 AA 6C - - .db 170,108 - 2224 D2:2D55 A4 6C - - .db 164,108 - 2225 D2:2D57 70 01 00 D0 + 2221 D2:2D6C 00 - - - .db 0 + 2222 D2:2D6D AA 77 - - .db 170,119 + 2223 D2:2D6F AA 6C - - .db 170,108 + 2224 D2:2D71 A4 6C - - .db 164,108 + 2225 D2:2D73 70 01 00 D0 01 00 A0 01 00 - - - .f 23,29,26 - 2226 D2:2D60 00 - - - .db 0 - 2227 D2:2D61 A4 77 - - .db 164,119 - 2228 D2:2D63 AA 77 - - .db 170,119 - 2229 D2:2D65 AA 6C - - .db 170,108 - 2230 D2:2D67 A0 01 00 50 + 2226 D2:2D7C 00 - - - .db 0 + 2227 D2:2D7D A4 77 - - .db 164,119 + 2228 D2:2D7F AA 77 - - .db 170,119 + 2229 D2:2D81 AA 6C - - .db 170,108 + 2230 D2:2D83 A0 01 00 50 01 00 70 01 00 - - - .f 26,21,23 - 2231 D2:2D70 00 - - - .db 0 - 2232 D2:2D71 AA 6C - - .db 170,108 - 2233 D2:2D73 A4 6C - - .db 164,108 - 2234 D2:2D75 A4 77 - - .db 164,119 - 2235 D2:2D77 40 01 00 90 + 2231 D2:2D8C 00 - - - .db 0 + 2232 D2:2D8D AA 6C - - .db 170,108 + 2233 D2:2D8F A4 6C - - .db 164,108 + 2234 D2:2D91 A4 77 - - .db 164,119 + 2235 D2:2D93 40 01 00 90 01 00 C0 01 00 - - - .f 20,25,28 - 2236 D2:2D80 00 - - - .db 0 - 2237 D2:2D81 AA 6C - - .db 170,108 - 2238 D2:2D83 A4 6C - - .db 164,108 - 2239 D2:2D85 A4 77 - - .db 164,119 - 2240 D2:2D87 C0 01 00 60 + 2236 D2:2D9C 00 - - - .db 0 + 2237 D2:2D9D AA 6C - - .db 170,108 + 2238 D2:2D9F A4 6C - - .db 164,108 + 2239 D2:2DA1 A4 77 - - .db 164,119 + 2240 D2:2DA3 C0 01 00 60 01 00 40 01 00 - - - .f 28,22,20 - 2241 D2:2D90 00 - - - .db 0 - 2242 D2:2D91 A4 77 - - .db 164,119 - 2243 D2:2D93 AA 77 - - .db 170,119 - 2244 D2:2D95 AA 6C - - .db 170,108 - 2245 D2:2D97 00 02 00 B0 + 2241 D2:2DAC 00 - - - .db 0 + 2242 D2:2DAD A4 77 - - .db 164,119 + 2243 D2:2DAF AA 77 - - .db 170,119 + 2244 D2:2DB1 AA 6C - - .db 170,108 + 2245 D2:2DB3 00 02 00 B0 01 00 40 02 00 - - - .f 32,27,36 - 2246 D2:2DA0 00 - - - .db 0 - 2247 D2:2DA1 AC 77 - - .db 172,119 - 2248 D2:2DA3 AC 6C - - .db 172,108 - 2249 D2:2DA5 B2 6C - - .db 178,108 - 2250 D2:2DA7 D0 02 00 C0 + 2246 D2:2DBC 00 - - - .db 0 + 2247 D2:2DBD AC 77 - - .db 172,119 + 2248 D2:2DBF AC 6C - - .db 172,108 + 2249 D2:2DC1 B2 6C - - .db 178,108 + 2250 D2:2DC3 D0 02 00 C0 02 00 40 02 00 - - - .f 45,44,36 - 2251 D2:2DB0 00 - - - .db 0 - 2252 D2:2DB1 9C 2C - - .db 156,44 - 2253 D2:2DB3 9C 3E - - .db 156,62 - 2254 D2:2DB5 A2 3E - - .db 162,62 - 2255 D2:2DB7 60 02 00 40 + 2251 D2:2DCC 00 - - - .db 0 + 2252 D2:2DCD 9C 2C - - .db 156,44 + 2253 D2:2DCF 9C 3E - - .db 156,62 + 2254 D2:2DD1 A2 3E - - .db 162,62 + 2255 D2:2DD3 60 02 00 40 02 00 C0 02 00 - - - .f 38,36,44 - 2256 D2:2DC0 00 - - - .db 0 - 2257 D2:2DC1 B2 77 - - .db 178,119 - 2258 D2:2DC3 B2 6C - - .db 178,108 - 2259 D2:2DC5 AC 6C - - .db 172,108 - 2260 D2:2DC7 B0 02 00 C0 + 2256 D2:2DDC 00 - - - .db 0 + 2257 D2:2DDD B2 77 - - .db 178,119 + 2258 D2:2DDF B2 6C - - .db 178,108 + 2259 D2:2DE1 AC 6C - - .db 172,108 + 2260 D2:2DE3 B0 02 00 C0 02 00 90 02 00 - - - .f 43,44,41 - 2261 D2:2DD0 00 - - - .db 0 - 2262 D2:2DD1 96 9C - - .db 150,156 - 2263 D2:2DD3 94 9C - - .db 148,156 - 2264 D2:2DD5 94 9F - - .db 148,159 - 2265 D2:2DD7 10 02 00 F0 + 2261 D2:2DEC 00 - - - .db 0 + 2262 D2:2DED 96 9C - - .db 150,156 + 2263 D2:2DEF 94 9C - - .db 148,156 + 2264 D2:2DF1 94 9F - - .db 148,159 + 2265 D2:2DF3 10 02 00 F0 01 00 B0 01 00 - - - .f 33,31,27 - 2266 D2:2DE0 00 - - - .db 0 - 2267 D2:2DE1 96 9C - - .db 150,156 - 2268 D2:2DE3 94 9C - - .db 148,156 - 2269 D2:2DE5 94 9F - - .db 148,159 - 2270 D2:2DE7 30 02 00 40 + 2266 D2:2DFC 00 - - - .db 0 + 2267 D2:2DFD 96 9C - - .db 150,156 + 2268 D2:2DFF 94 9C - - .db 148,156 + 2269 D2:2E01 94 9F - - .db 148,159 + 2270 D2:2E03 30 02 00 40 02 00 B0 01 00 - - - .f 35,36,27 - 2271 D2:2DF0 00 - - - .db 0 - 2272 D2:2DF1 A4 2C - - .db 164,44 - 2273 D2:2DF3 A4 3E - - .db 164,62 - 2274 D2:2DF5 AA 3E - - .db 170,62 - 2275 D2:2DF7 D0 01 00 C0 + 2271 D2:2E0C 00 - - - .db 0 + 2272 D2:2E0D A4 2C - - .db 164,44 + 2273 D2:2E0F A4 3E - - .db 164,62 + 2274 D2:2E11 AA 3E - - .db 170,62 + 2275 D2:2E13 D0 01 00 C0 01 00 90 01 00 - - - .f 29,28,25 - 2276 D2:2E00 00 - - - .db 0 - 2277 D2:2E01 7F 2B - - .db 127,43 - 2278 D2:2E03 7F 2B - - .db 127,43 - 2279 D2:2E05 7F 2B - - .db 127,43 - 2280 D2:2E07 D0 01 00 90 + 2276 D2:2E1C 00 - - - .db 0 + 2277 D2:2E1D 7F 2B - - .db 127,43 + 2278 D2:2E1F 7F 2B - - .db 127,43 + 2279 D2:2E21 7F 2B - - .db 127,43 + 2280 D2:2E23 D0 01 00 90 01 00 A0 01 00 - - - .f 29,25,26 - 2281 D2:2E10 00 - - - .db 0 - 2282 D2:2E11 7F 2B - - .db 127,43 - 2283 D2:2E13 7F 2B - - .db 127,43 - 2284 D2:2E15 7F 2B - - .db 127,43 - 2285 D2:2E17 E0 03 00 60 + 2281 D2:2E2C 00 - - - .db 0 + 2282 D2:2E2D 7F 2B - - .db 127,43 + 2283 D2:2E2F 7F 2B - - .db 127,43 + 2284 D2:2E31 7F 2B - - .db 127,43 + 2285 D2:2E33 E0 03 00 60 03 00 00 03 00 - - - .f 62,54,48 - 2286 D2:2E20 00 - - - .db 0 - 2287 D2:2E21 A8 90 - - .db 168,144 - 2288 D2:2E23 AE 90 - - .db 174,144 - 2289 D2:2E25 AE 97 - - .db 174,151 - 2290 D2:2E27 E0 03 00 00 + 2286 D2:2E3C 00 - - - .db 0 + 2287 D2:2E3D A8 90 - - .db 168,144 + 2288 D2:2E3F AE 90 - - .db 174,144 + 2289 D2:2E41 AE 97 - - .db 174,151 + 2290 D2:2E43 E0 03 00 00 03 00 20 04 00 - - - .f 62,48,66 - 2291 D2:2E30 00 - - - .db 0 - 2292 D2:2E31 A8 90 - - .db 168,144 - 2293 D2:2E33 AE 97 - - .db 174,151 - 2294 D2:2E35 A8 97 - - .db 168,151 - 2295 D2:2E37 E0 03 00 10 + 2291 D2:2E4C 00 - - - .db 0 + 2292 D2:2E4D A8 90 - - .db 168,144 + 2293 D2:2E4F AE 97 - - .db 174,151 + 2294 D2:2E51 A8 97 - - .db 168,151 + 2295 D2:2E53 E0 03 00 10 04 00 B0 03 00 - - - .f 62,65,59 - 2296 D2:2E40 00 - - - .db 0 - 2297 D2:2E41 96 9C - - .db 150,156 - 2298 D2:2E43 94 9C - - .db 148,156 - 2299 D2:2E45 94 9F - - .db 148,159 - 2300 D2:2E47 E0 03 00 B0 + 2296 D2:2E5C 00 - - - .db 0 + 2297 D2:2E5D 96 9C - - .db 150,156 + 2298 D2:2E5F 94 9C - - .db 148,156 + 2299 D2:2E61 94 9F - - .db 148,159 + 2300 D2:2E63 E0 03 00 B0 03 00 30 03 00 - - - .f 62,59,51 - 2301 D2:2E50 00 - - - .db 0 - 2302 D2:2E51 96 9C - - .db 150,156 - 2303 D2:2E53 94 9F - - .db 148,159 - 2304 D2:2E55 96 9F - - .db 150,159 - 2305 D2:2E57 20 04 00 00 + 2301 D2:2E6C 00 - - - .db 0 + 2302 D2:2E6D 96 9C - - .db 150,156 + 2303 D2:2E6F 94 9F - - .db 148,159 + 2304 D2:2E71 96 9F - - .db 150,159 + 2305 D2:2E73 20 04 00 00 03 00 10 03 00 - - - .f 66,48,49 - 2306 D2:2E60 00 - - - .db 0 - 2307 D2:2E61 A8 90 - - .db 168,144 - 2308 D2:2E63 AE 90 - - .db 174,144 - 2309 D2:2E65 AE 97 - - .db 174,151 - 2310 D2:2E67 20 04 00 10 + 2306 D2:2E7C 00 - - - .db 0 + 2307 D2:2E7D A8 90 - - .db 168,144 + 2308 D2:2E7F AE 90 - - .db 174,144 + 2309 D2:2E81 AE 97 - - .db 174,151 + 2310 D2:2E83 20 04 00 10 03 00 F0 03 00 - - - .f 66,49,63 - 2311 D2:2E70 00 - - - .db 0 - 2312 D2:2E71 A8 90 - - .db 168,144 - 2313 D2:2E73 AE 97 - - .db 174,151 - 2314 D2:2E75 A8 97 - - .db 168,151 - 2315 D2:2E77 F0 03 00 10 + 2311 D2:2E8C 00 - - - .db 0 + 2312 D2:2E8D A8 90 - - .db 168,144 + 2313 D2:2E8F AE 97 - - .db 174,151 + 2314 D2:2E91 A8 97 - - .db 168,151 + 2315 D2:2E93 F0 03 00 10 03 00 50 03 00 - - - .f 63,49,53 - 2316 D2:2E80 00 - - - .db 0 - 2317 D2:2E81 8C 5C - - .db 140,92 - 2318 D2:2E83 92 5C - - .db 146,92 - 2319 D2:2E85 92 6B - - .db 146,107 - 2320 D2:2E87 F0 03 00 50 + 2316 D2:2E9C 00 - - - .db 0 + 2317 D2:2E9D 8C 5C - - .db 140,92 + 2318 D2:2E9F 92 5C - - .db 146,92 + 2319 D2:2EA1 92 6B - - .db 146,107 + 2320 D2:2EA3 F0 03 00 50 03 00 D0 03 00 - - - .f 63,53,61 - 2321 D2:2E90 00 - - - .db 0 - 2322 D2:2E91 8C 5C - - .db 140,92 - 2323 D2:2E93 92 6B - - .db 146,107 - 2324 D2:2E95 8C 6B - - .db 140,107 - 2325 D2:2E97 80 03 00 C0 + 2321 D2:2EAC 00 - - - .db 0 + 2322 D2:2EAD 8C 5C - - .db 140,92 + 2323 D2:2EAF 92 6B - - .db 146,107 + 2324 D2:2EB1 8C 6B - - .db 140,107 + 2325 D2:2EB3 80 03 00 C0 03 00 D0 03 00 - - - .f 56,60,61 - 2326 D2:2EA0 00 - - - .db 0 - 2327 D2:2EA1 98 9F - - .db 152,159 - 2328 D2:2EA3 98 9C - - .db 152,156 - 2329 D2:2EA5 9A 9C - - .db 154,156 - 2330 D2:2EA7 D0 03 00 C0 + 2326 D2:2EBC 00 - - - .db 0 + 2327 D2:2EBD 98 9F - - .db 152,159 + 2328 D2:2EBF 98 9C - - .db 152,156 + 2329 D2:2EC1 9A 9C - - .db 154,156 + 2330 D2:2EC3 D0 03 00 C0 03 00 00 04 00 - - - .f 61,60,64 - 2331 D2:2EB0 00 - - - .db 0 - 2332 D2:2EB1 98 9F - - .db 152,159 - 2333 D2:2EB3 98 9C - - .db 152,156 - 2334 D2:2EB5 9A 9C - - .db 154,156 - 2335 D2:2EB7 50 03 00 80 + 2331 D2:2ECC 00 - - - .db 0 + 2332 D2:2ECD 98 9F - - .db 152,159 + 2333 D2:2ECF 98 9C - - .db 152,156 + 2334 D2:2ED1 9A 9C - - .db 154,156 + 2335 D2:2ED3 50 03 00 80 03 00 D0 03 00 - - - .f 53,56,61 - 2336 D2:2EC0 00 - - - .db 0 - 2337 D2:2EC1 98 9F - - .db 152,159 - 2338 D2:2EC3 98 9C - - .db 152,156 - 2339 D2:2EC5 9A 9C - - .db 154,156 - 2340 D2:2EC7 20 03 00 40 + 2336 D2:2EDC 00 - - - .db 0 + 2337 D2:2EDD 98 9F - - .db 152,159 + 2338 D2:2EDF 98 9C - - .db 152,156 + 2339 D2:2EE1 9A 9C - - .db 154,156 + 2340 D2:2EE3 20 03 00 40 03 00 50 03 00 - - - .f 50,52,53 - 2341 D2:2ED0 00 - - - .db 0 - 2342 D2:2ED1 98 9F - - .db 152,159 - 2343 D2:2ED3 98 9C - - .db 152,156 - 2344 D2:2ED5 9A 9C - - .db 154,156 - 2345 D2:2ED7 80 03 00 50 + 2341 D2:2EEC 00 - - - .db 0 + 2342 D2:2EED 98 9F - - .db 152,159 + 2343 D2:2EEF 98 9C - - .db 152,156 + 2344 D2:2EF1 9A 9C - - .db 154,156 + 2345 D2:2EF3 80 03 00 50 03 00 40 03 00 - - - .f 56,53,52 - 2346 D2:2EE0 00 - - - .db 0 - 2347 D2:2EE1 98 9F - - .db 152,159 - 2348 D2:2EE3 98 9C - - .db 152,156 - 2349 D2:2EE5 9A 9C - - .db 154,156 - 2350 D2:2EE7 C0 03 00 40 + 2346 D2:2EFC 00 - - - .db 0 + 2347 D2:2EFD 98 9F - - .db 152,159 + 2348 D2:2EFF 98 9C - - .db 152,156 + 2349 D2:2F01 9A 9C - - .db 154,156 + 2350 D2:2F03 C0 03 00 40 03 00 A0 03 00 - - - .f 60,52,58 - 2351 D2:2EF0 00 - - - .db 0 - 2352 D2:2EF1 98 9F - - .db 152,159 - 2353 D2:2EF3 98 9C - - .db 152,156 - 2354 D2:2EF5 9A 9C - - .db 154,156 - 2355 D2:2EF7 A0 03 00 40 + 2351 D2:2F0C 00 - - - .db 0 + 2352 D2:2F0D 98 9F - - .db 152,159 + 2353 D2:2F0F 98 9C - - .db 152,156 + 2354 D2:2F11 9A 9C - - .db 154,156 + 2355 D2:2F13 A0 03 00 40 03 00 20 03 00 - - - .f 58,52,50 - 2356 D2:2F00 00 - - - .db 0 - 2357 D2:2F01 98 9F - - .db 152,159 - 2358 D2:2F03 98 9C - - .db 152,156 - 2359 D2:2F05 9A 9C - - .db 154,156 - 2360 D2:2F07 00 04 00 C0 + 2356 D2:2F1C 00 - - - .db 0 + 2357 D2:2F1D 98 9F - - .db 152,159 + 2358 D2:2F1F 98 9C - - .db 152,156 + 2359 D2:2F21 9A 9C - - .db 154,156 + 2360 D2:2F23 00 04 00 C0 03 00 A0 03 00 - - - .f 64,60,58 - 2361 D2:2F10 00 - - - .db 0 - 2362 D2:2F11 98 9F - - .db 152,159 - 2363 D2:2F13 98 9C - - .db 152,156 - 2364 D2:2F15 9A 9C - - .db 154,156 - 2365 D2:2F17 20 04 00 40 + 2361 D2:2F2C 00 - - - .db 0 + 2362 D2:2F2D 98 9F - - .db 152,159 + 2363 D2:2F2F 98 9C - - .db 152,156 + 2364 D2:2F31 9A 9C - - .db 154,156 + 2365 D2:2F33 20 04 00 40 04 00 10 04 00 - - - .f 66,68,65 - 2366 D2:2F20 00 - - - .db 0 - 2367 D2:2F21 A8 97 - - .db 168,151 - 2368 D2:2F23 AE 97 - - .db 174,151 - 2369 D2:2F25 AE 90 - - .db 174,144 - 2370 D2:2F27 10 04 00 E0 + 2366 D2:2F3C 00 - - - .db 0 + 2367 D2:2F3D A8 97 - - .db 168,151 + 2368 D2:2F3F AE 97 - - .db 174,151 + 2369 D2:2F41 AE 90 - - .db 174,144 + 2370 D2:2F43 10 04 00 E0 03 00 20 04 00 - - - .f 65,62,66 - 2371 D2:2F30 00 - - - .db 0 - 2372 D2:2F31 AE 90 - - .db 174,144 - 2373 D2:2F33 A8 90 - - .db 168,144 - 2374 D2:2F35 A8 97 - - .db 168,151 - 2375 D2:2F37 30 03 00 E0 + 2371 D2:2F4C 00 - - - .db 0 + 2372 D2:2F4D AE 90 - - .db 174,144 + 2373 D2:2F4F A8 90 - - .db 168,144 + 2374 D2:2F51 A8 97 - - .db 168,151 + 2375 D2:2F53 30 03 00 E0 02 00 00 03 00 - - - .f 51,46,48 - 2376 D2:2F40 00 - - - .db 0 - 2377 D2:2F41 A8 90 - - .db 168,144 - 2378 D2:2F43 A8 97 - - .db 168,151 - 2379 D2:2F45 AE 97 - - .db 174,151 - 2380 D2:2F47 00 03 00 60 + 2376 D2:2F5C 00 - - - .db 0 + 2377 D2:2F5D A8 90 - - .db 168,144 + 2378 D2:2F5F A8 97 - - .db 168,151 + 2379 D2:2F61 AE 97 - - .db 174,151 + 2380 D2:2F63 00 03 00 60 03 00 30 03 00 - - - .f 48,54,51 - 2381 D2:2F50 00 - - - .db 0 - 2382 D2:2F51 AE 97 - - .db 174,151 - 2383 D2:2F53 AE 90 - - .db 174,144 - 2384 D2:2F55 A8 90 - - .db 168,144 - 2385 D2:2F57 90 03 00 E0 + 2381 D2:2F6C 00 - - - .db 0 + 2382 D2:2F6D AE 97 - - .db 174,151 + 2383 D2:2F6F AE 90 - - .db 174,144 + 2384 D2:2F71 A8 90 - - .db 168,144 + 2385 D2:2F73 90 03 00 E0 02 00 30 03 00 - - - .f 57,46,51 - 2386 D2:2F60 00 - - - .db 0 - 2387 D2:2F61 A8 97 - - .db 168,151 - 2388 D2:2F63 AE 97 - - .db 174,151 - 2389 D2:2F65 AE 90 - - .db 174,144 - 2390 D2:2F67 30 03 00 B0 + 2386 D2:2F7C 00 - - - .db 0 + 2387 D2:2F7D A8 97 - - .db 168,151 + 2388 D2:2F7F AE 97 - - .db 174,151 + 2389 D2:2F81 AE 90 - - .db 174,144 + 2390 D2:2F83 30 03 00 B0 03 00 90 03 00 - - - .f 51,59,57 - 2391 D2:2F70 00 - - - .db 0 - 2392 D2:2F71 AE 90 - - .db 174,144 - 2393 D2:2F73 A8 90 - - .db 168,144 - 2394 D2:2F75 A8 97 - - .db 168,151 - 2395 D2:2F77 10 04 00 40 + 2391 D2:2F8C 00 - - - .db 0 + 2392 D2:2F8D AE 90 - - .db 174,144 + 2393 D2:2F8F A8 90 - - .db 168,144 + 2394 D2:2F91 A8 97 - - .db 168,151 + 2395 D2:2F93 10 04 00 40 04 00 90 03 00 - - - .f 65,68,57 - 2396 D2:2F80 00 - - - .db 0 - 2397 D2:2F81 AE 90 - - .db 174,144 - 2398 D2:2F83 AE 97 - - .db 174,151 - 2399 D2:2F85 A8 97 - - .db 168,151 - 2400 D2:2F87 90 03 00 B0 + 2396 D2:2F9C 00 - - - .db 0 + 2397 D2:2F9D AE 90 - - .db 174,144 + 2398 D2:2F9F AE 97 - - .db 174,151 + 2399 D2:2FA1 A8 97 - - .db 168,151 + 2400 D2:2FA3 90 03 00 B0 03 00 10 04 00 - - - .f 57,59,65 - 2401 D2:2F90 00 - - - .db 0 - 2402 D2:2F91 A8 97 - - .db 168,151 - 2403 D2:2F93 A8 90 - - .db 168,144 - 2404 D2:2F95 AE 90 - - .db 174,144 - 2405 D2:2F97 60 03 00 E0 + 2401 D2:2FAC 00 - - - .db 0 + 2402 D2:2FAD A8 97 - - .db 168,151 + 2403 D2:2FAF A8 90 - - .db 168,144 + 2404 D2:2FB1 AE 90 - - .db 174,144 + 2405 D2:2FB3 60 03 00 E0 03 00 30 03 00 - - - .f 54,62,51 - 2406 D2:2FA0 00 - - - .db 0 - 2407 D2:2FA1 96 9C - - .db 150,156 - 2408 D2:2FA3 94 9C - - .db 148,156 - 2409 D2:2FA5 94 9F - - .db 148,159 - 2410 D2:2FA7 40 03 00 C0 + 2406 D2:2FBC 00 - - - .db 0 + 2407 D2:2FBD 96 9C - - .db 150,156 + 2408 D2:2FBF 94 9C - - .db 148,156 + 2409 D2:2FC1 94 9F - - .db 148,159 + 2410 D2:2FC3 40 03 00 C0 03 00 80 03 00 - - - .f 52,60,56 - 2411 D2:2FB0 00 - - - .db 0 - 2412 D2:2FB1 98 9F - - .db 152,159 - 2413 D2:2FB3 98 9C - - .db 152,156 - 2414 D2:2FB5 9A 9C - - .db 154,156 - 2415 D2:2FB7 40 04 00 20 + 2411 D2:2FCC 00 - - - .db 0 + 2412 D2:2FCD 98 9F - - .db 152,159 + 2413 D2:2FCF 98 9C - - .db 152,156 + 2414 D2:2FD1 9A 9C - - .db 154,156 + 2415 D2:2FD3 40 04 00 20 04 00 F0 03 00 - - - .f 68,66,63 - 2416 D2:2FC0 00 - - - .db 0 - 2417 D2:2FC1 AE 90 - - .db 174,144 - 2418 D2:2FC3 A8 90 - - .db 168,144 - 2419 D2:2FC5 A8 97 - - .db 168,151 - 2420 D2:2FC7 F0 03 00 30 + 2416 D2:2FDC 00 - - - .db 0 + 2417 D2:2FDD AE 90 - - .db 174,144 + 2418 D2:2FDF A8 90 - - .db 168,144 + 2419 D2:2FE1 A8 97 - - .db 168,151 + 2420 D2:2FE3 F0 03 00 30 04 00 40 04 00 - - - .f 63,67,68 - 2421 D2:2FD0 00 - - - .db 0 - 2422 D2:2FD1 A8 97 - - .db 168,151 - 2423 D2:2FD3 AE 97 - - .db 174,151 - 2424 D2:2FD5 AE 90 - - .db 174,144 - 2425 D2:2FD7 E0 02 00 F0 + 2421 D2:2FEC 00 - - - .db 0 + 2422 D2:2FED A8 97 - - .db 168,151 + 2423 D2:2FEF AE 97 - - .db 174,151 + 2424 D2:2FF1 AE 90 - - .db 174,144 + 2425 D2:2FF3 E0 02 00 F0 02 00 10 03 00 - - - .f 46,47,49 - 2426 D2:2FE0 00 - - - .db 0 - 2427 D2:2FE1 A8 90 - - .db 168,144 - 2428 D2:2FE3 A8 97 - - .db 168,151 - 2429 D2:2FE5 AE 97 - - .db 174,151 - 2430 D2:2FE7 10 03 00 00 + 2426 D2:2FFC 00 - - - .db 0 + 2427 D2:2FFD A8 90 - - .db 168,144 + 2428 D2:2FFF A8 97 - - .db 168,151 + 2429 D2:3001 AE 97 - - .db 174,151 + 2430 D2:3003 10 03 00 00 03 00 E0 02 00 - - - .f 49,48,46 - 2431 D2:2FF0 00 - - - .db 0 - 2432 D2:2FF1 AE 97 - - .db 174,151 - 2433 D2:2FF3 AE 90 - - .db 174,144 - 2434 D2:2FF5 A8 90 - - .db 168,144 - 2435 D2:2FF7 90 03 00 70 + 2431 D2:300C 00 - - - .db 0 + 2432 D2:300D AE 97 - - .db 174,151 + 2433 D2:300F AE 90 - - .db 174,144 + 2434 D2:3011 A8 90 - - .db 168,144 + 2435 D2:3013 90 03 00 70 03 00 F0 02 00 - - - .f 57,55,47 - 2436 D2:3000 00 - - - .db 0 - 2437 D2:3001 A8 90 - - .db 168,144 - 2438 D2:3003 A8 97 - - .db 168,151 - 2439 D2:3005 AE 97 - - .db 174,151 - 2440 D2:3007 F0 02 00 E0 + 2436 D2:301C 00 - - - .db 0 + 2437 D2:301D A8 90 - - .db 168,144 + 2438 D2:301F A8 97 - - .db 168,151 + 2439 D2:3021 AE 97 - - .db 174,151 + 2440 D2:3023 F0 02 00 E0 02 00 90 03 00 - - - .f 47,46,57 - 2441 D2:3010 00 - - - .db 0 - 2442 D2:3011 AE 97 - - .db 174,151 - 2443 D2:3013 AE 90 - - .db 174,144 - 2444 D2:3015 A8 90 - - .db 168,144 - 2445 D2:3017 90 03 00 40 + 2441 D2:302C 00 - - - .db 0 + 2442 D2:302D AE 97 - - .db 174,151 + 2443 D2:302F AE 90 - - .db 174,144 + 2444 D2:3031 A8 90 - - .db 168,144 + 2445 D2:3033 90 03 00 40 04 00 30 04 00 - - - .f 57,68,67 - 2446 D2:3020 00 - - - .db 0 - 2447 D2:3021 AE 90 - - .db 174,144 - 2448 D2:3023 A8 90 - - .db 168,144 - 2449 D2:3025 A8 97 - - .db 168,151 - 2450 D2:3027 30 04 00 70 + 2446 D2:303C 00 - - - .db 0 + 2447 D2:303D AE 90 - - .db 174,144 + 2448 D2:303F A8 90 - - .db 168,144 + 2449 D2:3041 A8 97 - - .db 168,151 + 2450 D2:3043 30 04 00 70 03 00 90 03 00 - - - .f 67,55,57 - 2451 D2:3030 00 - - - .db 0 - 2452 D2:3031 A8 97 - - .db 168,151 - 2453 D2:3033 AE 97 - - .db 174,151 - 2454 D2:3035 AE 90 - - .db 174,144 - 2455 D2:3037 F0 03 00 D0 + 2451 D2:304C 00 - - - .db 0 + 2452 D2:304D A8 97 - - .db 168,151 + 2453 D2:304F AE 97 - - .db 174,151 + 2454 D2:3051 AE 90 - - .db 174,144 + 2455 D2:3053 F0 03 00 D0 03 00 00 04 00 - - - .f 63,61,64 - 2456 D2:3040 00 - - - .db 0 - 2457 D2:3041 F8 4C - - .db 248,76 - 2458 D2:3043 F8 5A - - .db 248,90 - 2459 D2:3045 FF 5A - - .db 255,90 - 2460 D2:3047 00 04 00 30 + 2456 D2:305C 00 - - - .db 0 + 2457 D2:305D F8 4C - - .db 248,76 + 2458 D2:305F F8 5A - - .db 248,90 + 2459 D2:3061 FF 5A - - .db 255,90 + 2460 D2:3063 00 04 00 30 04 00 F0 03 00 - - - .f 64,67,63 - 2461 D2:3050 00 - - - .db 0 - 2462 D2:3051 FF 5A - - .db 255,90 - 2463 D2:3053 FF 4C - - .db 255,76 - 2464 D2:3055 F8 4C - - .db 248,76 - 2465 D2:3057 10 03 00 F0 + 2461 D2:306C 00 - - - .db 0 + 2462 D2:306D FF 5A - - .db 255,90 + 2463 D2:306F FF 4C - - .db 255,76 + 2464 D2:3071 F8 4C - - .db 248,76 + 2465 D2:3073 10 03 00 F0 02 00 20 03 00 - - - .f 49,47,50 - 2466 D2:3060 00 - - - .db 0 - 2467 D2:3061 F8 4C - - .db 248,76 - 2468 D2:3063 FF 4C - - .db 255,76 - 2469 D2:3065 FF 5A - - .db 255,90 - 2470 D2:3067 20 03 00 50 + 2466 D2:307C 00 - - - .db 0 + 2467 D2:307D F8 4C - - .db 248,76 + 2468 D2:307F FF 4C - - .db 255,76 + 2469 D2:3081 FF 5A - - .db 255,90 + 2470 D2:3083 20 03 00 50 03 00 10 03 00 - - - .f 50,53,49 - 2471 D2:3070 00 - - - .db 0 - 2472 D2:3071 FF 5A - - .db 255,90 - 2473 D2:3073 F8 5A - - .db 248,90 - 2474 D2:3075 F8 4C - - .db 248,76 - 2475 D2:3077 70 03 00 A0 + 2471 D2:308C 00 - - - .db 0 + 2472 D2:308D FF 5A - - .db 255,90 + 2473 D2:308F F8 5A - - .db 248,90 + 2474 D2:3091 F8 4C - - .db 248,76 + 2475 D2:3093 70 03 00 A0 03 00 20 03 00 - - - .f 55,58,50 - 2476 D2:3080 00 - - - .db 0 - 2477 D2:3081 9A 5C - - .db 154,92 - 2478 D2:3083 9A 6B - - .db 154,107 - 2479 D2:3085 94 6B - - .db 148,107 - 2480 D2:3087 20 03 00 F0 + 2476 D2:309C 00 - - - .db 0 + 2477 D2:309D 9A 5C - - .db 154,92 + 2478 D2:309F 9A 6B - - .db 154,107 + 2479 D2:30A1 94 6B - - .db 148,107 + 2480 D2:30A3 20 03 00 F0 02 00 70 03 00 - - - .f 50,47,55 - 2481 D2:3090 00 - - - .db 0 - 2482 D2:3091 94 6B - - .db 148,107 - 2483 D2:3093 94 5C - - .db 148,92 - 2484 D2:3095 9A 5C - - .db 154,92 - 2485 D2:3097 70 03 00 30 + 2481 D2:30AC 00 - - - .db 0 + 2482 D2:30AD 94 6B - - .db 148,107 + 2483 D2:30AF 94 5C - - .db 148,92 + 2484 D2:30B1 9A 5C - - .db 154,92 + 2485 D2:30B3 70 03 00 30 04 00 00 04 00 - - - .f 55,67,64 - 2486 D2:30A0 00 - - - .db 0 - 2487 D2:30A1 9A 5C - - .db 154,92 - 2488 D2:30A3 94 5C - - .db 148,92 - 2489 D2:30A5 94 6B - - .db 148,107 - 2490 D2:30A7 00 04 00 A0 + 2486 D2:30BC 00 - - - .db 0 + 2487 D2:30BD 9A 5C - - .db 154,92 + 2488 D2:30BF 94 5C - - .db 148,92 + 2489 D2:30C1 94 6B - - .db 148,107 + 2490 D2:30C3 00 04 00 A0 03 00 70 03 00 - - - .f 64,58,55 - 2491 D2:30B0 00 - - - .db 0 - 2492 D2:30B1 94 6B - - .db 148,107 - 2493 D2:30B3 9A 6B - - .db 154,107 - 2494 D2:30B5 9A 5C - - .db 154,92 - 2495 D2:30B7 C0 04 00 D0 + 2491 D2:30CC 00 - - - .db 0 + 2492 D2:30CD 94 6B - - .db 148,107 + 2493 D2:30CF 9A 6B - - .db 154,107 + 2494 D2:30D1 9A 5C - - .db 154,92 + 2495 D2:30D3 C0 04 00 D0 04 00 E0 04 00 - - - .f 76,77,78 - 2496 D2:30C0 00 - - - .db 0 - 2497 D2:30C1 B7 90 - - .db 183,144 - 2498 D2:30C3 B0 90 - - .db 176,144 - 2499 D2:30C5 B0 97 - - .db 176,151 - 2500 D2:30C7 C0 04 00 E0 + 2496 D2:30DC 00 - - - .db 0 + 2497 D2:30DD B7 90 - - .db 183,144 + 2498 D2:30DF B0 90 - - .db 176,144 + 2499 D2:30E1 B0 97 - - .db 176,151 + 2500 D2:30E3 C0 04 00 E0 04 00 90 04 00 - - - .f 76,78,73 - 2501 D2:30D0 00 - - - .db 0 - 2502 D2:30D1 B7 90 - - .db 183,144 - 2503 D2:30D3 B0 97 - - .db 176,151 - 2504 D2:30D5 B7 97 - - .db 183,151 - 2505 D2:30D7 50 04 00 40 + 2501 D2:30EC 00 - - - .db 0 + 2502 D2:30ED B7 90 - - .db 183,144 + 2503 D2:30EF B0 97 - - .db 176,151 + 2504 D2:30F1 B7 97 - - .db 183,151 + 2505 D2:30F3 50 04 00 40 05 00 10 05 00 - - - .f 69,84,81 - 2506 D2:30E0 00 - - - .db 0 - 2507 D2:30E1 B4 6C - - .db 180,108 - 2508 D2:30E3 BB 6C - - .db 187,108 - 2509 D2:30E5 BB 77 - - .db 187,119 - 2510 D2:30E7 50 04 00 10 + 2506 D2:30FC 00 - - - .db 0 + 2507 D2:30FD B4 6C - - .db 180,108 + 2508 D2:30FF BB 6C - - .db 187,108 + 2509 D2:3101 BB 77 - - .db 187,119 + 2510 D2:3103 50 04 00 10 05 00 80 04 00 - - - .f 69,81,72 - 2511 D2:30F0 00 - - - .db 0 - 2512 D2:30F1 B4 6C - - .db 180,108 - 2513 D2:30F3 BB 77 - - .db 187,119 - 2514 D2:30F5 B4 77 - - .db 180,119 - 2515 D2:30F7 F0 04 00 A0 + 2511 D2:310C 00 - - - .db 0 + 2512 D2:310D B4 6C - - .db 180,108 + 2513 D2:310F BB 77 - - .db 187,119 + 2514 D2:3111 B4 77 - - .db 180,119 + 2515 D2:3113 F0 04 00 A0 04 00 B0 04 00 - - - .f 79,74,75 - 2516 D2:3100 00 - - - .db 0 - 2517 D2:3101 98 9C - - .db 152,156 - 2518 D2:3103 9A 9C - - .db 154,156 - 2519 D2:3105 9A 9F - - .db 154,159 - 2520 D2:3107 F0 04 00 B0 + 2516 D2:311C 00 - - - .db 0 + 2517 D2:311D 98 9C - - .db 152,156 + 2518 D2:311F 9A 9C - - .db 154,156 + 2519 D2:3121 9A 9F - - .db 154,159 + 2520 D2:3123 F0 04 00 B0 04 00 00 05 00 - - - .f 79,75,80 - 2521 D2:3110 00 - - - .db 0 - 2522 D2:3111 98 9C - - .db 152,156 - 2523 D2:3113 9A 9F - - .db 154,159 - 2524 D2:3115 98 9F - - .db 152,159 - 2525 D2:3117 20 05 00 70 + 2521 D2:312C 00 - - - .db 0 + 2522 D2:312D 98 9C - - .db 152,156 + 2523 D2:312F 9A 9F - - .db 154,159 + 2524 D2:3131 98 9F - - .db 152,159 + 2525 D2:3133 20 05 00 70 04 00 80 04 00 - - - .f 82,71,72 - 2526 D2:3120 00 - - - .db 0 - 2527 D2:3121 88 90 - - .db 136,144 - 2528 D2:3123 8E 90 - - .db 142,144 - 2529 D2:3125 8E 97 - - .db 142,151 - 2530 D2:3127 20 05 00 80 + 2526 D2:313C 00 - - - .db 0 + 2527 D2:313D 88 90 - - .db 136,144 + 2528 D2:313F 8E 90 - - .db 142,144 + 2529 D2:3141 8E 97 - - .db 142,151 + 2530 D2:3143 20 05 00 80 04 00 10 05 00 - - - .f 82,72,81 - 2531 D2:3130 00 - - - .db 0 - 2532 D2:3131 88 90 - - .db 136,144 - 2533 D2:3133 8E 97 - - .db 142,151 - 2534 D2:3135 88 97 - - .db 136,151 - 2535 D2:3137 00 05 00 B0 + 2531 D2:314C 00 - - - .db 0 + 2532 D2:314D 88 90 - - .db 136,144 + 2533 D2:314F 8E 97 - - .db 142,151 + 2534 D2:3151 88 97 - - .db 136,151 + 2535 D2:3153 00 05 00 B0 04 00 70 04 00 - - - .f 80,75,71 - 2536 D2:3140 00 - - - .db 0 - 2537 D2:3141 F4 98 - - .db 244,152 - 2538 D2:3143 FB 98 - - .db 251,152 - 2539 D2:3145 FB 9B - - .db 251,155 - 2540 D2:3147 00 05 00 70 + 2536 D2:315C 00 - - - .db 0 + 2537 D2:315D F4 98 - - .db 244,152 + 2538 D2:315F FB 98 - - .db 251,152 + 2539 D2:3161 FB 9B - - .db 251,155 + 2540 D2:3163 00 05 00 70 04 00 20 05 00 - - - .f 80,71,82 - 2541 D2:3150 00 - - - .db 0 - 2542 D2:3151 F4 98 - - .db 244,152 - 2543 D2:3153 FB 9B - - .db 251,155 - 2544 D2:3155 F4 9B - - .db 244,155 - 2545 D2:3157 A0 04 00 F0 + 2541 D2:316C 00 - - - .db 0 + 2542 D2:316D F4 98 - - .db 244,152 + 2543 D2:316F FB 9B - - .db 251,155 + 2544 D2:3171 F4 9B - - .db 244,155 + 2545 D2:3173 A0 04 00 F0 04 00 30 05 00 - - - .f 74,79,83 - 2546 D2:3160 00 - - - .db 0 - 2547 D2:3161 E7 88 - - .db 231,136 - 2548 D2:3163 E0 88 - - .db 224,136 - 2549 D2:3165 E0 8F - - .db 224,143 - 2550 D2:3167 A0 04 00 30 + 2546 D2:317C 00 - - - .db 0 + 2547 D2:317D E7 88 - - .db 231,136 + 2548 D2:317F E0 88 - - .db 224,136 + 2549 D2:3181 E0 8F - - .db 224,143 + 2550 D2:3183 A0 04 00 30 05 00 60 04 00 - - - .f 74,83,70 - 2551 D2:3170 00 - - - .db 0 - 2552 D2:3171 E7 88 - - .db 231,136 - 2553 D2:3173 E0 8F - - .db 224,143 - 2554 D2:3175 E7 8F - - .db 231,143 - 2555 D2:3177 60 04 00 30 + 2551 D2:318C 00 - - - .db 0 + 2552 D2:318D E7 88 - - .db 231,136 + 2553 D2:318F E0 8F - - .db 224,143 + 2554 D2:3191 E7 8F - - .db 231,143 + 2555 D2:3193 60 04 00 30 05 00 D0 04 00 - - - .f 70,83,77 - 2556 D2:3180 00 - - - .db 0 - 2557 D2:3181 BF 90 - - .db 191,144 - 2558 D2:3183 B8 90 - - .db 184,144 - 2559 D2:3185 B8 97 - - .db 184,151 - 2560 D2:3187 60 04 00 D0 + 2556 D2:319C 00 - - - .db 0 + 2557 D2:319D BF 90 - - .db 191,144 + 2558 D2:319F B8 90 - - .db 184,144 + 2559 D2:31A1 B8 97 - - .db 184,151 + 2560 D2:31A3 60 04 00 D0 04 00 C0 04 00 - - - .f 70,77,76 - 2561 D2:3190 00 - - - .db 0 - 2562 D2:3191 BF 90 - - .db 191,144 - 2563 D2:3193 B8 97 - - .db 184,151 - 2564 D2:3195 BF 97 - - .db 191,151 - 2565 D2:3197 80 04 00 70 + 2561 D2:31AC 00 - - - .db 0 + 2562 D2:31AD BF 90 - - .db 191,144 + 2563 D2:31AF B8 97 - - .db 184,151 + 2564 D2:31B1 BF 97 - - .db 191,151 + 2565 D2:31B3 80 04 00 70 04 00 60 04 00 - - - .f 72,71,70 - 2566 D2:31A0 00 - - - .db 0 - 2567 D2:31A1 8E 8F - - .db 142,143 - 2568 D2:31A3 8E 88 - - .db 142,136 - 2569 D2:31A5 80 88 - - .db 128,136 - 2570 D2:31A7 60 04 00 50 + 2566 D2:31BC 00 - - - .db 0 + 2567 D2:31BD 8E 8F - - .db 142,143 + 2568 D2:31BF 8E 88 - - .db 142,136 + 2569 D2:31C1 80 88 - - .db 128,136 + 2570 D2:31C3 60 04 00 50 04 00 80 04 00 - - - .f 70,69,72 - 2571 D2:31B0 00 - - - .db 0 - 2572 D2:31B1 80 88 - - .db 128,136 - 2573 D2:31B3 80 8F - - .db 128,143 - 2574 D2:31B5 8E 8F - - .db 142,143 - 2575 D2:31B7 30 05 00 20 + 2571 D2:31CC 00 - - - .db 0 + 2572 D2:31CD 80 88 - - .db 128,136 + 2573 D2:31CF 80 8F - - .db 128,143 + 2574 D2:31D1 8E 8F - - .db 142,143 + 2575 D2:31D3 30 05 00 20 05 00 10 05 00 - - - .f 83,82,81 - 2576 D2:31C0 00 - - - .db 0 - 2577 D2:31C1 80 88 - - .db 128,136 - 2578 D2:31C3 8E 88 - - .db 142,136 - 2579 D2:31C5 8E 8F - - .db 142,143 - 2580 D2:31C7 10 05 00 40 + 2576 D2:31DC 00 - - - .db 0 + 2577 D2:31DD 80 88 - - .db 128,136 + 2578 D2:31DF 8E 88 - - .db 142,136 + 2579 D2:31E1 8E 8F - - .db 142,143 + 2580 D2:31E3 10 05 00 40 05 00 30 05 00 - - - .f 81,84,83 - 2581 D2:31D0 00 - - - .db 0 - 2582 D2:31D1 8E 8F - - .db 142,143 - 2583 D2:31D3 80 8F - - .db 128,143 - 2584 D2:31D5 80 88 - - .db 128,136 - 2585 D2:31D7 A0 04 00 60 + 2581 D2:31EC 00 - - - .db 0 + 2582 D2:31ED 8E 8F - - .db 142,143 + 2583 D2:31EF 80 8F - - .db 128,143 + 2584 D2:31F1 80 88 - - .db 128,136 + 2585 D2:31F3 A0 04 00 60 04 00 70 04 00 - - - .f 74,70,71 - 2586 D2:31E0 00 - - - .db 0 - 2587 D2:31E1 90 88 - - .db 144,136 - 2588 D2:31E3 90 8F - - .db 144,143 - 2589 D2:31E5 9E 8F - - .db 158,143 - 2590 D2:31E7 70 04 00 B0 + 2586 D2:31FC 00 - - - .db 0 + 2587 D2:31FD 90 88 - - .db 144,136 + 2588 D2:31FF 90 8F - - .db 144,143 + 2589 D2:3201 9E 8F - - .db 158,143 + 2590 D2:3203 70 04 00 B0 04 00 A0 04 00 - - - .f 71,75,74 - 2591 D2:31F0 00 - - - .db 0 - 2592 D2:31F1 9E 8F - - .db 158,143 - 2593 D2:31F3 9E 88 - - .db 158,136 - 2594 D2:31F5 90 88 - - .db 144,136 - 2595 D2:31F7 00 05 00 20 + 2591 D2:320C 00 - - - .db 0 + 2592 D2:320D 9E 8F - - .db 158,143 + 2593 D2:320F 9E 88 - - .db 158,136 + 2594 D2:3211 90 88 - - .db 144,136 + 2595 D2:3213 00 05 00 20 05 00 30 05 00 - - - .f 80,82,83 - 2596 D2:3200 00 - - - .db 0 - 2597 D2:3201 9E 88 - - .db 158,136 - 2598 D2:3203 9E 8F - - .db 158,143 - 2599 D2:3205 90 8F - - .db 144,143 - 2600 D2:3207 30 05 00 F0 + 2596 D2:321C 00 - - - .db 0 + 2597 D2:321D 9E 88 - - .db 158,136 + 2598 D2:321F 9E 8F - - .db 158,143 + 2599 D2:3221 90 8F - - .db 144,143 + 2600 D2:3223 30 05 00 F0 04 00 00 05 00 - - - .f 83,79,80 - 2601 D2:3210 00 - - - .db 0 - 2602 D2:3211 90 8F - - .db 144,143 - 2603 D2:3213 90 88 - - .db 144,136 - 2604 D2:3215 9E 88 - - .db 158,136 - 2605 D2:3217 E0 04 00 40 + 2601 D2:322C 00 - - - .db 0 + 2602 D2:322D 90 8F - - .db 144,143 + 2603 D2:322F 90 88 - - .db 144,136 + 2604 D2:3231 9E 88 - - .db 158,136 + 2605 D2:3233 E0 04 00 40 05 00 50 04 00 - - - .f 78,84,69 - 2606 D2:3220 00 - - - .db 0 - 2607 D2:3221 DF 88 - - .db 223,136 - 2608 D2:3223 DF 8F - - .db 223,143 - 2609 D2:3225 D8 8F - - .db 216,143 - 2610 D2:3227 50 04 00 90 + 2606 D2:323C 00 - - - .db 0 + 2607 D2:323D DF 88 - - .db 223,136 + 2608 D2:323F DF 8F - - .db 223,143 + 2609 D2:3241 D8 8F - - .db 216,143 + 2610 D2:3243 50 04 00 90 04 00 E0 04 00 - - - .f 69,73,78 - 2611 D2:3230 00 - - - .db 0 - 2612 D2:3231 D8 8F - - .db 216,143 - 2613 D2:3233 D8 88 - - .db 216,136 - 2614 D2:3235 DF 88 - - .db 223,136 - 2615 D2:3237 90 04 00 50 + 2611 D2:324C 00 - - - .db 0 + 2612 D2:324D D8 8F - - .db 216,143 + 2613 D2:324F D8 88 - - .db 216,136 + 2614 D2:3251 DF 88 - - .db 223,136 + 2615 D2:3253 90 04 00 50 04 00 60 04 00 - - - .f 73,69,70 - 2616 D2:3240 00 - - - .db 0 - 2617 D2:3241 F8 8F - - .db 248,143 - 2618 D2:3243 FF 8F - - .db 255,143 - 2619 D2:3245 FF 88 - - .db 255,136 - 2620 D2:3247 60 04 00 C0 + 2616 D2:325C 00 - - - .db 0 + 2617 D2:325D F8 8F - - .db 248,143 + 2618 D2:325F FF 8F - - .db 255,143 + 2619 D2:3261 FF 88 - - .db 255,136 + 2620 D2:3263 60 04 00 C0 04 00 90 04 00 - - - .f 70,76,73 - 2621 D2:3250 00 - - - .db 0 - 2622 D2:3251 FF 88 - - .db 255,136 - 2623 D2:3253 F8 88 - - .db 248,136 - 2624 D2:3255 F8 8F - - .db 248,143 - 2625 D2:3257 D0 04 00 30 + 2621 D2:326C 00 - - - .db 0 + 2622 D2:326D FF 88 - - .db 255,136 + 2623 D2:326F F8 88 - - .db 248,136 + 2624 D2:3271 F8 8F - - .db 248,143 + 2625 D2:3273 D0 04 00 30 05 00 40 05 00 - - - .f 77,83,84 - 2626 D2:3260 00 - - - .db 0 - 2627 D2:3261 F8 88 - - .db 248,136 - 2628 D2:3263 FF 88 - - .db 255,136 - 2629 D2:3265 FF 8F - - .db 255,143 - 2630 D2:3267 40 05 00 E0 + 2626 D2:327C 00 - - - .db 0 + 2627 D2:327D F8 88 - - .db 248,136 + 2628 D2:327F FF 88 - - .db 255,136 + 2629 D2:3281 FF 8F - - .db 255,143 + 2630 D2:3283 40 05 00 E0 04 00 D0 04 00 - - - .f 84,78,77 - 2631 D2:3270 00 - - - .db 0 - 2632 D2:3271 FF 8F - - .db 255,143 - 2633 D2:3273 F8 8F - - .db 248,143 - 2634 D2:3275 F8 88 - - .db 248,136 - 2635 D2:3277 90 05 00 50 + 2631 D2:328C 00 - - - .db 0 + 2632 D2:328D FF 8F - - .db 255,143 + 2633 D2:328F F8 8F - - .db 248,143 + 2634 D2:3291 F8 88 - - .db 248,136 + 2635 D2:3293 90 05 00 50 05 00 60 05 00 - - - .f 89,85,86 - 2636 D2:3280 00 - - - .db 0 - 2637 D2:3281 B4 2C - - .db 180,44 - 2638 D2:3283 BB 2C - - .db 187,44 - 2639 D2:3285 BB 3E - - .db 187,62 - 2640 D2:3287 90 05 00 60 + 2636 D2:329C 00 - - - .db 0 + 2637 D2:329D B4 2C - - .db 180,44 + 2638 D2:329F BB 2C - - .db 187,44 + 2639 D2:32A1 BB 3E - - .db 187,62 + 2640 D2:32A3 90 05 00 60 05 00 80 05 00 - - - .f 89,86,88 - 2641 D2:3290 00 - - - .db 0 - 2642 D2:3291 B4 2C - - .db 180,44 - 2643 D2:3293 BB 3E - - .db 187,62 - 2644 D2:3295 B4 3E - - .db 180,62 - 2645 D2:3297 80 05 00 A0 + 2641 D2:32AC 00 - - - .db 0 + 2642 D2:32AD B4 2C - - .db 180,44 + 2643 D2:32AF BB 3E - - .db 187,62 + 2644 D2:32B1 B4 3E - - .db 180,62 + 2645 D2:32B3 80 05 00 A0 05 00 10 06 00 - - - .f 88,90,97 - 2646 D2:32A0 00 - - - .db 0 - 2647 D2:32A1 96 9C - - .db 150,156 - 2648 D2:32A3 94 9C - - .db 148,156 - 2649 D2:32A5 94 9F - - .db 148,159 - 2650 D2:32A7 80 05 00 10 + 2646 D2:32BC 00 - - - .db 0 + 2647 D2:32BD 96 9C - - .db 150,156 + 2648 D2:32BF 94 9C - - .db 148,156 + 2649 D2:32C1 94 9F - - .db 148,159 + 2650 D2:32C3 80 05 00 10 06 00 30 06 00 - - - .f 88,97,99 - 2651 D2:32B0 00 - - - .db 0 - 2652 D2:32B1 96 9C - - .db 150,156 - 2653 D2:32B3 94 9F - - .db 148,159 - 2654 D2:32B5 96 9F - - .db 150,159 - 2655 D2:32B7 40 06 00 90 + 2651 D2:32CC 00 - - - .db 0 + 2652 D2:32CD 96 9C - - .db 150,156 + 2653 D2:32CF 94 9F - - .db 148,159 + 2654 D2:32D1 96 9F - - .db 150,159 + 2655 D2:32D3 40 06 00 90 05 00 80 05 00 - - - .f 100,89,88 - 2656 D2:32C0 00 - - - .db 0 - 2657 D2:32C1 AC 2C - - .db 172,44 - 2658 D2:32C3 B2 2C - - .db 178,44 - 2659 D2:32C5 B2 3E - - .db 178,62 - 2660 D2:32C7 40 06 00 80 + 2656 D2:32DC 00 - - - .db 0 + 2657 D2:32DD AC 2C - - .db 172,44 + 2658 D2:32DF B2 2C - - .db 178,44 + 2659 D2:32E1 B2 3E - - .db 178,62 + 2660 D2:32E3 40 06 00 80 05 00 30 06 00 - - - .f 100,88,99 - 2661 D2:32D0 00 - - - .db 0 - 2662 D2:32D1 AC 2C - - .db 172,44 - 2663 D2:32D3 B2 3E - - .db 178,62 - 2664 D2:32D5 AC 3E - - .db 172,62 - 2665 D2:32D7 A0 06 00 40 + 2661 D2:32EC 00 - - - .db 0 + 2662 D2:32ED AC 2C - - .db 172,44 + 2663 D2:32EF B2 3E - - .db 178,62 + 2664 D2:32F1 AC 3E - - .db 172,62 + 2665 D2:32F3 A0 06 00 40 06 00 30 06 00 - - - .f 106,100,99 - 2666 D2:32E0 00 - - - .db 0 - 2667 D2:32E1 BC 2C - - .db 188,44 - 2668 D2:32E3 C3 2C - - .db 195,44 - 2669 D2:32E5 C3 3E - - .db 195,62 - 2670 D2:32E7 A0 06 00 30 + 2666 D2:32FC 00 - - - .db 0 + 2667 D2:32FD BC 2C - - .db 188,44 + 2668 D2:32FF C3 2C - - .db 195,44 + 2669 D2:3301 C3 3E - - .db 195,62 + 2670 D2:3303 A0 06 00 30 06 00 60 06 00 - - - .f 106,99,102 - 2671 D2:32F0 00 - - - .db 0 - 2672 D2:32F1 BC 2C - - .db 188,44 - 2673 D2:32F3 C3 3E - - .db 195,62 - 2674 D2:32F5 BC 3E - - .db 188,62 - 2675 D2:32F7 A0 06 00 50 + 2671 D2:330C 00 - - - .db 0 + 2672 D2:330D BC 2C - - .db 188,44 + 2673 D2:330F C3 3E - - .db 195,62 + 2674 D2:3311 BC 3E - - .db 188,62 + 2675 D2:3313 A0 06 00 50 05 00 90 05 00 - - - .f 106,85,89 - 2676 D2:3300 00 - - - .db 0 - 2677 D2:3301 82 9C - - .db 130,156 - 2678 D2:3303 80 9C - - .db 128,156 - 2679 D2:3305 80 9F - - .db 128,159 - 2680 D2:3307 A0 06 00 90 + 2676 D2:331C 00 - - - .db 0 + 2677 D2:331D 82 9C - - .db 130,156 + 2678 D2:331F 80 9C - - .db 128,156 + 2679 D2:3321 80 9F - - .db 128,159 + 2680 D2:3323 A0 06 00 90 05 00 40 06 00 - - - .f 106,89,100 - 2681 D2:3310 00 - - - .db 0 - 2682 D2:3311 82 9C - - .db 130,156 - 2683 D2:3313 80 9F - - .db 128,159 - 2684 D2:3315 82 9F - - .db 130,159 - 2685 D2:3317 E0 06 00 D0 + 2681 D2:332C 00 - - - .db 0 + 2682 D2:332D 82 9C - - .db 130,156 + 2683 D2:332F 80 9F - - .db 128,159 + 2684 D2:3331 82 9F - - .db 130,159 + 2685 D2:3333 E0 06 00 D0 06 00 B0 06 00 - - - .f 110,109,107 - 2686 D2:3320 00 - - - .db 0 - 2687 D2:3321 A4 6C - - .db 164,108 - 2688 D2:3323 AA 6C - - .db 170,108 - 2689 D2:3325 AA 77 - - .db 170,119 - 2690 D2:3327 E0 06 00 B0 + 2686 D2:333C 00 - - - .db 0 + 2687 D2:333D A4 6C - - .db 164,108 + 2688 D2:333F AA 6C - - .db 170,108 + 2689 D2:3341 AA 77 - - .db 170,119 + 2690 D2:3343 E0 06 00 B0 06 00 C0 06 00 - - - .f 110,107,108 - 2691 D2:3330 00 - - - .db 0 - 2692 D2:3331 A4 6C - - .db 164,108 - 2693 D2:3333 AA 77 - - .db 170,119 - 2694 D2:3335 A4 77 - - .db 164,119 - 2695 D2:3337 80 06 00 D0 + 2691 D2:334C 00 - - - .db 0 + 2692 D2:334D A4 6C - - .db 164,108 + 2693 D2:334F AA 77 - - .db 170,119 + 2694 D2:3351 A4 77 - - .db 164,119 + 2695 D2:3353 80 06 00 D0 06 00 E0 06 00 - - - .f 104,109,110 - 2696 D2:3340 00 - - - .db 0 - 2697 D2:3341 A4 6C - - .db 164,108 - 2698 D2:3343 AA 6C - - .db 170,108 - 2699 D2:3345 AA 77 - - .db 170,119 - 2700 D2:3347 80 06 00 E0 + 2696 D2:335C 00 - - - .db 0 + 2697 D2:335D A4 6C - - .db 164,108 + 2698 D2:335F AA 6C - - .db 170,108 + 2699 D2:3361 AA 77 - - .db 170,119 + 2700 D2:3363 80 06 00 E0 06 00 90 06 00 - - - .f 104,110,105 - 2701 D2:3350 00 - - - .db 0 - 2702 D2:3351 A4 6C - - .db 164,108 - 2703 D2:3353 AA 77 - - .db 170,119 - 2704 D2:3355 A4 77 - - .db 164,119 - 2705 D2:3357 C0 05 00 A0 + 2701 D2:336C 00 - - - .db 0 + 2702 D2:336D A4 6C - - .db 164,108 + 2703 D2:336F AA 77 - - .db 170,119 + 2704 D2:3371 A4 77 - - .db 164,119 + 2705 D2:3373 C0 05 00 A0 05 00 B0 05 00 - - - .f 92,90,91 - 2706 D2:3360 00 - - - .db 0 - 2707 D2:3361 96 9C - - .db 150,156 - 2708 D2:3363 94 9C - - .db 148,156 - 2709 D2:3365 94 9F - - .db 148,159 - 2710 D2:3367 A0 05 00 70 + 2706 D2:337C 00 - - - .db 0 + 2707 D2:337D 96 9C - - .db 150,156 + 2708 D2:337F 94 9C - - .db 148,156 + 2709 D2:3381 94 9F - - .db 148,159 + 2710 D2:3383 A0 05 00 70 05 00 B0 05 00 - - - .f 90,87,91 - 2711 D2:3370 00 - - - .db 0 - 2712 D2:3371 96 9C - - .db 150,156 - 2713 D2:3373 94 9C - - .db 148,156 - 2714 D2:3375 94 9F - - .db 148,159 - 2715 D2:3377 10 06 00 A0 + 2711 D2:338C 00 - - - .db 0 + 2712 D2:338D 96 9C - - .db 150,156 + 2713 D2:338F 94 9C - - .db 148,156 + 2714 D2:3391 94 9F - - .db 148,159 + 2715 D2:3393 10 06 00 A0 05 00 C0 05 00 - - - .f 97,90,92 - 2716 D2:3380 00 - - - .db 0 - 2717 D2:3381 96 9C - - .db 150,156 - 2718 D2:3383 94 9C - - .db 148,156 - 2719 D2:3385 94 9F - - .db 148,159 - 2720 D2:3387 20 06 00 10 + 2716 D2:339C 00 - - - .db 0 + 2717 D2:339D 96 9C - - .db 150,156 + 2718 D2:339F 94 9C - - .db 148,156 + 2719 D2:33A1 94 9F - - .db 148,159 + 2720 D2:33A3 20 06 00 10 06 00 00 06 00 - - - .f 98,97,96 - 2721 D2:3390 00 - - - .db 0 - 2722 D2:3391 96 9C - - .db 150,156 - 2723 D2:3393 94 9C - - .db 148,156 - 2724 D2:3395 94 9F - - .db 148,159 - 2725 D2:3397 C0 05 00 00 + 2721 D2:33AC 00 - - - .db 0 + 2722 D2:33AD 96 9C - - .db 150,156 + 2723 D2:33AF 94 9C - - .db 148,156 + 2724 D2:33B1 94 9F - - .db 148,159 + 2725 D2:33B3 C0 05 00 00 06 00 10 06 00 - - - .f 92,96,97 - 2726 D2:33A0 00 - - - .db 0 - 2727 D2:33A1 96 9C - - .db 150,156 - 2728 D2:33A3 94 9C - - .db 148,156 - 2729 D2:33A5 94 9F - - .db 148,159 - 2730 D2:33A7 B0 05 00 D0 + 2726 D2:33BC 00 - - - .db 0 + 2727 D2:33BD 96 9C - - .db 150,156 + 2728 D2:33BF 94 9C - - .db 148,156 + 2729 D2:33C1 94 9F - - .db 148,159 + 2730 D2:33C3 B0 05 00 D0 05 00 00 06 00 - - - .f 91,93,96 - 2731 D2:33B0 00 - - - .db 0 - 2732 D2:33B1 96 9C - - .db 150,156 - 2733 D2:33B3 94 9C - - .db 148,156 - 2734 D2:33B5 94 9F - - .db 148,159 - 2735 D2:33B7 D0 05 00 20 + 2731 D2:33CC 00 - - - .db 0 + 2732 D2:33CD 96 9C - - .db 150,156 + 2733 D2:33CF 94 9C - - .db 148,156 + 2734 D2:33D1 94 9F - - .db 148,159 + 2735 D2:33D3 D0 05 00 20 06 00 00 06 00 - - - .f 93,98,96 - 2736 D2:33C0 00 - - - .db 0 - 2737 D2:33C1 96 9C - - .db 150,156 - 2738 D2:33C3 94 9C - - .db 148,156 - 2739 D2:33C5 94 9F - - .db 148,159 - 2740 D2:33C7 70 05 00 D0 + 2736 D2:33DC 00 - - - .db 0 + 2737 D2:33DD 96 9C - - .db 150,156 + 2738 D2:33DF 94 9C - - .db 148,156 + 2739 D2:33E1 94 9F - - .db 148,159 + 2740 D2:33E3 70 05 00 D0 05 00 B0 05 00 - - - .f 87,93,91 - 2741 D2:33D0 00 - - - .db 0 - 2742 D2:33D1 96 9C - - .db 150,156 - 2743 D2:33D3 94 9C - - .db 148,156 - 2744 D2:33D5 94 9F - - .db 148,159 - 2745 D2:33D7 A0 05 00 80 + 2741 D2:33EC 00 - - - .db 0 + 2742 D2:33ED 96 9C - - .db 150,156 + 2743 D2:33EF 94 9C - - .db 148,156 + 2744 D2:33F1 94 9F - - .db 148,159 + 2745 D2:33F3 A0 05 00 80 05 00 70 05 00 - - - .f 90,88,87 - 2746 D2:33E0 00 - - - .db 0 - 2747 D2:33E1 96 9C - - .db 150,156 - 2748 D2:33E3 94 9C - - .db 148,156 - 2749 D2:33E5 94 9F - - .db 148,159 - 2750 D2:33E7 20 06 00 60 + 2746 D2:33FC 00 - - - .db 0 + 2747 D2:33FD 96 9C - - .db 150,156 + 2748 D2:33FF 94 9C - - .db 148,156 + 2749 D2:3401 94 9F - - .db 148,159 + 2750 D2:3403 20 06 00 60 06 00 10 06 00 - - - .f 98,102,97 - 2751 D2:33F0 00 - - - .db 0 - 2752 D2:33F1 96 9C - - .db 150,156 - 2753 D2:33F3 94 9C - - .db 148,156 - 2754 D2:33F5 94 9F - - .db 148,159 - 2755 D2:33F7 20 06 00 D0 + 2751 D2:340C 00 - - - .db 0 + 2752 D2:340D 96 9C - - .db 150,156 + 2753 D2:340F 94 9C - - .db 148,156 + 2754 D2:3411 94 9F - - .db 148,159 + 2755 D2:3413 20 06 00 D0 05 00 E0 05 00 - - - .f 98,93,94 - 2756 D2:3400 00 - - - .db 0 - 2757 D2:3401 AC 77 - - .db 172,119 - 2758 D2:3403 B2 77 - - .db 178,119 - 2759 D2:3405 B2 6C - - .db 178,108 - 2760 D2:3407 F0 05 00 A0 + 2756 D2:341C 00 - - - .db 0 + 2757 D2:341D AC 77 - - .db 172,119 + 2758 D2:341F B2 77 - - .db 178,119 + 2759 D2:3421 B2 6C - - .db 178,108 + 2760 D2:3423 F0 05 00 A0 06 00 60 06 00 - - - .f 95,106,102 - 2761 D2:3410 00 - - - .db 0 - 2762 D2:3411 A4 2C - - .db 164,44 - 2763 D2:3413 AA 2C - - .db 170,44 - 2764 D2:3415 AA 3E - - .db 170,62 - 2765 D2:3417 D0 05 00 70 + 2761 D2:342C 00 - - - .db 0 + 2762 D2:342D A4 2C - - .db 164,44 + 2763 D2:342F AA 2C - - .db 170,44 + 2764 D2:3431 AA 3E - - .db 170,62 + 2765 D2:3433 D0 05 00 70 05 00 60 05 00 - - - .f 93,87,86 - 2766 D2:3420 00 - - - .db 0 - 2767 D2:3421 B2 77 - - .db 178,119 - 2768 D2:3423 AC 77 - - .db 172,119 - 2769 D2:3425 AC 6C - - .db 172,108 - 2770 D2:3427 50 05 00 F0 + 2766 D2:343C 00 - - - .db 0 + 2767 D2:343D B2 77 - - .db 178,119 + 2768 D2:343F AC 77 - - .db 172,119 + 2769 D2:3441 AC 6C - - .db 172,108 + 2770 D2:3443 50 05 00 F0 05 00 E0 05 00 - - - .f 85,95,94 - 2771 D2:3430 00 - - - .db 0 - 2772 D2:3431 9C 2C - - .db 156,44 - 2773 D2:3433 A2 2C - - .db 162,44 - 2774 D2:3435 A2 3E - - .db 162,62 - 2775 D2:3437 F0 05 00 50 + 2771 D2:344C 00 - - - .db 0 + 2772 D2:344D 9C 2C - - .db 156,44 + 2773 D2:344F A2 2C - - .db 162,44 + 2774 D2:3451 A2 3E - - .db 162,62 + 2775 D2:3453 F0 05 00 50 05 00 A0 06 00 - - - .f 95,85,106 - 2776 D2:3440 00 - - - .db 0 - 2777 D2:3441 82 9C - - .db 130,156 - 2778 D2:3443 80 9C - - .db 128,156 - 2779 D2:3445 80 9F - - .db 128,159 - 2780 D2:3447 00 06 00 C0 + 2776 D2:345C 00 - - - .db 0 + 2777 D2:345D 82 9C - - .db 130,156 + 2778 D2:345F 80 9C - - .db 128,156 + 2779 D2:3461 80 9F - - .db 128,159 + 2780 D2:3463 00 06 00 C0 05 00 B0 05 00 - - - .f 96,92,91 - 2781 D2:3450 00 - - - .db 0 - 2782 D2:3451 96 9C - - .db 150,156 - 2783 D2:3453 94 9C - - .db 148,156 - 2784 D2:3455 94 9F - - .db 148,159 - 2785 D2:3457 50 06 00 70 + 2781 D2:346C 00 - - - .db 0 + 2782 D2:346D 96 9C - - .db 150,156 + 2783 D2:346F 94 9C - - .db 148,156 + 2784 D2:3471 94 9F - - .db 148,159 + 2785 D2:3473 50 06 00 70 06 00 C0 06 00 - - - .f 101,103,108 - 2786 D2:3460 00 - - - .db 0 - 2787 D2:3461 A4 77 - - .db 164,119 - 2788 D2:3463 A4 6C - - .db 164,108 - 2789 D2:3465 AA 6C - - .db 170,108 - 2790 D2:3467 C0 06 00 B0 + 2786 D2:347C 00 - - - .db 0 + 2787 D2:347D A4 77 - - .db 164,119 + 2788 D2:347F A4 6C - - .db 164,108 + 2789 D2:3481 AA 6C - - .db 170,108 + 2790 D2:3483 C0 06 00 B0 06 00 50 06 00 - - - .f 108,107,101 - 2791 D2:3470 00 - - - .db 0 - 2792 D2:3471 AA 6C - - .db 170,108 - 2793 D2:3473 AA 77 - - .db 170,119 - 2794 D2:3475 A4 77 - - .db 164,119 - 2795 D2:3477 80 06 00 50 + 2791 D2:348C 00 - - - .db 0 + 2792 D2:348D AA 6C - - .db 170,108 + 2793 D2:348F AA 77 - - .db 170,119 + 2794 D2:3491 A4 77 - - .db 164,119 + 2795 D2:3493 80 06 00 50 06 00 B0 06 00 - - - .f 104,101,107 - 2796 D2:3480 00 - - - .db 0 - 2797 D2:3481 AA 6C - - .db 170,108 - 2798 D2:3483 AA 77 - - .db 170,119 - 2799 D2:3485 A4 77 - - .db 164,119 - 2800 D2:3487 B0 06 00 D0 + 2796 D2:349C 00 - - - .db 0 + 2797 D2:349D AA 6C - - .db 170,108 + 2798 D2:349F AA 77 - - .db 170,119 + 2799 D2:34A1 A4 77 - - .db 164,119 + 2800 D2:34A3 B0 06 00 D0 06 00 80 06 00 - - - .f 107,109,104 - 2801 D2:3490 00 - - - .db 0 - 2802 D2:3491 A4 77 - - .db 164,119 - 2803 D2:3493 A4 6C - - .db 164,108 - 2804 D2:3495 AA 6C - - .db 170,108 - 2805 D2:3497 70 06 00 90 + 2801 D2:34AC 00 - - - .db 0 + 2802 D2:34AD A4 77 - - .db 164,119 + 2803 D2:34AF A4 6C - - .db 164,108 + 2804 D2:34B1 AA 6C - - .db 170,108 + 2805 D2:34B3 70 06 00 90 06 00 E0 06 00 - - - .f 103,105,110 - 2806 D2:34A0 00 - - - .db 0 - 2807 D2:34A1 A4 77 - - .db 164,119 - 2808 D2:34A3 A4 6C - - .db 164,108 - 2809 D2:34A5 AA 6C - - .db 170,108 - 2810 D2:34A7 E0 06 00 C0 + 2806 D2:34BC 00 - - - .db 0 + 2807 D2:34BD A4 77 - - .db 164,119 + 2808 D2:34BF A4 6C - - .db 164,108 + 2809 D2:34C1 AA 6C - - .db 170,108 + 2810 D2:34C3 E0 06 00 C0 06 00 70 06 00 - - - .f 110,108,103 - 2811 D2:34B0 00 - - - .db 0 - 2812 D2:34B1 AA 6C - - .db 170,108 - 2813 D2:34B3 AA 77 - - .db 170,119 - 2814 D2:34B5 A4 77 - - .db 164,119 - 2815 D2:34B7 E0 05 00 60 + 2811 D2:34CC 00 - - - .db 0 + 2812 D2:34CD AA 6C - - .db 170,108 + 2813 D2:34CF AA 77 - - .db 170,119 + 2814 D2:34D1 A4 77 - - .db 164,119 + 2815 D2:34D3 E0 05 00 60 06 00 20 06 00 - - - .f 94,102,98 - 2816 D2:34C0 00 - - - .db 0 - 2817 D2:34C1 B2 6C - - .db 178,108 - 2818 D2:34C3 AC 6C - - .db 172,108 - 2819 D2:34C5 AC 77 - - .db 172,119 - 2820 D2:34C7 E0 05 00 60 + 2816 D2:34DC 00 - - - .db 0 + 2817 D2:34DD B2 6C - - .db 178,108 + 2818 D2:34DF AC 6C - - .db 172,108 + 2819 D2:34E1 AC 77 - - .db 172,119 + 2820 D2:34E3 E0 05 00 60 05 00 50 05 00 - - - .f 94,86,85 - 2821 D2:34D0 00 - - - .db 0 - 2822 D2:34D1 A2 3E - - .db 162,62 - 2823 D2:34D3 9C 3E - - .db 156,62 - 2824 D2:34D5 9C 2C - - .db 156,44 - 2825 D2:34D7 60 05 00 E0 + 2821 D2:34EC 00 - - - .db 0 + 2822 D2:34ED A2 3E - - .db 162,62 + 2823 D2:34EF 9C 3E - - .db 156,62 + 2824 D2:34F1 9C 2C - - .db 156,44 + 2825 D2:34F3 60 05 00 E0 05 00 D0 05 00 - - - .f 86,94,93 - 2826 D2:34E0 00 - - - .db 0 - 2827 D2:34E1 AC 6C - - .db 172,108 - 2828 D2:34E3 B2 6C - - .db 178,108 - 2829 D2:34E5 B2 77 - - .db 178,119 - 2830 D2:34E7 70 05 00 80 + 2826 D2:34FC 00 - - - .db 0 + 2827 D2:34FD AC 6C - - .db 172,108 + 2828 D2:34FF B2 6C - - .db 178,108 + 2829 D2:3501 B2 77 - - .db 178,119 + 2830 D2:3503 70 05 00 80 05 00 60 05 00 - - - .f 87,88,86 - 2831 D2:34F0 00 - - - .db 0 - 2832 D2:34F1 96 9C - - .db 150,156 - 2833 D2:34F3 94 9C - - .db 148,156 - 2834 D2:34F5 94 9F - - .db 148,159 - 2835 D2:34F7 10 06 00 60 + 2831 D2:350C 00 - - - .db 0 + 2832 D2:350D 96 9C - - .db 150,156 + 2833 D2:350F 94 9C - - .db 148,156 + 2834 D2:3511 94 9F - - .db 148,159 + 2835 D2:3513 10 06 00 60 06 00 30 06 00 - - - .f 97,102,99 - 2836 D2:3500 00 - - - .db 0 - 2837 D2:3501 96 9C - - .db 150,156 - 2838 D2:3503 94 9C - - .db 148,156 - 2839 D2:3505 94 9F - - .db 148,159 - 2840 D2:3507 60 06 00 E0 + 2836 D2:351C 00 - - - .db 0 + 2837 D2:351D 96 9C - - .db 150,156 + 2838 D2:351F 94 9C - - .db 148,156 + 2839 D2:3521 94 9F - - .db 148,159 + 2840 D2:3523 60 06 00 E0 05 00 F0 05 00 - - - .f 102,94,95 - 2841 D2:3510 00 - - - .db 0 - 2842 D2:3511 AA 3E - - .db 170,62 - 2843 D2:3513 A4 3E - - .db 164,62 - 2844 D2:3515 A4 2C - - .db 164,44 - 2845 D2:3517 70 06 00 50 + 2841 D2:352C 00 - - - .db 0 + 2842 D2:352D AA 3E - - .db 170,62 + 2843 D2:352F A4 3E - - .db 164,62 + 2844 D2:3531 A4 2C - - .db 164,44 + 2845 D2:3533 70 06 00 50 06 00 80 06 00 - - - .f 103,101,104 - 2846 D2:3520 00 - - - .db 0 - 2847 D2:3521 7F 2B - - .db 127,43 - 2848 D2:3523 7F 2B - - .db 127,43 - 2849 D2:3525 7F 2B - - .db 127,43 - 2850 D2:3527 70 06 00 80 + 2846 D2:353C 00 - - - .db 0 + 2847 D2:353D 7F 2B - - .db 127,43 + 2848 D2:353F 7F 2B - - .db 127,43 + 2849 D2:3541 7F 2B - - .db 127,43 + 2850 D2:3543 70 06 00 80 06 00 90 06 00 - - - .f 103,104,105 - 2851 D2:3530 00 - - - .db 0 - 2852 D2:3531 7F 2B - - .db 127,43 - 2853 D2:3533 7F 2B - - .db 127,43 - 2854 D2:3535 7F 2B - - .db 127,43 - 2855 D2:3537 E0 07 00 60 + 2851 D2:354C 00 - - - .db 0 + 2852 D2:354D 7F 2B - - .db 127,43 + 2853 D2:354F 7F 2B - - .db 127,43 + 2854 D2:3551 7F 2B - - .db 127,43 + 2855 D2:3553 E0 07 00 60 07 00 10 07 00 - - - .f 126,118,113 - 2856 D2:3540 00 - - - .db 0 - 2857 D2:3541 A8 90 - - .db 168,144 - 2858 D2:3543 AE 90 - - .db 174,144 - 2859 D2:3545 AE 97 - - .db 174,151 - 2860 D2:3547 E0 07 00 10 + 2856 D2:355C 00 - - - .db 0 + 2857 D2:355D A8 90 - - .db 168,144 + 2858 D2:355F AE 90 - - .db 174,144 + 2859 D2:3561 AE 97 - - .db 174,151 + 2860 D2:3563 E0 07 00 10 07 00 30 08 00 - - - .f 126,113,131 - 2861 D2:3550 00 - - - .db 0 - 2862 D2:3551 A8 90 - - .db 168,144 - 2863 D2:3553 AE 97 - - .db 174,151 - 2864 D2:3555 A8 97 - - .db 168,151 - 2865 D2:3557 10 08 00 20 + 2861 D2:356C 00 - - - .db 0 + 2862 D2:356D A8 90 - - .db 168,144 + 2863 D2:356F AE 97 - - .db 174,151 + 2864 D2:3571 A8 97 - - .db 168,151 + 2865 D2:3573 10 08 00 20 07 00 60 07 00 - - - .f 129,114,118 - 2866 D2:3560 00 - - - .db 0 - 2867 D2:3561 96 9C - - .db 150,156 - 2868 D2:3563 94 9C - - .db 148,156 - 2869 D2:3565 94 9F - - .db 148,159 - 2870 D2:3567 10 08 00 60 + 2866 D2:357C 00 - - - .db 0 + 2867 D2:357D 96 9C - - .db 150,156 + 2868 D2:357F 94 9C - - .db 148,156 + 2869 D2:3581 94 9F - - .db 148,159 + 2870 D2:3583 10 08 00 60 07 00 E0 07 00 - - - .f 129,118,126 - 2871 D2:3570 00 - - - .db 0 - 2872 D2:3571 96 9C - - .db 150,156 - 2873 D2:3573 94 9F - - .db 148,159 - 2874 D2:3575 96 9F - - .db 150,159 - 2875 D2:3577 30 08 00 10 + 2871 D2:358C 00 - - - .db 0 + 2872 D2:358D 96 9C - - .db 150,156 + 2873 D2:358F 94 9F - - .db 148,159 + 2874 D2:3591 96 9F - - .db 150,159 + 2875 D2:3593 30 08 00 10 07 00 40 07 00 - - - .f 131,113,116 - 2876 D2:3580 00 - - - .db 0 - 2877 D2:3581 A8 90 - - .db 168,144 - 2878 D2:3583 AE 90 - - .db 174,144 - 2879 D2:3585 AE 97 - - .db 174,151 - 2880 D2:3587 30 08 00 40 + 2876 D2:359C 00 - - - .db 0 + 2877 D2:359D A8 90 - - .db 168,144 + 2878 D2:359F AE 90 - - .db 174,144 + 2879 D2:35A1 AE 97 - - .db 174,151 + 2880 D2:35A3 30 08 00 40 07 00 20 08 00 - - - .f 131,116,130 - 2881 D2:3590 00 - - - .db 0 - 2882 D2:3591 A8 90 - - .db 168,144 - 2883 D2:3593 AE 97 - - .db 174,151 - 2884 D2:3595 A8 97 - - .db 168,151 - 2885 D2:3597 20 08 00 40 + 2881 D2:35AC 00 - - - .db 0 + 2882 D2:35AD A8 90 - - .db 168,144 + 2883 D2:35AF AE 97 - - .db 174,151 + 2884 D2:35B1 A8 97 - - .db 168,151 + 2885 D2:35B3 20 08 00 40 07 00 50 07 00 - - - .f 130,116,117 - 2886 D2:35A0 00 - - - .db 0 - 2887 D2:35A1 8C 5C - - .db 140,92 - 2888 D2:35A3 92 5C - - .db 146,92 - 2889 D2:35A5 92 6B - - .db 146,107 - 2890 D2:35A7 20 08 00 50 + 2886 D2:35BC 00 - - - .db 0 + 2887 D2:35BD 8C 5C - - .db 140,92 + 2888 D2:35BF 92 5C - - .db 146,92 + 2889 D2:35C1 92 6B - - .db 146,107 + 2890 D2:35C3 20 08 00 50 07 00 D0 07 00 - - - .f 130,117,125 - 2891 D2:35B0 00 - - - .db 0 - 2892 D2:35B1 8C 5C - - .db 140,92 - 2893 D2:35B3 92 6B - - .db 146,107 - 2894 D2:35B5 8C 6B - - .db 140,107 - 2895 D2:35B7 A0 07 00 50 + 2891 D2:35CC 00 - - - .db 0 + 2892 D2:35CD 8C 5C - - .db 140,92 + 2893 D2:35CF 92 6B - - .db 146,107 + 2894 D2:35D1 8C 6B - - .db 140,107 + 2895 D2:35D3 A0 07 00 50 07 00 70 07 00 - - - .f 122,117,119 - 2896 D2:35C0 00 - - - .db 0 - 2897 D2:35C1 9A 9F - - .db 154,159 - 2898 D2:35C3 98 9F - - .db 152,159 - 2899 D2:35C5 98 9C - - .db 152,156 - 2900 D2:35C7 50 07 00 30 + 2896 D2:35DC 00 - - - .db 0 + 2897 D2:35DD 9A 9F - - .db 154,159 + 2898 D2:35DF 98 9F - - .db 152,159 + 2899 D2:35E1 98 9C - - .db 152,156 + 2900 D2:35E3 50 07 00 30 07 00 70 07 00 - - - .f 117,115,119 - 2901 D2:35D0 00 - - - .db 0 - 2902 D2:35D1 9A 9F - - .db 154,159 - 2903 D2:35D3 98 9F - - .db 152,159 - 2904 D2:35D5 98 9C - - .db 152,156 - 2905 D2:35D7 D0 07 00 50 + 2901 D2:35EC 00 - - - .db 0 + 2902 D2:35ED 9A 9F - - .db 154,159 + 2903 D2:35EF 98 9F - - .db 152,159 + 2904 D2:35F1 98 9C - - .db 152,156 + 2905 D2:35F3 D0 07 00 50 07 00 A0 07 00 - - - .f 125,117,122 - 2906 D2:35E0 00 - - - .db 0 - 2907 D2:35E1 9A 9F - - .db 154,159 - 2908 D2:35E3 98 9F - - .db 152,159 - 2909 D2:35E5 98 9C - - .db 152,156 - 2910 D2:35E7 00 08 00 D0 + 2906 D2:35FC 00 - - - .db 0 + 2907 D2:35FD 9A 9F - - .db 154,159 + 2908 D2:35FF 98 9F - - .db 152,159 + 2909 D2:3601 98 9C - - .db 152,156 + 2910 D2:3603 00 08 00 D0 07 00 F0 07 00 - - - .f 128,125,127 - 2911 D2:35F0 00 - - - .db 0 - 2912 D2:35F1 9A 9F - - .db 154,159 - 2913 D2:35F3 98 9F - - .db 152,159 - 2914 D2:35F5 98 9C - - .db 152,156 - 2915 D2:35F7 A0 07 00 F0 + 2911 D2:360C 00 - - - .db 0 + 2912 D2:360D 9A 9F - - .db 154,159 + 2913 D2:360F 98 9F - - .db 152,159 + 2914 D2:3611 98 9C - - .db 152,156 + 2915 D2:3613 A0 07 00 F0 07 00 D0 07 00 - - - .f 122,127,125 - 2916 D2:3600 00 - - - .db 0 - 2917 D2:3601 9A 9F - - .db 154,159 - 2918 D2:3603 98 9F - - .db 152,159 - 2919 D2:3605 98 9C - - .db 152,156 - 2920 D2:3607 70 07 00 80 + 2916 D2:361C 00 - - - .db 0 + 2917 D2:361D 9A 9F - - .db 154,159 + 2918 D2:361F 98 9F - - .db 152,159 + 2919 D2:3621 98 9C - - .db 152,156 + 2920 D2:3623 70 07 00 80 07 00 F0 07 00 - - - .f 119,120,127 - 2921 D2:3610 00 - - - .db 0 - 2922 D2:3611 9A 9F - - .db 154,159 - 2923 D2:3613 98 9F - - .db 152,159 - 2924 D2:3615 98 9C - - .db 152,156 - 2925 D2:3617 80 07 00 00 + 2921 D2:362C 00 - - - .db 0 + 2922 D2:362D 9A 9F - - .db 154,159 + 2923 D2:362F 98 9F - - .db 152,159 + 2924 D2:3631 98 9C - - .db 152,156 + 2925 D2:3633 80 07 00 00 08 00 F0 07 00 - - - .f 120,128,127 - 2926 D2:3620 00 - - - .db 0 - 2927 D2:3621 9A 9F - - .db 154,159 - 2928 D2:3623 98 9F - - .db 152,159 - 2929 D2:3625 98 9C - - .db 152,156 - 2930 D2:3627 30 07 00 80 + 2926 D2:363C 00 - - - .db 0 + 2927 D2:363D 9A 9F - - .db 154,159 + 2928 D2:363F 98 9F - - .db 152,159 + 2929 D2:3641 98 9C - - .db 152,156 + 2930 D2:3643 30 07 00 80 07 00 70 07 00 - - - .f 115,120,119 - 2931 D2:3630 00 - - - .db 0 - 2932 D2:3631 9A 9F - - .db 154,159 - 2933 D2:3633 98 9F - - .db 152,159 - 2934 D2:3635 98 9C - - .db 152,156 - 2935 D2:3637 10 07 00 60 + 2931 D2:364C 00 - - - .db 0 + 2932 D2:364D 9A 9F - - .db 154,159 + 2933 D2:364F 98 9F - - .db 152,159 + 2934 D2:3651 98 9C - - .db 152,156 + 2935 D2:3653 10 07 00 60 07 00 20 07 00 - - - .f 113,118,114 - 2936 D2:3640 00 - - - .db 0 - 2937 D2:3641 AE 97 - - .db 174,151 - 2938 D2:3643 AE 90 - - .db 174,144 - 2939 D2:3645 A8 90 - - .db 168,144 - 2940 D2:3647 20 07 00 F0 + 2936 D2:365C 00 - - - .db 0 + 2937 D2:365D AE 97 - - .db 174,151 + 2938 D2:365F AE 90 - - .db 174,144 + 2939 D2:3661 A8 90 - - .db 168,144 + 2940 D2:3663 20 07 00 F0 06 00 10 07 00 - - - .f 114,111,113 - 2941 D2:3650 00 - - - .db 0 - 2942 D2:3651 A8 90 - - .db 168,144 - 2943 D2:3653 A8 97 - - .db 168,151 - 2944 D2:3655 AE 97 - - .db 174,151 - 2945 D2:3657 30 08 00 50 + 2941 D2:366C 00 - - - .db 0 + 2942 D2:366D A8 90 - - .db 168,144 + 2943 D2:366F A8 97 - - .db 168,151 + 2944 D2:3671 AE 97 - - .db 174,151 + 2945 D2:3673 30 08 00 50 08 00 10 08 00 - - - .f 131,133,129 - 2946 D2:3660 00 - - - .db 0 - 2947 D2:3661 AE 97 - - .db 174,151 - 2948 D2:3663 A8 97 - - .db 168,151 - 2949 D2:3665 A8 90 - - .db 168,144 - 2950 D2:3667 10 08 00 E0 + 2946 D2:367C 00 - - - .db 0 + 2947 D2:367D AE 97 - - .db 174,151 + 2948 D2:367F A8 97 - - .db 168,151 + 2949 D2:3681 A8 90 - - .db 168,144 + 2950 D2:3683 10 08 00 E0 07 00 30 08 00 - - - .f 129,126,131 - 2951 D2:3670 00 - - - .db 0 - 2952 D2:3671 A8 90 - - .db 168,144 - 2953 D2:3673 AE 90 - - .db 174,144 - 2954 D2:3675 AE 97 - - .db 174,151 - 2955 D2:3677 C0 07 00 90 + 2951 D2:368C 00 - - - .db 0 + 2952 D2:368D A8 90 - - .db 168,144 + 2953 D2:368F AE 90 - - .db 174,144 + 2954 D2:3691 AE 97 - - .db 174,151 + 2955 D2:3693 C0 07 00 90 07 00 10 08 00 - - - .f 124,121,129 - 2956 D2:3680 00 - - - .db 0 - 2957 D2:3681 AE 97 - - .db 174,151 - 2958 D2:3683 AE 90 - - .db 174,144 - 2959 D2:3685 A8 90 - - .db 168,144 - 2960 D2:3687 10 08 00 50 + 2956 D2:369C 00 - - - .db 0 + 2957 D2:369D AE 97 - - .db 174,151 + 2958 D2:369F AE 90 - - .db 174,144 + 2959 D2:36A1 A8 90 - - .db 168,144 + 2960 D2:36A3 10 08 00 50 08 00 C0 07 00 - - - .f 129,133,124 - 2961 D2:3690 00 - - - .db 0 - 2962 D2:3691 A8 90 - - .db 168,144 - 2963 D2:3693 A8 97 - - .db 168,151 - 2964 D2:3695 AE 97 - - .db 174,151 - 2965 D2:3697 C0 07 00 F0 + 2961 D2:36AC 00 - - - .db 0 + 2962 D2:36AD A8 90 - - .db 168,144 + 2963 D2:36AF A8 97 - - .db 168,151 + 2964 D2:36B1 AE 97 - - .db 174,151 + 2965 D2:36B3 C0 07 00 F0 06 00 20 07 00 - - - .f 124,111,114 - 2966 D2:36A0 00 - - - .db 0 - 2967 D2:36A1 A8 97 - - .db 168,151 - 2968 D2:36A3 AE 97 - - .db 174,151 - 2969 D2:36A5 AE 90 - - .db 174,144 - 2970 D2:36A7 20 07 00 90 + 2966 D2:36BC 00 - - - .db 0 + 2967 D2:36BD A8 97 - - .db 168,151 + 2968 D2:36BF AE 97 - - .db 174,151 + 2969 D2:36C1 AE 90 - - .db 174,144 + 2970 D2:36C3 20 07 00 90 07 00 C0 07 00 - - - .f 114,121,124 - 2971 D2:36B0 00 - - - .db 0 - 2972 D2:36B1 AE 90 - - .db 174,144 - 2973 D2:36B3 A8 90 - - .db 168,144 - 2974 D2:36B5 A8 97 - - .db 168,151 - 2975 D2:36B7 90 07 00 20 + 2971 D2:36CC 00 - - - .db 0 + 2972 D2:36CD AE 90 - - .db 174,144 + 2973 D2:36CF A8 90 - - .db 168,144 + 2974 D2:36D1 A8 97 - - .db 168,151 + 2975 D2:36D3 90 07 00 20 07 00 10 08 00 - - - .f 121,114,129 - 2976 D2:36C0 00 - - - .db 0 - 2977 D2:36C1 96 9C - - .db 150,156 - 2978 D2:36C3 94 9C - - .db 148,156 - 2979 D2:36C5 94 9F - - .db 148,159 - 2980 D2:36C7 F0 07 00 A0 + 2976 D2:36DC 00 - - - .db 0 + 2977 D2:36DD 96 9C - - .db 150,156 + 2978 D2:36DF 94 9C - - .db 148,156 + 2979 D2:36E1 94 9F - - .db 148,159 + 2980 D2:36E3 F0 07 00 A0 07 00 70 07 00 - - - .f 127,122,119 - 2981 D2:36D0 00 - - - .db 0 - 2982 D2:36D1 9A 9F - - .db 154,159 - 2983 D2:36D3 98 9F - - .db 152,159 - 2984 D2:36D5 98 9C - - .db 152,156 - 2985 D2:36D7 40 07 00 10 + 2981 D2:36EC 00 - - - .db 0 + 2982 D2:36ED 9A 9F - - .db 154,159 + 2983 D2:36EF 98 9F - - .db 152,159 + 2984 D2:36F1 98 9C - - .db 152,156 + 2985 D2:36F3 40 07 00 10 07 00 F0 06 00 - - - .f 116,113,111 - 2986 D2:36E0 00 - - - .db 0 - 2987 D2:36E1 AE 97 - - .db 174,151 - 2988 D2:36E3 AE 90 - - .db 174,144 - 2989 D2:36E5 A8 90 - - .db 168,144 - 2990 D2:36E7 F0 06 00 00 + 2986 D2:36FC 00 - - - .db 0 + 2987 D2:36FD AE 97 - - .db 174,151 + 2988 D2:36FF AE 90 - - .db 174,144 + 2989 D2:3701 A8 90 - - .db 168,144 + 2990 D2:3703 F0 06 00 00 07 00 40 07 00 - - - .f 111,112,116 - 2991 D2:36F0 00 - - - .db 0 - 2992 D2:36F1 A8 90 - - .db 168,144 - 2993 D2:36F3 A8 97 - - .db 168,151 - 2994 D2:36F5 AE 97 - - .db 174,151 - 2995 D2:36F7 50 08 00 30 + 2991 D2:370C 00 - - - .db 0 + 2992 D2:370D A8 90 - - .db 168,144 + 2993 D2:370F A8 97 - - .db 168,151 + 2994 D2:3711 AE 97 - - .db 174,151 + 2995 D2:3713 50 08 00 30 08 00 20 08 00 - - - .f 133,131,130 - 2996 D2:3700 00 - - - .db 0 - 2997 D2:3701 A8 90 - - .db 168,144 - 2998 D2:3703 AE 90 - - .db 174,144 - 2999 D2:3705 AE 97 - - .db 174,151 - 3000 D2:3707 20 08 00 40 + 2996 D2:371C 00 - - - .db 0 + 2997 D2:371D A8 90 - - .db 168,144 + 2998 D2:371F AE 90 - - .db 174,144 + 2999 D2:3721 AE 97 - - .db 174,151 + 3000 D2:3723 20 08 00 40 08 00 50 08 00 - - - .f 130,132,133 - 3001 D2:3710 00 - - - .db 0 - 3002 D2:3711 AE 97 - - .db 174,151 - 3003 D2:3713 A8 97 - - .db 168,151 - 3004 D2:3715 A8 90 - - .db 168,144 - 3005 D2:3717 C0 07 00 50 + 3001 D2:372C 00 - - - .db 0 + 3002 D2:372D AE 97 - - .db 174,151 + 3003 D2:372F A8 97 - - .db 168,151 + 3004 D2:3731 A8 90 - - .db 168,144 + 3005 D2:3733 C0 07 00 50 08 00 40 08 00 - - - .f 124,133,132 - 3006 D2:3720 00 - - - .db 0 - 3007 D2:3721 AE 90 - - .db 174,144 - 3008 D2:3723 A8 90 - - .db 168,144 - 3009 D2:3725 A8 97 - - .db 168,151 - 3010 D2:3727 40 08 00 B0 + 3006 D2:373C 00 - - - .db 0 + 3007 D2:373D AE 90 - - .db 174,144 + 3008 D2:373F A8 90 - - .db 168,144 + 3009 D2:3741 A8 97 - - .db 168,151 + 3010 D2:3743 40 08 00 B0 07 00 C0 07 00 - - - .f 132,123,124 - 3011 D2:3730 00 - - - .db 0 - 3012 D2:3731 A8 97 - - .db 168,151 - 3013 D2:3733 AE 97 - - .db 174,151 - 3014 D2:3735 AE 90 - - .db 174,144 - 3015 D2:3737 00 07 00 F0 + 3011 D2:374C 00 - - - .db 0 + 3012 D2:374D A8 97 - - .db 168,151 + 3013 D2:374F AE 97 - - .db 174,151 + 3014 D2:3751 AE 90 - - .db 174,144 + 3015 D2:3753 00 07 00 F0 06 00 C0 07 00 - - - .f 112,111,124 - 3016 D2:3740 00 - - - .db 0 - 3017 D2:3741 AE 97 - - .db 174,151 - 3018 D2:3743 AE 90 - - .db 174,144 - 3019 D2:3745 A8 90 - - .db 168,144 - 3020 D2:3747 C0 07 00 B0 + 3016 D2:375C 00 - - - .db 0 + 3017 D2:375D AE 97 - - .db 174,151 + 3018 D2:375F AE 90 - - .db 174,144 + 3019 D2:3761 A8 90 - - .db 168,144 + 3020 D2:3763 C0 07 00 B0 07 00 00 07 00 - - - .f 124,123,112 - 3021 D2:3750 00 - - - .db 0 - 3022 D2:3751 A8 90 - - .db 168,144 - 3023 D2:3753 A8 97 - - .db 168,151 - 3024 D2:3755 AE 97 - - .db 174,151 - 3025 D2:3757 40 07 00 00 + 3021 D2:376C 00 - - - .db 0 + 3022 D2:376D A8 90 - - .db 168,144 + 3023 D2:376F A8 97 - - .db 168,151 + 3024 D2:3771 AE 97 - - .db 174,151 + 3025 D2:3773 40 07 00 00 07 00 30 07 00 - - - .f 116,112,115 - 3026 D2:3760 00 - - - .db 0 - 3027 D2:3761 F8 4C - - .db 248,76 - 3028 D2:3763 FF 4C - - .db 255,76 - 3029 D2:3765 FF 5A - - .db 255,90 - 3030 D2:3767 30 07 00 50 + 3026 D2:377C 00 - - - .db 0 + 3027 D2:377D F8 4C - - .db 248,76 + 3028 D2:377F FF 4C - - .db 255,76 + 3029 D2:3781 FF 5A - - .db 255,90 + 3030 D2:3783 30 07 00 50 07 00 40 07 00 - - - .f 115,117,116 - 3031 D2:3770 00 - - - .db 0 - 3032 D2:3771 FF 5A - - .db 255,90 - 3033 D2:3773 F8 5A - - .db 248,90 - 3034 D2:3775 F8 4C - - .db 248,76 - 3035 D2:3777 00 08 00 40 + 3031 D2:378C 00 - - - .db 0 + 3032 D2:378D FF 5A - - .db 255,90 + 3033 D2:378F F8 5A - - .db 248,90 + 3034 D2:3791 F8 4C - - .db 248,76 + 3035 D2:3793 00 08 00 40 08 00 20 08 00 - - - .f 128,132,130 - 3036 D2:3780 00 - - - .db 0 - 3037 D2:3781 FF 5A - - .db 255,90 - 3038 D2:3783 FF 4C - - .db 255,76 - 3039 D2:3785 F8 4C - - .db 248,76 - 3040 D2:3787 20 08 00 D0 + 3036 D2:379C 00 - - - .db 0 + 3037 D2:379D FF 5A - - .db 255,90 + 3038 D2:379F FF 4C - - .db 255,76 + 3039 D2:37A1 F8 4C - - .db 248,76 + 3040 D2:37A3 20 08 00 D0 07 00 00 08 00 - - - .f 130,125,128 - 3041 D2:3790 00 - - - .db 0 - 3042 D2:3791 F8 4C - - .db 248,76 - 3043 D2:3793 F8 5A - - .db 248,90 - 3044 D2:3795 FF 5A - - .db 255,90 - 3045 D2:3797 B0 07 00 40 + 3041 D2:37AC 00 - - - .db 0 + 3042 D2:37AD F8 4C - - .db 248,76 + 3043 D2:37AF F8 5A - - .db 248,90 + 3044 D2:37B1 FF 5A - - .db 255,90 + 3045 D2:37B3 B0 07 00 40 08 00 00 08 00 - - - .f 123,132,128 - 3046 D2:37A0 00 - - - .db 0 - 3047 D2:37A1 9A 5C - - .db 154,92 - 3048 D2:37A3 94 5C - - .db 148,92 - 3049 D2:37A5 94 6B - - .db 148,107 - 3050 D2:37A7 00 08 00 80 + 3046 D2:37BC 00 - - - .db 0 + 3047 D2:37BD 9A 5C - - .db 154,92 + 3048 D2:37BF 94 5C - - .db 148,92 + 3049 D2:37C1 94 6B - - .db 148,107 + 3050 D2:37C3 00 08 00 80 07 00 B0 07 00 - - - .f 128,120,123 - 3051 D2:37B0 00 - - - .db 0 - 3052 D2:37B1 94 6B - - .db 148,107 - 3053 D2:37B3 9A 6B - - .db 154,107 - 3054 D2:37B5 9A 5C - - .db 154,92 - 3055 D2:37B7 30 07 00 00 + 3051 D2:37CC 00 - - - .db 0 + 3052 D2:37CD 94 6B - - .db 148,107 + 3053 D2:37CF 9A 6B - - .db 154,107 + 3054 D2:37D1 9A 5C - - .db 154,92 + 3055 D2:37D3 30 07 00 00 07 00 B0 07 00 - - - .f 115,112,123 - 3056 D2:37C0 00 - - - .db 0 - 3057 D2:37C1 94 6B - - .db 148,107 - 3058 D2:37C3 94 5C - - .db 148,92 - 3059 D2:37C5 9A 5C - - .db 154,92 - 3060 D2:37C7 B0 07 00 80 + 3056 D2:37DC 00 - - - .db 0 + 3057 D2:37DD 94 6B - - .db 148,107 + 3058 D2:37DF 94 5C - - .db 148,92 + 3059 D2:37E1 9A 5C - - .db 154,92 + 3060 D2:37E3 B0 07 00 80 07 00 30 07 00 - - - .f 123,120,115 - 3061 D2:37D0 00 - - - .db 0 - 3062 D2:37D1 9A 5C - - .db 154,92 - 3063 D2:37D3 9A 6B - - .db 154,107 - 3064 D2:37D5 94 6B - - .db 148,107 - 3065 D2:37D7 D0 08 00 E0 + 3061 D2:37EC 00 - - - .db 0 + 3062 D2:37ED 9A 5C - - .db 154,92 + 3063 D2:37EF 9A 6B - - .db 154,107 + 3064 D2:37F1 94 6B - - .db 148,107 + 3065 D2:37F3 D0 08 00 E0 08 00 F0 08 00 - - - .f 141,142,143 - 3066 D2:37E0 00 - - - .db 0 - 3067 D2:37E1 B0 90 - - .db 176,144 - 3068 D2:37E3 B7 90 - - .db 183,144 - 3069 D2:37E5 B7 97 - - .db 183,151 - 3070 D2:37E7 D0 08 00 F0 + 3066 D2:37FC 00 - - - .db 0 + 3067 D2:37FD B0 90 - - .db 176,144 + 3068 D2:37FF B7 90 - - .db 183,144 + 3069 D2:3801 B7 97 - - .db 183,151 + 3070 D2:3803 D0 08 00 F0 08 00 A0 08 00 - - - .f 141,143,138 - 3071 D2:37F0 00 - - - .db 0 - 3072 D2:37F1 B0 90 - - .db 176,144 - 3073 D2:37F3 B7 97 - - .db 183,151 - 3074 D2:37F5 B0 97 - - .db 176,151 - 3075 D2:37F7 60 08 00 50 + 3071 D2:380C 00 - - - .db 0 + 3072 D2:380D B0 90 - - .db 176,144 + 3073 D2:380F B7 97 - - .db 183,151 + 3074 D2:3811 B0 97 - - .db 176,151 + 3075 D2:3813 60 08 00 50 09 00 20 09 00 - - - .f 134,149,146 - 3076 D2:3800 00 - - - .db 0 - 3077 D2:3801 BB 6C - - .db 187,108 - 3078 D2:3803 B4 6C - - .db 180,108 - 3079 D2:3805 B4 77 - - .db 180,119 - 3080 D2:3807 60 08 00 20 + 3076 D2:381C 00 - - - .db 0 + 3077 D2:381D BB 6C - - .db 187,108 + 3078 D2:381F B4 6C - - .db 180,108 + 3079 D2:3821 B4 77 - - .db 180,119 + 3080 D2:3823 60 08 00 20 09 00 90 08 00 - - - .f 134,146,137 - 3081 D2:3810 00 - - - .db 0 - 3082 D2:3811 BB 6C - - .db 187,108 - 3083 D2:3813 B4 77 - - .db 180,119 - 3084 D2:3815 BB 77 - - .db 187,119 - 3085 D2:3817 B0 08 00 C0 + 3081 D2:382C 00 - - - .db 0 + 3082 D2:382D BB 6C - - .db 187,108 + 3083 D2:382F B4 77 - - .db 180,119 + 3084 D2:3831 BB 77 - - .db 187,119 + 3085 D2:3833 B0 08 00 C0 08 00 10 09 00 - - - .f 139,140,145 - 3086 D2:3820 00 - - - .db 0 - 3087 D2:3821 98 9C - - .db 152,156 - 3088 D2:3823 9A 9C - - .db 154,156 - 3089 D2:3825 9A 9F - - .db 154,159 - 3090 D2:3827 B0 08 00 10 + 3086 D2:383C 00 - - - .db 0 + 3087 D2:383D 98 9C - - .db 152,156 + 3088 D2:383F 9A 9C - - .db 154,156 + 3089 D2:3841 9A 9F - - .db 154,159 + 3090 D2:3843 B0 08 00 10 09 00 00 09 00 - - - .f 139,145,144 - 3091 D2:3830 00 - - - .db 0 - 3092 D2:3831 98 9C - - .db 152,156 - 3093 D2:3833 9A 9F - - .db 154,159 - 3094 D2:3835 98 9F - - .db 152,159 - 3095 D2:3837 30 09 00 80 + 3091 D2:384C 00 - - - .db 0 + 3092 D2:384D 98 9C - - .db 152,156 + 3093 D2:384F 9A 9F - - .db 154,159 + 3094 D2:3851 98 9F - - .db 152,159 + 3095 D2:3853 30 09 00 80 08 00 90 08 00 - - - .f 147,136,137 - 3096 D2:3840 00 - - - .db 0 - 3097 D2:3841 88 90 - - .db 136,144 - 3098 D2:3843 8E 90 - - .db 142,144 - 3099 D2:3845 8E 97 - - .db 142,151 - 3100 D2:3847 30 09 00 90 + 3096 D2:385C 00 - - - .db 0 + 3097 D2:385D 88 90 - - .db 136,144 + 3098 D2:385F 8E 90 - - .db 142,144 + 3099 D2:3861 8E 97 - - .db 142,151 + 3100 D2:3863 30 09 00 90 08 00 20 09 00 - - - .f 147,137,146 - 3101 D2:3850 00 - - - .db 0 - 3102 D2:3851 88 90 - - .db 136,144 - 3103 D2:3853 8E 97 - - .db 142,151 - 3104 D2:3855 88 97 - - .db 136,151 - 3105 D2:3857 10 09 00 C0 + 3101 D2:386C 00 - - - .db 0 + 3102 D2:386D 88 90 - - .db 136,144 + 3103 D2:386F 8E 97 - - .db 142,151 + 3104 D2:3871 88 97 - - .db 136,151 + 3105 D2:3873 10 09 00 C0 08 00 80 08 00 - - - .f 145,140,136 - 3106 D2:3860 00 - - - .db 0 - 3107 D2:3861 F4 98 - - .db 244,152 - 3108 D2:3863 FB 98 - - .db 251,152 - 3109 D2:3865 FB 9B - - .db 251,155 - 3110 D2:3867 10 09 00 80 + 3106 D2:387C 00 - - - .db 0 + 3107 D2:387D F4 98 - - .db 244,152 + 3108 D2:387F FB 98 - - .db 251,152 + 3109 D2:3881 FB 9B - - .db 251,155 + 3110 D2:3883 10 09 00 80 08 00 30 09 00 - - - .f 145,136,147 - 3111 D2:3870 00 - - - .db 0 - 3112 D2:3871 F4 98 - - .db 244,152 - 3113 D2:3873 FB 9B - - .db 251,155 - 3114 D2:3875 F4 9B - - .db 244,155 - 3115 D2:3877 B0 08 00 00 + 3111 D2:388C 00 - - - .db 0 + 3112 D2:388D F4 98 - - .db 244,152 + 3113 D2:388F FB 9B - - .db 251,155 + 3114 D2:3891 F4 9B - - .db 244,155 + 3115 D2:3893 B0 08 00 00 09 00 40 09 00 - - - .f 139,144,148 - 3116 D2:3880 00 - - - .db 0 - 3117 D2:3881 E0 88 - - .db 224,136 - 3118 D2:3883 E7 88 - - .db 231,136 - 3119 D2:3885 E7 8F - - .db 231,143 - 3120 D2:3887 B0 08 00 40 + 3116 D2:389C 00 - - - .db 0 + 3117 D2:389D E0 88 - - .db 224,136 + 3118 D2:389F E7 88 - - .db 231,136 + 3119 D2:38A1 E7 8F - - .db 231,143 + 3120 D2:38A3 B0 08 00 40 09 00 70 08 00 - - - .f 139,148,135 - 3121 D2:3890 00 - - - .db 0 - 3122 D2:3891 E0 88 - - .db 224,136 - 3123 D2:3893 E7 8F - - .db 231,143 - 3124 D2:3895 E0 8F - - .db 224,143 - 3125 D2:3897 70 08 00 40 + 3121 D2:38AC 00 - - - .db 0 + 3122 D2:38AD E0 88 - - .db 224,136 + 3123 D2:38AF E7 8F - - .db 231,143 + 3124 D2:38B1 E0 8F - - .db 224,143 + 3125 D2:38B3 70 08 00 40 09 00 E0 08 00 - - - .f 135,148,142 - 3126 D2:38A0 00 - - - .db 0 - 3127 D2:38A1 B8 90 - - .db 184,144 - 3128 D2:38A3 BF 90 - - .db 191,144 - 3129 D2:38A5 BF 97 - - .db 191,151 - 3130 D2:38A7 70 08 00 E0 + 3126 D2:38BC 00 - - - .db 0 + 3127 D2:38BD B8 90 - - .db 184,144 + 3128 D2:38BF BF 90 - - .db 191,144 + 3129 D2:38C1 BF 97 - - .db 191,151 + 3130 D2:38C3 70 08 00 E0 08 00 D0 08 00 - - - .f 135,142,141 - 3131 D2:38B0 00 - - - .db 0 - 3132 D2:38B1 B8 90 - - .db 184,144 - 3133 D2:38B3 BF 97 - - .db 191,151 - 3134 D2:38B5 B8 97 - - .db 184,151 - 3135 D2:38B7 40 09 00 30 + 3131 D2:38CC 00 - - - .db 0 + 3132 D2:38CD B8 90 - - .db 184,144 + 3133 D2:38CF BF 97 - - .db 191,151 + 3134 D2:38D1 B8 97 - - .db 184,151 + 3135 D2:38D3 40 09 00 30 09 00 20 09 00 - - - .f 148,147,146 - 3136 D2:38C0 00 - - - .db 0 - 3137 D2:38C1 80 88 - - .db 128,136 - 3138 D2:38C3 8E 88 - - .db 142,136 - 3139 D2:38C5 8E 8F - - .db 142,143 - 3140 D2:38C7 20 09 00 50 + 3136 D2:38DC 00 - - - .db 0 + 3137 D2:38DD 80 88 - - .db 128,136 + 3138 D2:38DF 8E 88 - - .db 142,136 + 3139 D2:38E1 8E 8F - - .db 142,143 + 3140 D2:38E3 20 09 00 50 09 00 40 09 00 - - - .f 146,149,148 - 3141 D2:38D0 00 - - - .db 0 - 3142 D2:38D1 8E 8F - - .db 142,143 - 3143 D2:38D3 80 8F - - .db 128,143 - 3144 D2:38D5 80 88 - - .db 128,136 - 3145 D2:38D7 90 08 00 80 + 3141 D2:38EC 00 - - - .db 0 + 3142 D2:38ED 8E 8F - - .db 142,143 + 3143 D2:38EF 80 8F - - .db 128,143 + 3144 D2:38F1 80 88 - - .db 128,136 + 3145 D2:38F3 90 08 00 80 08 00 70 08 00 - - - .f 137,136,135 - 3146 D2:38E0 00 - - - .db 0 - 3147 D2:38E1 8E 8F - - .db 142,143 - 3148 D2:38E3 8E 88 - - .db 142,136 - 3149 D2:38E5 80 88 - - .db 128,136 - 3150 D2:38E7 70 08 00 60 + 3146 D2:38FC 00 - - - .db 0 + 3147 D2:38FD 8E 8F - - .db 142,143 + 3148 D2:38FF 8E 88 - - .db 142,136 + 3149 D2:3901 80 88 - - .db 128,136 + 3150 D2:3903 70 08 00 60 08 00 90 08 00 - - - .f 135,134,137 - 3151 D2:38F0 00 - - - .db 0 - 3152 D2:38F1 80 88 - - .db 128,136 - 3153 D2:38F3 80 8F - - .db 128,143 - 3154 D2:38F5 8E 8F - - .db 142,143 - 3155 D2:38F7 30 09 00 40 + 3151 D2:390C 00 - - - .db 0 + 3152 D2:390D 80 88 - - .db 128,136 + 3153 D2:390F 80 8F - - .db 128,143 + 3154 D2:3911 8E 8F - - .db 142,143 + 3155 D2:3913 30 09 00 40 09 00 00 09 00 - - - .f 147,148,144 - 3156 D2:3900 00 - - - .db 0 - 3157 D2:3901 9E 8F - - .db 158,143 - 3158 D2:3903 90 8F - - .db 144,143 - 3159 D2:3905 90 88 - - .db 144,136 - 3160 D2:3907 00 09 00 10 + 3156 D2:391C 00 - - - .db 0 + 3157 D2:391D 9E 8F - - .db 158,143 + 3158 D2:391F 90 8F - - .db 144,143 + 3159 D2:3921 90 88 - - .db 144,136 + 3160 D2:3923 00 09 00 10 09 00 30 09 00 - - - .f 144,145,147 - 3161 D2:3910 00 - - - .db 0 - 3162 D2:3911 90 88 - - .db 144,136 - 3163 D2:3913 9E 88 - - .db 158,136 - 3164 D2:3915 9E 8F - - .db 158,143 - 3165 D2:3917 70 08 00 80 + 3161 D2:392C 00 - - - .db 0 + 3162 D2:392D 90 88 - - .db 144,136 + 3163 D2:392F 9E 88 - - .db 158,136 + 3164 D2:3931 9E 8F - - .db 158,143 + 3165 D2:3933 70 08 00 80 08 00 C0 08 00 - - - .f 135,136,140 - 3166 D2:3920 00 - - - .db 0 - 3167 D2:3921 90 8F - - .db 144,143 - 3168 D2:3923 9E 8F - - .db 158,143 - 3169 D2:3925 9E 88 - - .db 158,136 - 3170 D2:3927 C0 08 00 B0 + 3166 D2:393C 00 - - - .db 0 + 3167 D2:393D 90 8F - - .db 144,143 + 3168 D2:393F 9E 8F - - .db 158,143 + 3169 D2:3941 9E 88 - - .db 158,136 + 3170 D2:3943 C0 08 00 B0 08 00 70 08 00 - - - .f 140,139,135 - 3171 D2:3930 00 - - - .db 0 - 3172 D2:3931 9E 88 - - .db 158,136 - 3173 D2:3933 90 88 - - .db 144,136 - 3174 D2:3935 90 8F - - .db 144,143 - 3175 D2:3937 50 09 00 60 + 3171 D2:394C 00 - - - .db 0 + 3172 D2:394D 9E 88 - - .db 158,136 + 3173 D2:394F 90 88 - - .db 144,136 + 3174 D2:3951 90 8F - - .db 144,143 + 3175 D2:3953 50 09 00 60 08 00 A0 08 00 - - - .f 149,134,138 - 3176 D2:3940 00 - - - .db 0 - 3177 D2:3941 D8 8F - - .db 216,143 - 3178 D2:3943 DF 8F - - .db 223,143 - 3179 D2:3945 DF 88 - - .db 223,136 - 3180 D2:3947 A0 08 00 F0 + 3176 D2:395C 00 - - - .db 0 + 3177 D2:395D D8 8F - - .db 216,143 + 3178 D2:395F DF 8F - - .db 223,143 + 3179 D2:3961 DF 88 - - .db 223,136 + 3180 D2:3963 A0 08 00 F0 08 00 50 09 00 - - - .f 138,143,149 - 3181 D2:3950 00 - - - .db 0 - 3182 D2:3951 DF 88 - - .db 223,136 - 3183 D2:3953 D8 88 - - .db 216,136 - 3184 D2:3955 D8 8F - - .db 216,143 - 3185 D2:3957 40 09 00 50 + 3181 D2:396C 00 - - - .db 0 + 3182 D2:396D DF 88 - - .db 223,136 + 3183 D2:396F D8 88 - - .db 216,136 + 3184 D2:3971 D8 8F - - .db 216,143 + 3185 D2:3973 40 09 00 50 09 00 F0 08 00 - - - .f 148,149,143 - 3186 D2:3960 00 - - - .db 0 - 3187 D2:3961 FF 88 - - .db 255,136 - 3188 D2:3963 FF 8F - - .db 255,143 - 3189 D2:3965 F8 8F - - .db 248,143 - 3190 D2:3967 F0 08 00 E0 + 3186 D2:397C 00 - - - .db 0 + 3187 D2:397D FF 88 - - .db 255,136 + 3188 D2:397F FF 8F - - .db 255,143 + 3189 D2:3981 F8 8F - - .db 248,143 + 3190 D2:3983 F0 08 00 E0 08 00 40 09 00 - - - .f 143,142,148 - 3191 D2:3970 00 - - - .db 0 - 3192 D2:3971 F8 8F - - .db 248,143 - 3193 D2:3973 F8 88 - - .db 248,136 - 3194 D2:3975 FF 88 - - .db 255,136 - 3195 D2:3977 60 08 00 70 + 3191 D2:398C 00 - - - .db 0 + 3192 D2:398D F8 8F - - .db 248,143 + 3193 D2:398F F8 88 - - .db 248,136 + 3194 D2:3991 FF 88 - - .db 255,136 + 3195 D2:3993 60 08 00 70 08 00 D0 08 00 - - - .f 134,135,141 - 3196 D2:3980 00 - - - .db 0 - 3197 D2:3981 FF 8F - - .db 255,143 - 3198 D2:3983 FF 88 - - .db 255,136 - 3199 D2:3985 F8 88 - - .db 248,136 - 3200 D2:3987 D0 08 00 A0 + 3196 D2:399C 00 - - - .db 0 + 3197 D2:399D FF 8F - - .db 255,143 + 3198 D2:399F FF 88 - - .db 255,136 + 3199 D2:39A1 F8 88 - - .db 248,136 + 3200 D2:39A3 D0 08 00 A0 08 00 60 08 00 - - - .f 141,138,134 - 3201 D2:3990 00 - - - .db 0 - 3202 D2:3991 F8 88 - - .db 248,136 - 3203 D2:3993 F8 8F - - .db 248,143 - 3204 D2:3995 FF 8F - - .db 255,143 - 3205 D2:3997 80 0A 00 80 + 3201 D2:39AC 00 - - - .db 0 + 3202 D2:39AD F8 88 - - .db 248,136 + 3203 D2:39AF F8 8F - - .db 248,143 + 3204 D2:39B1 FF 8F - - .db 255,143 + 3205 D2:39B3 80 0A 00 80 0C 00 90 0C 00 - - - .f 168,200,201 - 3206 D2:39A0 00 - - - .db 0 - 3207 D2:39A1 92 9C - - .db 146,156 - 3208 D2:39A3 90 9C - - .db 144,156 - 3209 D2:39A5 90 9F - - .db 144,159 - 3210 D2:39A7 80 0A 00 90 + 3206 D2:39BC 00 - - - .db 0 + 3207 D2:39BD 92 9C - - .db 146,156 + 3208 D2:39BF 90 9C - - .db 144,156 + 3209 D2:39C1 90 9F - - .db 144,159 + 3210 D2:39C3 80 0A 00 90 0C 00 90 0A 00 - - - .f 168,201,169 - 3211 D2:39B0 00 - - - .db 0 - 3212 D2:39B1 92 9C - - .db 146,156 - 3213 D2:39B3 90 9F - - .db 144,159 - 3214 D2:39B5 92 9F - - .db 146,159 - 3215 D2:39B7 90 0B 00 B0 + 3211 D2:39CC 00 - - - .db 0 + 3212 D2:39CD 92 9C - - .db 146,156 + 3213 D2:39CF 90 9F - - .db 144,159 + 3214 D2:39D1 92 9F - - .db 146,159 + 3215 D2:39D3 90 0B 00 B0 0B 00 60 0B 00 - - - .f 185,187,182 - 3216 D2:39C0 00 - - - .db 0 - 3217 D2:39C1 94 9C - - .db 148,156 - 3218 D2:39C3 96 9C - - .db 150,156 - 3219 D2:39C5 96 9F - - .db 150,159 - 3220 D2:39C7 90 0B 00 60 + 3216 D2:39DC 00 - - - .db 0 + 3217 D2:39DD 94 9C - - .db 148,156 + 3218 D2:39DF 96 9C - - .db 150,156 + 3219 D2:39E1 96 9F - - .db 150,159 + 3220 D2:39E3 90 0B 00 60 0B 00 70 0B 00 - - - .f 185,182,183 - 3221 D2:39D0 00 - - - .db 0 - 3222 D2:39D1 94 9C - - .db 148,156 - 3223 D2:39D3 96 9F - - .db 150,159 - 3224 D2:39D5 94 9F - - .db 148,159 - 3225 D2:39D7 90 0B 00 70 + 3221 D2:39EC 00 - - - .db 0 + 3222 D2:39ED 94 9C - - .db 148,156 + 3223 D2:39EF 96 9F - - .db 150,159 + 3224 D2:39F1 94 9F - - .db 148,159 + 3225 D2:39F3 90 0B 00 70 0B 00 80 0B 00 - - - .f 185,183,184 - 3226 D2:39E0 00 - - - .db 0 - 3227 D2:39E1 94 9C - - .db 148,156 - 3228 D2:39E3 96 9C - - .db 150,156 - 3229 D2:39E5 96 9F - - .db 150,159 - 3230 D2:39E7 90 0B 00 80 + 3226 D2:39FC 00 - - - .db 0 + 3227 D2:39FD 94 9C - - .db 148,156 + 3228 D2:39FF 96 9C - - .db 150,156 + 3229 D2:3A01 96 9F - - .db 150,159 + 3230 D2:3A03 90 0B 00 80 0B 00 A0 0B 00 - - - .f 185,184,186 - 3231 D2:39F0 00 - - - .db 0 - 3232 D2:39F1 94 9C - - .db 148,156 - 3233 D2:39F3 96 9F - - .db 150,159 - 3234 D2:39F5 94 9F - - .db 148,159 - 3235 D2:39F7 50 0B 00 C0 + 3231 D2:3A0C 00 - - - .db 0 + 3232 D2:3A0D 94 9C - - .db 148,156 + 3233 D2:3A0F 96 9F - - .db 150,159 + 3234 D2:3A11 94 9F - - .db 148,159 + 3235 D2:3A13 50 0B 00 C0 0B 00 A0 0B 00 - - - .f 181,188,186 - 3236 D2:3A00 00 - - - .db 0 - 3237 D2:3A01 94 9C - - .db 148,156 - 3238 D2:3A03 96 9C - - .db 150,156 - 3239 D2:3A05 96 9F - - .db 150,159 - 3240 D2:3A07 50 0B 00 A0 + 3236 D2:3A1C 00 - - - .db 0 + 3237 D2:3A1D 94 9C - - .db 148,156 + 3238 D2:3A1F 96 9C - - .db 150,156 + 3239 D2:3A21 96 9F - - .db 150,159 + 3240 D2:3A23 50 0B 00 A0 0B 00 80 0B 00 - - - .f 181,186,184 - 3241 D2:3A10 00 - - - .db 0 - 3242 D2:3A11 94 9C - - .db 148,156 - 3243 D2:3A13 96 9F - - .db 150,159 - 3244 D2:3A15 94 9F - - .db 148,159 - 3245 D2:3A17 60 0C 00 B0 + 3241 D2:3A2C 00 - - - .db 0 + 3242 D2:3A2D 94 9C - - .db 148,156 + 3243 D2:3A2F 96 9F - - .db 150,159 + 3244 D2:3A31 94 9F - - .db 148,159 + 3245 D2:3A33 60 0C 00 B0 0A 00 20 0B 00 - - - .f 198,171,178 - 3246 D2:3A20 00 - - - .db 0 - 3247 D2:3A21 E4 98 - - .db 228,152 - 3248 D2:3A23 F3 98 - - .db 243,152 - 3249 D2:3A25 F3 9B - - .db 243,155 - 3250 D2:3A27 60 0C 00 20 + 3246 D2:3A3C 00 - - - .db 0 + 3247 D2:3A3D E4 98 - - .db 228,152 + 3248 D2:3A3F F3 98 - - .db 243,152 + 3249 D2:3A41 F3 9B - - .db 243,155 + 3250 D2:3A43 60 0C 00 20 0B 00 30 0C 00 - - - .f 198,178,195 - 3251 D2:3A30 00 - - - .db 0 - 3252 D2:3A31 E4 98 - - .db 228,152 - 3253 D2:3A33 F3 9B - - .db 243,155 - 3254 D2:3A35 E4 9B - - .db 228,155 - 3255 D2:3A37 30 0C 00 20 + 3251 D2:3A4C 00 - - - .db 0 + 3252 D2:3A4D E4 98 - - .db 228,152 + 3253 D2:3A4F F3 9B - - .db 243,155 + 3254 D2:3A51 E4 9B - - .db 228,155 + 3255 D2:3A53 30 0C 00 20 0B 00 90 0A 00 - - - .f 195,178,169 - 3256 D2:3A40 00 - - - .db 0 - 3257 D2:3A41 E4 80 - - .db 228,128 - 3258 D2:3A43 F3 80 - - .db 243,128 - 3259 D2:3A45 F3 87 - - .db 243,135 - 3260 D2:3A47 30 0C 00 90 + 3256 D2:3A5C 00 - - - .db 0 + 3257 D2:3A5D E4 80 - - .db 228,128 + 3258 D2:3A5F F3 80 - - .db 243,128 + 3259 D2:3A61 F3 87 - - .db 243,135 + 3260 D2:3A63 30 0C 00 90 0A 00 90 0C 00 - - - .f 195,169,201 - 3261 D2:3A50 00 - - - .db 0 - 3262 D2:3A51 E4 80 - - .db 228,128 - 3263 D2:3A53 F3 87 - - .db 243,135 - 3264 D2:3A55 E4 87 - - .db 228,135 - 3265 D2:3A57 C0 0A 00 70 + 3261 D2:3A6C 00 - - - .db 0 + 3262 D2:3A6D E4 80 - - .db 228,128 + 3263 D2:3A6F F3 87 - - .db 243,135 + 3264 D2:3A71 E4 87 - - .db 228,135 + 3265 D2:3A73 C0 0A 00 70 0C 00 40 0C 00 - - - .f 172,199,196 - 3266 D2:3A60 00 - - - .db 0 - 3267 D2:3A61 A6 80 - - .db 166,128 - 3268 D2:3A63 94 80 - - .db 148,128 - 3269 D2:3A65 94 87 - - .db 148,135 - 3270 D2:3A67 C0 0A 00 40 + 3266 D2:3A7C 00 - - - .db 0 + 3267 D2:3A7D A6 80 - - .db 166,128 + 3268 D2:3A7F 94 80 - - .db 148,128 + 3269 D2:3A81 94 87 - - .db 148,135 + 3270 D2:3A83 C0 0A 00 40 0C 00 30 0B 00 - - - .f 172,196,179 - 3271 D2:3A70 00 - - - .db 0 - 3272 D2:3A71 A6 80 - - .db 166,128 - 3273 D2:3A73 94 87 - - .db 148,135 - 3274 D2:3A75 A6 87 - - .db 166,135 - 3275 D2:3A77 30 0B 00 40 + 3271 D2:3A8C 00 - - - .db 0 + 3272 D2:3A8D A6 80 - - .db 166,128 + 3273 D2:3A8F 94 87 - - .db 148,135 + 3274 D2:3A91 A6 87 - - .db 166,135 + 3275 D2:3A93 30 0B 00 40 0C 00 80 0C 00 - - - .f 179,196,200 - 3276 D2:3A80 00 - - - .db 0 - 3277 D2:3A81 BB 80 - - .db 187,128 - 3278 D2:3A83 A8 80 - - .db 168,128 - 3279 D2:3A85 A8 87 - - .db 168,135 - 3280 D2:3A87 30 0B 00 80 + 3276 D2:3A9C 00 - - - .db 0 + 3277 D2:3A9D BB 80 - - .db 187,128 + 3278 D2:3A9F A8 80 - - .db 168,128 + 3279 D2:3AA1 A8 87 - - .db 168,135 + 3280 D2:3AA3 30 0B 00 80 0C 00 80 0A 00 - - - .f 179,200,168 - 3281 D2:3A90 00 - - - .db 0 - 3282 D2:3A91 BB 80 - - .db 187,128 - 3283 D2:3A93 A8 87 - - .db 168,135 - 3284 D2:3A95 BB 87 - - .db 187,135 - 3285 D2:3A97 60 0B 00 B0 + 3281 D2:3AAC 00 - - - .db 0 + 3282 D2:3AAD BB 80 - - .db 187,128 + 3283 D2:3AAF A8 87 - - .db 168,135 + 3284 D2:3AB1 BB 87 - - .db 187,135 + 3285 D2:3AB3 60 0B 00 B0 0B 00 D0 0B 00 - - - .f 182,187,189 - 3286 D2:3AA0 00 - - - .db 0 - 3287 D2:3AA1 C3 88 - - .db 195,136 - 3288 D2:3AA3 B8 88 - - .db 184,136 - 3289 D2:3AA5 B8 8F - - .db 184,143 - 3290 D2:3AA7 60 0B 00 D0 + 3286 D2:3ABC 00 - - - .db 0 + 3287 D2:3ABD C3 88 - - .db 195,136 + 3288 D2:3ABF B8 88 - - .db 184,136 + 3289 D2:3AC1 B8 8F - - .db 184,143 + 3290 D2:3AC3 60 0B 00 D0 0B 00 40 0B 00 - - - .f 182,189,180 - 3291 D2:3AB0 00 - - - .db 0 - 3292 D2:3AB1 C3 88 - - .db 195,136 - 3293 D2:3AB3 B8 8F - - .db 184,143 - 3294 D2:3AB5 C3 8F - - .db 195,143 - 3295 D2:3AB7 D0 0A 00 20 + 3291 D2:3ACC 00 - - - .db 0 + 3292 D2:3ACD C3 88 - - .db 195,136 + 3293 D2:3ACF B8 8F - - .db 184,143 + 3294 D2:3AD1 C3 8F - - .db 195,143 + 3295 D2:3AD3 D0 0A 00 20 0C 00 70 0C 00 - - - .f 173,194,199 - 3296 D2:3AC0 00 - - - .db 0 - 3297 D2:3AC1 CF 80 - - .db 207,128 - 3298 D2:3AC3 BC 80 - - .db 188,128 - 3299 D2:3AC5 BC 87 - - .db 188,135 - 3300 D2:3AC7 D0 0A 00 70 + 3296 D2:3ADC 00 - - - .db 0 + 3297 D2:3ADD CF 80 - - .db 207,128 + 3298 D2:3ADF BC 80 - - .db 188,128 + 3299 D2:3AE1 BC 87 - - .db 188,135 + 3300 D2:3AE3 D0 0A 00 70 0C 00 C0 0A 00 - - - .f 173,199,172 - 3301 D2:3AD0 00 - - - .db 0 - 3302 D2:3AD1 CF 80 - - .db 207,128 - 3303 D2:3AD3 BC 87 - - .db 188,135 - 3304 D2:3AD5 CF 87 - - .db 207,135 - 3305 D2:3AD7 E0 0A 00 00 + 3301 D2:3AEC 00 - - - .db 0 + 3302 D2:3AED CF 80 - - .db 207,128 + 3303 D2:3AEF BC 87 - - .db 188,135 + 3304 D2:3AF1 CF 87 - - .db 207,135 + 3305 D2:3AF3 E0 0A 00 00 0C 00 50 0C 00 - - - .f 174,192,197 - 3306 D2:3AE0 00 - - - .db 0 - 3307 D2:3AE1 92 80 - - .db 146,128 - 3308 D2:3AE3 80 80 - - .db 128,128 - 3309 D2:3AE5 80 87 - - .db 128,135 - 3310 D2:3AE7 E0 0A 00 50 + 3306 D2:3AFC 00 - - - .db 0 + 3307 D2:3AFD 92 80 - - .db 146,128 + 3308 D2:3AFF 80 80 - - .db 128,128 + 3309 D2:3B01 80 87 - - .db 128,135 + 3310 D2:3B03 E0 0A 00 50 0C 00 A0 0A 00 - - - .f 174,197,170 - 3311 D2:3AF0 00 - - - .db 0 - 3312 D2:3AF1 92 80 - - .db 146,128 - 3313 D2:3AF3 80 87 - - .db 128,135 - 3314 D2:3AF5 92 87 - - .db 146,135 - 3315 D2:3AF7 A0 0A 00 50 + 3311 D2:3B0C 00 - - - .db 0 + 3312 D2:3B0D 92 80 - - .db 146,128 + 3313 D2:3B0F 80 87 - - .db 128,135 + 3314 D2:3B11 92 87 - - .db 146,135 + 3315 D2:3B13 A0 0A 00 50 0C 00 F0 0B 00 - - - .f 170,197,191 - 3316 D2:3B00 00 - - - .db 0 - 3317 D2:3B01 E3 80 - - .db 227,128 - 3318 D2:3B03 D0 80 - - .db 208,128 - 3319 D2:3B05 D0 87 - - .db 208,135 - 3320 D2:3B07 A0 0A 00 F0 + 3316 D2:3B1C 00 - - - .db 0 + 3317 D2:3B1D E3 80 - - .db 227,128 + 3318 D2:3B1F D0 80 - - .db 208,128 + 3319 D2:3B21 D0 87 - - .db 208,135 + 3320 D2:3B23 A0 0A 00 F0 0B 00 10 0B 00 - - - .f 170,191,177 - 3321 D2:3B10 00 - - - .db 0 - 3322 D2:3B11 E3 80 - - .db 227,128 - 3323 D2:3B13 D0 87 - - .db 208,135 - 3324 D2:3B15 E3 87 - - .db 227,135 - 3325 D2:3B17 F0 0A 00 10 + 3321 D2:3B2C 00 - - - .db 0 + 3322 D2:3B2D E3 80 - - .db 227,128 + 3323 D2:3B2F D0 87 - - .db 208,135 + 3324 D2:3B31 E3 87 - - .db 227,135 + 3325 D2:3B33 F0 0A 00 10 0C 00 00 0C 00 - - - .f 175,193,192 - 3326 D2:3B20 00 - - - .db 0 - 3327 D2:3B21 C4 98 - - .db 196,152 - 3328 D2:3B23 D3 98 - - .db 211,152 - 3329 D2:3B25 D3 9B - - .db 211,155 - 3330 D2:3B27 F0 0A 00 00 + 3326 D2:3B3C 00 - - - .db 0 + 3327 D2:3B3D C4 98 - - .db 196,152 + 3328 D2:3B3F D3 98 - - .db 211,152 + 3329 D2:3B41 D3 9B - - .db 211,155 + 3330 D2:3B43 F0 0A 00 00 0C 00 E0 0A 00 - - - .f 175,192,174 - 3331 D2:3B30 00 - - - .db 0 - 3332 D2:3B31 C4 98 - - .db 196,152 - 3333 D2:3B33 D3 9B - - .db 211,155 - 3334 D2:3B35 C4 9B - - .db 196,155 - 3335 D2:3B37 10 0B 00 F0 + 3331 D2:3B4C 00 - - - .db 0 + 3332 D2:3B4D C4 98 - - .db 196,152 + 3333 D2:3B4F D3 9B - - .db 211,155 + 3334 D2:3B51 C4 9B - - .db 196,155 + 3335 D2:3B53 10 0B 00 F0 0B 00 E0 0B 00 - - - .f 177,191,190 - 3336 D2:3B40 00 - - - .db 0 - 3337 D2:3B41 AE 98 - - .db 174,152 - 3338 D2:3B43 9C 98 - - .db 156,152 - 3339 D2:3B45 9C 9B - - .db 156,155 - 3340 D2:3B47 10 0B 00 E0 + 3336 D2:3B5C 00 - - - .db 0 + 3337 D2:3B5D AE 98 - - .db 174,152 + 3338 D2:3B5F 9C 98 - - .db 156,152 + 3339 D2:3B61 9C 9B - - .db 156,155 + 3340 D2:3B63 10 0B 00 E0 0B 00 00 0B 00 - - - .f 177,190,176 - 3341 D2:3B50 00 - - - .db 0 - 3342 D2:3B51 AE 98 - - .db 174,152 - 3343 D2:3B53 9C 9B - - .db 156,155 - 3344 D2:3B55 AE 9B - - .db 174,155 - 3345 D2:3B57 40 0B 00 D0 + 3341 D2:3B6C 00 - - - .db 0 + 3342 D2:3B6D AE 98 - - .db 174,152 + 3343 D2:3B6F 9C 9B - - .db 156,155 + 3344 D2:3B71 AE 9B - - .db 174,155 + 3345 D2:3B73 40 0B 00 D0 0B 00 10 0C 00 - - - .f 180,189,193 - 3346 D2:3B60 00 - - - .db 0 - 3347 D2:3B61 96 9C - - .db 150,156 - 3348 D2:3B63 94 9C - - .db 148,156 - 3349 D2:3B65 94 9F - - .db 148,159 - 3350 D2:3B67 40 0B 00 10 + 3346 D2:3B7C 00 - - - .db 0 + 3347 D2:3B7D 96 9C - - .db 150,156 + 3348 D2:3B7F 94 9C - - .db 148,156 + 3349 D2:3B81 94 9F - - .db 148,159 + 3350 D2:3B83 40 0B 00 10 0C 00 F0 0A 00 - - - .f 180,193,175 - 3351 D2:3B70 00 - - - .db 0 - 3352 D2:3B71 96 9C - - .db 150,156 - 3353 D2:3B73 94 9F - - .db 148,159 - 3354 D2:3B75 96 9F - - .db 150,159 - 3355 D2:3B77 00 0B 00 E0 + 3351 D2:3B8C 00 - - - .db 0 + 3352 D2:3B8D 96 9C - - .db 150,156 + 3353 D2:3B8F 94 9F - - .db 148,159 + 3354 D2:3B91 96 9F - - .db 150,159 + 3355 D2:3B93 00 0B 00 E0 0B 00 20 0C 00 - - - .f 176,190,194 - 3356 D2:3B80 00 - - - .db 0 - 3357 D2:3B81 C3 98 - - .db 195,152 - 3358 D2:3B83 B0 98 - - .db 176,152 - 3359 D2:3B85 B0 9B - - .db 176,155 - 3360 D2:3B87 00 0B 00 20 + 3356 D2:3B9C 00 - - - .db 0 + 3357 D2:3B9D C3 98 - - .db 195,152 + 3358 D2:3B9F B0 98 - - .db 176,152 + 3359 D2:3BA1 B0 9B - - .db 176,155 + 3360 D2:3BA3 00 0B 00 20 0C 00 D0 0A 00 - - - .f 176,194,173 - 3361 D2:3B90 00 - - - .db 0 - 3362 D2:3B91 C3 98 - - .db 195,152 - 3363 D2:3B93 B0 9B - - .db 176,155 - 3364 D2:3B95 C3 9B - - .db 195,155 - 3365 D2:3B97 E0 0C 00 30 + 3361 D2:3BAC 00 - - - .db 0 + 3362 D2:3BAD C3 98 - - .db 195,152 + 3363 D2:3BAF B0 9B - - .db 176,155 + 3364 D2:3BB1 C3 9B - - .db 195,155 + 3365 D2:3BB3 E0 0C 00 30 0A 00 20 0A 00 - - - .f 206,163,162 - 3366 D2:3BA0 00 - - - .db 0 - 3367 D2:3BA1 DF 90 - - .db 223,144 - 3368 D2:3BA3 C4 90 - - .db 196,144 - 3369 D2:3BA5 C4 93 - - .db 196,147 - 3370 D2:3BA7 E0 0C 00 20 + 3366 D2:3BBC 00 - - - .db 0 + 3367 D2:3BBD DF 90 - - .db 223,144 + 3368 D2:3BBF C4 90 - - .db 196,144 + 3369 D2:3BC1 C4 93 - - .db 196,147 + 3370 D2:3BC3 E0 0C 00 20 0A 00 10 0D 00 - - - .f 206,162,209 - 3371 D2:3BB0 00 - - - .db 0 - 3372 D2:3BB1 DF 90 - - .db 223,144 - 3373 D2:3BB3 C4 93 - - .db 196,147 - 3374 D2:3BB5 DF 93 - - .db 223,147 - 3375 D2:3BB7 A0 0C 00 70 + 3371 D2:3BCC 00 - - - .db 0 + 3372 D2:3BCD DF 90 - - .db 223,144 + 3373 D2:3BCF C4 93 - - .db 196,147 + 3374 D2:3BD1 DF 93 - - .db 223,147 + 3375 D2:3BD3 A0 0C 00 70 0A 00 30 0A 00 - - - .f 202,167,163 - 3376 D2:3BC0 00 - - - .db 0 - 3377 D2:3BC1 E0 90 - - .db 224,144 - 3378 D2:3BC3 FB 90 - - .db 251,144 - 3379 D2:3BC5 FB 93 - - .db 251,147 - 3380 D2:3BC7 A0 0C 00 30 + 3376 D2:3BDC 00 - - - .db 0 + 3377 D2:3BDD E0 90 - - .db 224,144 + 3378 D2:3BDF FB 90 - - .db 251,144 + 3379 D2:3BE1 FB 93 - - .db 251,147 + 3380 D2:3BE3 A0 0C 00 30 0A 00 E0 0C 00 - - - .f 202,163,206 - 3381 D2:3BD0 00 - - - .db 0 - 3382 D2:3BD1 E0 90 - - .db 224,144 - 3383 D2:3BD3 FB 93 - - .db 251,147 - 3384 D2:3BD5 E0 93 - - .db 224,147 - 3385 D2:3BD7 B0 0C 00 40 + 3381 D2:3BEC 00 - - - .db 0 + 3382 D2:3BED E0 90 - - .db 224,144 + 3383 D2:3BEF FB 93 - - .db 251,147 + 3384 D2:3BF1 E0 93 - - .db 224,147 + 3385 D2:3BF3 B0 0C 00 40 0A 00 70 0A 00 - - - .f 203,164,167 - 3386 D2:3BE0 00 - - - .db 0 - 3387 D2:3BE1 C8 2C - - .db 200,44 - 3388 D2:3BE3 E3 2C - - .db 227,44 - 3389 D2:3BE5 E3 3A - - .db 227,58 - 3390 D2:3BE7 B0 0C 00 70 + 3386 D2:3BFC 00 - - - .db 0 + 3387 D2:3BFD C8 2C - - .db 200,44 + 3388 D2:3BFF E3 2C - - .db 227,44 + 3389 D2:3C01 E3 3A - - .db 227,58 + 3390 D2:3C03 B0 0C 00 70 0A 00 A0 0C 00 - - - .f 203,167,202 - 3391 D2:3BF0 00 - - - .db 0 - 3392 D2:3BF1 C8 2C - - .db 200,44 - 3393 D2:3BF3 E3 3A - - .db 227,58 - 3394 D2:3BF5 C8 3A - - .db 200,58 - 3395 D2:3BF7 D0 0C 00 60 + 3391 D2:3C0C 00 - - - .db 0 + 3392 D2:3C0D C8 2C - - .db 200,44 + 3393 D2:3C0F E3 3A - - .db 227,58 + 3394 D2:3C11 C8 3A - - .db 200,58 + 3395 D2:3C13 D0 0C 00 60 0A 00 40 0A 00 - - - .f 205,166,164 - 3396 D2:3C00 00 - - - .db 0 - 3397 D2:3C01 9C 78 - - .db 156,120 - 3398 D2:3C03 B7 78 - - .db 183,120 - 3399 D2:3C05 B7 7F - - .db 183,127 - 3400 D2:3C07 D0 0C 00 40 + 3396 D2:3C1C 00 - - - .db 0 + 3397 D2:3C1D 9C 78 - - .db 156,120 + 3398 D2:3C1F B7 78 - - .db 183,120 + 3399 D2:3C21 B7 7F - - .db 183,127 + 3400 D2:3C23 D0 0C 00 40 0A 00 B0 0C 00 - - - .f 205,164,203 - 3401 D2:3C10 00 - - - .db 0 - 3402 D2:3C11 9C 78 - - .db 156,120 - 3403 D2:3C13 B7 7F - - .db 183,127 - 3404 D2:3C15 9C 7F - - .db 156,127 - 3405 D2:3C17 60 0A 00 D0 + 3401 D2:3C2C 00 - - - .db 0 + 3402 D2:3C2D 9C 78 - - .db 156,120 + 3403 D2:3C2F B7 7F - - .db 183,127 + 3404 D2:3C31 9C 7F - - .db 156,127 + 3405 D2:3C33 60 0A 00 D0 0C 00 C0 0C 00 - - - .f 166,205,204 - 3406 D2:3C20 00 - - - .db 0 - 3407 D2:3C21 9A 98 - - .db 154,152 - 3408 D2:3C23 80 98 - - .db 128,152 - 3409 D2:3C25 80 9B - - .db 128,155 - 3410 D2:3C27 60 0A 00 C0 + 3406 D2:3C3C 00 - - - .db 0 + 3407 D2:3C3D 9A 98 - - .db 154,152 + 3408 D2:3C3F 80 98 - - .db 128,152 + 3409 D2:3C41 80 9B - - .db 128,155 + 3410 D2:3C43 60 0A 00 C0 0C 00 50 0A 00 - - - .f 166,204,165 - 3411 D2:3C30 00 - - - .db 0 - 3412 D2:3C31 9A 98 - - .db 154,152 - 3413 D2:3C33 80 9B - - .db 128,155 - 3414 D2:3C35 9A 9B - - .db 154,155 - 3415 D2:3C37 10 0D 00 20 + 3411 D2:3C4C 00 - - - .db 0 + 3412 D2:3C4D 9A 98 - - .db 154,152 + 3413 D2:3C4F 80 9B - - .db 128,155 + 3414 D2:3C51 9A 9B - - .db 154,155 + 3415 D2:3C53 10 0D 00 20 0A 00 B0 0A 00 - - - .f 209,162,171 - 3416 D2:3C40 00 - - - .db 0 - 3417 D2:3C41 D4 98 - - .db 212,152 - 3418 D2:3C43 E3 98 - - .db 227,152 - 3419 D2:3C45 E3 9B - - .db 227,155 - 3420 D2:3C47 10 0D 00 B0 + 3416 D2:3C5C 00 - - - .db 0 + 3417 D2:3C5D D4 98 - - .db 212,152 + 3418 D2:3C5F E3 98 - - .db 227,152 + 3419 D2:3C61 E3 9B - - .db 227,155 + 3420 D2:3C63 10 0D 00 B0 0A 00 60 0C 00 - - - .f 209,171,198 - 3421 D2:3C50 00 - - - .db 0 - 3422 D2:3C51 D4 98 - - .db 212,152 - 3423 D2:3C53 E3 9B - - .db 227,155 - 3424 D2:3C55 D4 9B - - .db 212,155 - 3425 D2:3C57 E0 09 00 D0 + 3421 D2:3C6C 00 - - - .db 0 + 3422 D2:3C6D D4 98 - - .db 212,152 + 3423 D2:3C6F E3 9B - - .db 227,155 + 3424 D2:3C71 D4 9B - - .db 212,155 + 3425 D2:3C73 E0 09 00 D0 0A 00 C0 0A 00 - - - .f 158,173,172 - 3426 D2:3C60 00 - - - .db 0 - 3427 D2:3C61 FC 90 - - .db 252,144 - 3428 D2:3C63 FF 90 - - .db 255,144 - 3429 D2:3C65 FF 93 - - .db 255,147 - 3430 D2:3C67 70 0C 00 20 + 3426 D2:3C7C 00 - - - .db 0 + 3427 D2:3C7D FC 90 - - .db 252,144 + 3428 D2:3C7F FF 90 - - .db 255,144 + 3429 D2:3C81 FF 93 - - .db 255,147 + 3430 D2:3C83 70 0C 00 20 0C 00 30 0D 00 - - - .f 199,194,211 - 3431 D2:3C70 00 - - - .db 0 - 3432 D2:3C71 FF 93 - - .db 255,147 - 3433 D2:3C73 FF 90 - - .db 255,144 - 3434 D2:3C75 FC 90 - - .db 252,144 - 3435 D2:3C77 20 0A 00 E0 + 3431 D2:3C8C 00 - - - .db 0 + 3432 D2:3C8D FF 93 - - .db 255,147 + 3433 D2:3C8F FF 90 - - .db 255,144 + 3434 D2:3C91 FC 90 - - .db 252,144 + 3435 D2:3C93 20 0A 00 E0 09 00 C0 0A 00 - - - .f 162,158,172 - 3436 D2:3C80 00 - - - .db 0 - 3437 D2:3C81 F4 6C - - .db 244,108 - 3438 D2:3C83 FF 6C - - .db 255,108 - 3439 D2:3C85 FF 73 - - .db 255,115 - 3440 D2:3C87 C0 0A 00 B0 + 3436 D2:3C9C 00 - - - .db 0 + 3437 D2:3C9D F4 6C - - .db 244,108 + 3438 D2:3C9F FF 6C - - .db 255,108 + 3439 D2:3CA1 FF 73 - - .db 255,115 + 3440 D2:3CA3 C0 0A 00 B0 0A 00 20 0A 00 - - - .f 172,171,162 - 3441 D2:3C90 00 - - - .db 0 - 3442 D2:3C91 FF 73 - - .db 255,115 - 3443 D2:3C93 F4 73 - - .db 244,115 - 3444 D2:3C95 F4 6C - - .db 244,108 - 3445 D2:3C97 30 0D 00 10 + 3441 D2:3CAC 00 - - - .db 0 + 3442 D2:3CAD FF 73 - - .db 255,115 + 3443 D2:3CAF F4 73 - - .db 244,115 + 3444 D2:3CB1 F4 6C - - .db 244,108 + 3445 D2:3CB3 30 0D 00 10 0D 00 60 0C 00 - - - .f 211,209,198 - 3446 D2:3CA0 00 - - - .db 0 - 3447 D2:3CA1 FF 6C - - .db 255,108 - 3448 D2:3CA3 F4 6C - - .db 244,108 - 3449 D2:3CA5 F4 73 - - .db 244,115 - 3450 D2:3CA7 60 0C 00 70 + 3446 D2:3CBC 00 - - - .db 0 + 3447 D2:3CBD FF 6C - - .db 255,108 + 3448 D2:3CBF F4 6C - - .db 244,108 + 3449 D2:3CC1 F4 73 - - .db 244,115 + 3450 D2:3CC3 60 0C 00 70 0C 00 30 0D 00 - - - .f 198,199,211 - 3451 D2:3CB0 00 - - - .db 0 - 3452 D2:3CB1 F4 73 - - .db 244,115 - 3453 D2:3CB3 FF 73 - - .db 255,115 - 3454 D2:3CB5 FF 6C - - .db 255,108 - 3455 D2:3CB7 70 09 00 E0 + 3451 D2:3CCC 00 - - - .db 0 + 3452 D2:3CCD F4 73 - - .db 244,115 + 3453 D2:3CCF FF 73 - - .db 255,115 + 3454 D2:3CD1 FF 6C - - .db 255,108 + 3455 D2:3CD3 70 09 00 E0 09 00 20 0A 00 - - - .f 151,158,162 - 3456 D2:3CC0 00 - - - .db 0 - 3457 D2:3CC1 CF 88 - - .db 207,136 - 3458 D2:3CC3 CF 8F - - .db 207,143 - 3459 D2:3CC5 C4 8F - - .db 196,143 - 3460 D2:3CC7 90 09 00 80 + 3456 D2:3CDC 00 - - - .db 0 + 3457 D2:3CDD CF 88 - - .db 207,136 + 3458 D2:3CDF CF 8F - - .db 207,143 + 3459 D2:3CE1 C4 8F - - .db 196,143 + 3460 D2:3CE3 90 09 00 80 09 00 70 09 00 - - - .f 153,152,151 - 3461 D2:3CD0 00 - - - .db 0 - 3462 D2:3CD1 9C 6C - - .db 156,108 - 3463 D2:3CD3 A2 6C - - .db 162,108 - 3464 D2:3CD5 A2 77 - - .db 162,119 - 3465 D2:3CD7 10 0D 00 30 + 3461 D2:3CEC 00 - - - .db 0 + 3462 D2:3CED 9C 6C - - .db 156,108 + 3463 D2:3CEF A2 6C - - .db 162,108 + 3464 D2:3CF1 A2 77 - - .db 162,119 + 3465 D2:3CF3 10 0D 00 30 0D 00 80 0D 00 - - - .f 209,211,216 - 3466 D2:3CE0 00 - - - .db 0 - 3467 D2:3CE1 C4 8F - - .db 196,143 - 3468 D2:3CE3 CF 8F - - .db 207,143 - 3469 D2:3CE5 CF 88 - - .db 207,136 - 3470 D2:3CE7 80 0D 00 90 + 3466 D2:3CFC 00 - - - .db 0 + 3467 D2:3CFD C4 8F - - .db 196,143 + 3468 D2:3CFF CF 8F - - .db 207,143 + 3469 D2:3D01 CF 88 - - .db 207,136 + 3470 D2:3D03 80 0D 00 90 0D 00 A0 0D 00 - - - .f 216,217,218 - 3471 D2:3CF0 00 - - - .db 0 - 3472 D2:3CF1 A2 77 - - .db 162,119 - 3473 D2:3CF3 A2 6C - - .db 162,108 - 3474 D2:3CF5 9C 6C - - .db 156,108 - 3475 D2:3CF7 D0 0B 00 B0 + 3471 D2:3D0C 00 - - - .db 0 + 3472 D2:3D0D A2 77 - - .db 162,119 + 3473 D2:3D0F A2 6C - - .db 162,108 + 3474 D2:3D11 9C 6C - - .db 156,108 + 3475 D2:3D13 D0 0B 00 B0 0B 00 90 0D 00 - - - .f 189,187,217 - 3476 D2:3D00 00 - - - .db 0 - 3477 D2:3D01 98 97 - - .db 152,151 - 3478 D2:3D03 98 90 - - .db 152,144 - 3479 D2:3D05 9E 90 - - .db 158,144 - 3480 D2:3D07 80 0D 00 70 + 3476 D2:3D1C 00 - - - .db 0 + 3477 D2:3D1D 98 97 - - .db 152,151 + 3478 D2:3D1F 98 90 - - .db 152,144 + 3479 D2:3D21 9E 90 - - .db 158,144 + 3480 D2:3D23 80 0D 00 70 0D 00 90 0D 00 - - - .f 216,215,217 - 3481 D2:3D10 00 - - - .db 0 - 3482 D2:3D11 C0 97 - - .db 192,151 - 3483 D2:3D13 C0 90 - - .db 192,144 - 3484 D2:3D15 C3 90 - - .db 195,144 - 3485 D2:3D17 50 0B 00 80 + 3481 D2:3D2C 00 - - - .db 0 + 3482 D2:3D2D C0 97 - - .db 192,151 + 3483 D2:3D2F C0 90 - - .db 192,144 + 3484 D2:3D31 C3 90 - - .db 195,144 + 3485 D2:3D33 50 0B 00 80 0B 00 60 0B 00 - - - .f 181,184,182 - 3486 D2:3D20 00 - - - .db 0 - 3487 D2:3D21 94 9F - - .db 148,159 - 3488 D2:3D23 94 9C - - .db 148,156 - 3489 D2:3D25 96 9C - - .db 150,156 - 3490 D2:3D27 80 0B 00 70 + 3486 D2:3D3C 00 - - - .db 0 + 3487 D2:3D3D 94 9F - - .db 148,159 + 3488 D2:3D3F 94 9C - - .db 148,156 + 3489 D2:3D41 96 9C - - .db 150,156 + 3490 D2:3D43 80 0B 00 70 0B 00 60 0B 00 - - - .f 184,183,182 - 3491 D2:3D30 00 - - - .db 0 - 3492 D2:3D31 94 9F - - .db 148,159 - 3493 D2:3D33 94 9C - - .db 148,156 - 3494 D2:3D35 96 9C - - .db 150,156 - 3495 D2:3D37 C0 0B 00 B0 + 3491 D2:3D4C 00 - - - .db 0 + 3492 D2:3D4D 94 9F - - .db 148,159 + 3493 D2:3D4F 94 9C - - .db 148,156 + 3494 D2:3D51 96 9C - - .db 150,156 + 3495 D2:3D53 C0 0B 00 B0 0B 00 A0 0B 00 - - - .f 188,187,186 - 3496 D2:3D40 00 - - - .db 0 - 3497 D2:3D41 94 9F - - .db 148,159 - 3498 D2:3D43 94 9C - - .db 148,156 - 3499 D2:3D45 96 9C - - .db 150,156 - 3500 D2:3D47 90 0B 00 A0 + 3496 D2:3D5C 00 - - - .db 0 + 3497 D2:3D5D 94 9F - - .db 148,159 + 3498 D2:3D5F 94 9C - - .db 148,156 + 3499 D2:3D61 96 9C - - .db 150,156 + 3500 D2:3D63 90 0B 00 A0 0B 00 B0 0B 00 - - - .f 185,186,187 - 3501 D2:3D50 00 - - - .db 0 - 3502 D2:3D51 94 9F - - .db 148,159 - 3503 D2:3D53 94 9C - - .db 148,156 - 3504 D2:3D55 96 9C - - .db 150,156 - 3505 D2:3D57 40 0C 00 70 + 3501 D2:3D6C 00 - - - .db 0 + 3502 D2:3D6D 94 9F - - .db 148,159 + 3503 D2:3D6F 94 9C - - .db 148,156 + 3504 D2:3D71 96 9C - - .db 150,156 + 3505 D2:3D73 40 0C 00 70 0C 00 60 0C 00 - - - .f 196,199,198 - 3506 D2:3D60 00 - - - .db 0 - 3507 D2:3D61 FF 87 - - .db 255,135 - 3508 D2:3D63 FF 80 - - .db 255,128 - 3509 D2:3D65 F4 80 - - .db 244,128 - 3510 D2:3D67 90 0C 00 80 + 3506 D2:3D7C 00 - - - .db 0 + 3507 D2:3D7D FF 87 - - .db 255,135 + 3508 D2:3D7F FF 80 - - .db 255,128 + 3509 D2:3D81 F4 80 - - .db 244,128 + 3510 D2:3D83 90 0C 00 80 0C 00 40 0C 00 - - - .f 201,200,196 - 3511 D2:3D70 00 - - - .db 0 - 3512 D2:3D71 AC 8F - - .db 172,143 - 3513 D2:3D73 B7 8F - - .db 183,143 - 3514 D2:3D75 B7 88 - - .db 183,136 - 3515 D2:3D77 20 0B 00 B0 + 3511 D2:3D8C 00 - - - .db 0 + 3512 D2:3D8D AC 8F - - .db 172,143 + 3513 D2:3D8F B7 8F - - .db 183,143 + 3514 D2:3D91 B7 88 - - .db 183,136 + 3515 D2:3D93 20 0B 00 B0 0A 00 C0 0A 00 - - - .f 178,171,172 - 3516 D2:3D80 00 - - - .db 0 - 3517 D2:3D81 F4 87 - - .db 244,135 - 3518 D2:3D83 F4 80 - - .db 244,128 - 3519 D2:3D85 FF 80 - - .db 255,128 - 3520 D2:3D87 80 0A 00 90 + 3516 D2:3D9C 00 - - - .db 0 + 3517 D2:3D9D F4 87 - - .db 244,135 + 3518 D2:3D9F F4 80 - - .db 244,128 + 3519 D2:3DA1 FF 80 - - .db 255,128 + 3520 D2:3DA3 80 0A 00 90 0A 00 20 0B 00 - - - .f 168,169,178 - 3521 D2:3D90 00 - - - .db 0 - 3522 D2:3D91 B7 8F - - .db 183,143 - 3523 D2:3D93 AC 8F - - .db 172,143 - 3524 D2:3D95 AC 88 - - .db 172,136 - 3525 D2:3D97 40 0B 00 A0 + 3521 D2:3DAC 00 - - - .db 0 + 3522 D2:3DAD B7 8F - - .db 183,143 + 3523 D2:3DAF AC 8F - - .db 172,143 + 3524 D2:3DB1 AC 88 - - .db 172,136 + 3525 D2:3DB3 40 0B 00 A0 09 00 80 09 00 - - - .f 180,154,152 - 3526 D2:3DA0 00 - - - .db 0 - 3527 D2:3DA1 98 97 - - .db 152,151 - 3528 D2:3DA3 9E 97 - - .db 158,151 - 3529 D2:3DA5 9E 90 - - .db 158,144 - 3530 D2:3DA7 50 0B 00 90 + 3526 D2:3DBC 00 - - - .db 0 + 3527 D2:3DBD 98 97 - - .db 152,151 + 3528 D2:3DBF 9E 97 - - .db 158,151 + 3529 D2:3DC1 9E 90 - - .db 158,144 + 3530 D2:3DC3 50 0B 00 90 09 00 50 0A 00 - - - .f 181,153,165 - 3531 D2:3DB0 00 - - - .db 0 - 3532 D2:3DB1 AA 88 - - .db 170,136 - 3533 D2:3DB3 A0 88 - - .db 160,136 - 3534 D2:3DB5 A0 8F - - .db 160,143 - 3535 D2:3DB7 80 09 00 90 + 3531 D2:3DCC 00 - - - .db 0 + 3532 D2:3DCD AA 88 - - .db 170,136 + 3533 D2:3DCF A0 88 - - .db 160,136 + 3534 D2:3DD1 A0 8F - - .db 160,143 + 3535 D2:3DD3 80 09 00 90 09 00 50 0B 00 - - - .f 152,153,181 - 3536 D2:3DC0 00 - - - .db 0 - 3537 D2:3DC1 86 97 - - .db 134,151 - 3538 D2:3DC3 86 90 - - .db 134,144 - 3539 D2:3DC5 80 90 - - .db 128,144 - 3540 D2:3DC7 A0 0D 00 90 + 3536 D2:3DDC 00 - - - .db 0 + 3537 D2:3DDD 86 97 - - .db 134,151 + 3538 D2:3DDF 86 90 - - .db 134,144 + 3539 D2:3DE1 80 90 - - .db 128,144 + 3540 D2:3DE3 A0 0D 00 90 0D 00 B0 0B 00 - - - .f 218,217,187 - 3541 D2:3DD0 00 - - - .db 0 - 3542 D2:3DD1 86 90 - - .db 134,144 - 3543 D2:3DD3 86 97 - - .db 134,151 - 3544 D2:3DD5 80 97 - - .db 128,151 - 3545 D2:3DD7 10 0D 00 A0 + 3541 D2:3DEC 00 - - - .db 0 + 3542 D2:3DED 86 90 - - .db 134,144 + 3543 D2:3DEF 86 97 - - .db 134,151 + 3544 D2:3DF1 80 97 - - .db 128,151 + 3545 D2:3DF3 10 0D 00 A0 0D 00 C0 0C 00 - - - .f 209,218,204 - 3546 D2:3DE0 00 - - - .db 0 - 3547 D2:3DE1 C4 3E - - .db 196,62 - 3548 D2:3DE3 C4 2C - - .db 196,44 - 3549 D2:3DE5 C7 2C - - .db 199,44 - 3550 D2:3DE7 50 0B 00 60 + 3546 D2:3DFC 00 - - - .db 0 + 3547 D2:3DFD C4 3E - - .db 196,62 + 3548 D2:3DFF C4 2C - - .db 196,44 + 3549 D2:3E01 C7 2C - - .db 199,44 + 3550 D2:3E03 50 0B 00 60 0B 00 80 09 00 - - - .f 181,182,152 - 3551 D2:3DF0 00 - - - .db 0 - 3552 D2:3DF1 80 90 - - .db 128,144 - 3553 D2:3DF3 80 97 - - .db 128,151 - 3554 D2:3DF5 86 97 - - .db 134,151 - 3555 D2:3DF7 B0 0B 00 C0 + 3551 D2:3E0C 00 - - - .db 0 + 3552 D2:3E0D 80 90 - - .db 128,144 + 3553 D2:3E0F 80 97 - - .db 128,151 + 3554 D2:3E11 86 97 - - .db 134,151 + 3555 D2:3E13 B0 0B 00 C0 0B 00 A0 0D 00 - - - .f 187,188,218 - 3556 D2:3E00 00 - - - .db 0 - 3557 D2:3E01 80 97 - - .db 128,151 - 3558 D2:3E03 80 90 - - .db 128,144 - 3559 D2:3E05 86 90 - - .db 134,144 - 3560 D2:3E07 80 09 00 60 + 3556 D2:3E1C 00 - - - .db 0 + 3557 D2:3E1D 80 97 - - .db 128,151 + 3558 D2:3E1F 80 90 - - .db 128,144 + 3559 D2:3E21 86 90 - - .db 134,144 + 3560 D2:3E23 80 09 00 60 0B 00 40 0B 00 - - - .f 152,182,180 - 3561 D2:3E10 00 - - - .db 0 - 3562 D2:3E11 9E 90 - - .db 158,144 - 3563 D2:3E13 98 90 - - .db 152,144 - 3564 D2:3E15 98 97 - - .db 152,151 - 3565 D2:3E17 90 0D 00 70 + 3561 D2:3E2C 00 - - - .db 0 + 3562 D2:3E2D 9E 90 - - .db 158,144 + 3563 D2:3E2F 98 90 - - .db 152,144 + 3564 D2:3E31 98 97 - - .db 152,151 + 3565 D2:3E33 90 0D 00 70 0D 00 D0 0B 00 - - - .f 217,215,189 - 3566 D2:3E20 00 - - - .db 0 - 3567 D2:3E21 9E 90 - - .db 158,144 - 3568 D2:3E23 9E 97 - - .db 158,151 - 3569 D2:3E25 98 97 - - .db 152,151 - 3570 D2:3E27 80 09 00 A0 + 3566 D2:3E3C 00 - - - .db 0 + 3567 D2:3E3D 9E 90 - - .db 158,144 + 3568 D2:3E3F 9E 97 - - .db 158,151 + 3569 D2:3E41 98 97 - - .db 152,151 + 3570 D2:3E43 80 09 00 A0 09 00 70 09 00 - - - .f 152,154,151 - 3571 D2:3E30 00 - - - .db 0 - 3572 D2:3E31 C3 90 - - .db 195,144 - 3573 D2:3E33 C0 90 - - .db 192,144 - 3574 D2:3E35 C0 97 - - .db 192,151 - 3575 D2:3E37 00 0C 00 00 + 3571 D2:3E4C 00 - - - .db 0 + 3572 D2:3E4D C3 90 - - .db 195,144 + 3573 D2:3E4F C0 90 - - .db 192,144 + 3574 D2:3E51 C0 97 - - .db 192,151 + 3575 D2:3E53 00 0C 00 00 0D 00 50 0C 00 - - - .f 192,208,197 - 3576 D2:3E40 00 - - - .db 0 - 3577 D2:3E41 92 9C - - .db 146,156 - 3578 D2:3E43 90 9C - - .db 144,156 - 3579 D2:3E45 90 9F - - .db 144,159 - 3580 D2:3E47 00 0D 00 50 + 3576 D2:3E5C 00 - - - .db 0 + 3577 D2:3E5D 92 9C - - .db 146,156 + 3578 D2:3E5F 90 9C - - .db 144,156 + 3579 D2:3E61 90 9F - - .db 144,159 + 3580 D2:3E63 00 0D 00 50 0D 00 50 0C 00 - - - .f 208,213,197 - 3581 D2:3E50 00 - - - .db 0 - 3582 D2:3E51 92 9C - - .db 146,156 - 3583 D2:3E53 90 9C - - .db 144,156 - 3584 D2:3E55 90 9F - - .db 144,159 - 3585 D2:3E57 50 0D 00 F0 + 3581 D2:3E6C 00 - - - .db 0 + 3582 D2:3E6D 92 9C - - .db 146,156 + 3583 D2:3E6F 90 9C - - .db 144,156 + 3584 D2:3E71 90 9F - - .db 144,159 + 3585 D2:3E73 50 0D 00 F0 0C 00 50 0C 00 - - - .f 213,207,197 - 3586 D2:3E60 00 - - - .db 0 - 3587 D2:3E61 90 9F - - .db 144,159 - 3588 D2:3E63 90 9C - - .db 144,156 - 3589 D2:3E65 92 9C - - .db 146,156 - 3590 D2:3E67 F0 0C 00 F0 + 3586 D2:3E7C 00 - - - .db 0 + 3587 D2:3E7D 90 9F - - .db 144,159 + 3588 D2:3E7F 90 9C - - .db 144,156 + 3589 D2:3E81 92 9C - - .db 146,156 + 3590 D2:3E83 F0 0C 00 F0 0B 00 50 0C 00 - - - .f 207,191,197 - 3591 D2:3E70 00 - - - .db 0 - 3592 D2:3E71 90 9F - - .db 144,159 - 3593 D2:3E73 90 9C - - .db 144,156 - 3594 D2:3E75 92 9C - - .db 146,156 - 3595 D2:3E77 10 0C 00 60 + 3591 D2:3E8C 00 - - - .db 0 + 3592 D2:3E8D 90 9F - - .db 144,159 + 3593 D2:3E8F 90 9C - - .db 144,156 + 3594 D2:3E91 92 9C - - .db 146,156 + 3595 D2:3E93 10 0C 00 60 0D 00 00 0C 00 - - - .f 193,214,192 - 3596 D2:3E80 00 - - - .db 0 - 3597 D2:3E81 92 9F - - .db 146,159 - 3598 D2:3E83 90 9F - - .db 144,159 - 3599 D2:3E85 90 9C - - .db 144,156 - 3600 D2:3E87 00 0D 00 00 + 3596 D2:3E9C 00 - - - .db 0 + 3597 D2:3E9D 92 9F - - .db 146,159 + 3598 D2:3E9F 90 9F - - .db 144,159 + 3599 D2:3EA1 90 9C - - .db 144,156 + 3600 D2:3EA3 00 0D 00 00 0C 00 60 0D 00 - - - .f 208,192,214 - 3601 D2:3E90 00 - - - .db 0 - 3602 D2:3E91 90 9C - - .db 144,156 - 3603 D2:3E93 92 9C - - .db 146,156 - 3604 D2:3E95 92 9F - - .db 146,159 - 3605 D2:3E97 00 0D 00 60 + 3601 D2:3EAC 00 - - - .db 0 + 3602 D2:3EAD 90 9C - - .db 144,156 + 3603 D2:3EAF 92 9C - - .db 146,156 + 3604 D2:3EB1 92 9F - - .db 146,159 + 3605 D2:3EB3 00 0D 00 60 0D 00 B0 0D 00 - - - .f 208,214,219 - 3606 D2:3EA0 00 - - - .db 0 - 3607 D2:3EA1 92 9C - - .db 146,156 - 3608 D2:3EA3 92 9F - - .db 146,159 - 3609 D2:3EA5 90 9F - - .db 144,159 - 3610 D2:3EA7 B0 0D 00 50 + 3606 D2:3EBC 00 - - - .db 0 + 3607 D2:3EBD 92 9C - - .db 146,156 + 3608 D2:3EBF 92 9F - - .db 146,159 + 3609 D2:3EC1 90 9F - - .db 144,159 + 3610 D2:3EC3 B0 0D 00 50 0D 00 00 0D 00 - - - .f 219,213,208 - 3611 D2:3EB0 00 - - - .db 0 - 3612 D2:3EB1 90 9F - - .db 144,159 - 3613 D2:3EB3 90 9C - - .db 144,156 - 3614 D2:3EB5 92 9C - - .db 146,156 - 3615 D2:3EB7 50 0D 00 B0 + 3611 D2:3ECC 00 - - - .db 0 + 3612 D2:3ECD 90 9F - - .db 144,159 + 3613 D2:3ECF 90 9C - - .db 144,156 + 3614 D2:3ED1 92 9C - - .db 146,156 + 3615 D2:3ED3 50 0D 00 B0 0D 00 40 0D 00 - - - .f 213,219,212 - 3616 D2:3EC0 00 - - - .db 0 - 3617 D2:3EC1 92 9C - - .db 146,156 - 3618 D2:3EC3 92 9F - - .db 146,159 - 3619 D2:3EC5 90 9F - - .db 144,159 - 3620 D2:3EC7 40 0D 00 F0 + 3616 D2:3EDC 00 - - - .db 0 + 3617 D2:3EDD 92 9C - - .db 146,156 + 3618 D2:3EDF 92 9F - - .db 146,159 + 3619 D2:3EE1 90 9F - - .db 144,159 + 3620 D2:3EE3 40 0D 00 F0 0C 00 50 0D 00 - - - .f 212,207,213 - 3621 D2:3ED0 00 - - - .db 0 - 3622 D2:3ED1 90 9F - - .db 144,159 - 3623 D2:3ED3 90 9C - - .db 144,156 - 3624 D2:3ED5 92 9C - - .db 146,156 - 3625 D2:3ED7 F0 0C 00 40 + 3621 D2:3EEC 00 - - - .db 0 + 3622 D2:3EED 90 9F - - .db 144,159 + 3623 D2:3EEF 90 9C - - .db 144,156 + 3624 D2:3EF1 92 9C - - .db 146,156 + 3625 D2:3EF3 F0 0C 00 40 0D 00 E0 0B 00 - - - .f 207,212,190 - 3626 D2:3EE0 00 - - - .db 0 - 3627 D2:3EE1 92 9C - - .db 146,156 - 3628 D2:3EE3 92 9F - - .db 146,159 - 3629 D2:3EE5 90 9F - - .db 144,159 - 3630 D2:3EE7 E0 0B 00 F0 + 3626 D2:3EFC 00 - - - .db 0 + 3627 D2:3EFD 92 9C - - .db 146,156 + 3628 D2:3EFF 92 9F - - .db 146,159 + 3629 D2:3F01 90 9F - - .db 144,159 + 3630 D2:3F03 E0 0B 00 F0 0B 00 F0 0C 00 - - - .f 190,191,207 - 3631 D2:3EF0 00 - - - .db 0 - 3632 D2:3EF1 90 9F - - .db 144,159 - 3633 D2:3EF3 90 9C - - .db 144,156 - 3634 D2:3EF5 92 9C - - .db 146,156 - 3635 D2:3EF7 70 0D 00 10 + 3631 D2:3F0C 00 - - - .db 0 + 3632 D2:3F0D 90 9F - - .db 144,159 + 3633 D2:3F0F 90 9C - - .db 144,156 + 3634 D2:3F11 92 9C - - .db 146,156 + 3635 D2:3F13 70 0D 00 10 0C 00 D0 0B 00 - - - .f 215,193,189 - 3636 D2:3F00 00 - - - .db 0 - 3637 D2:3F01 9C 9F - - .db 156,159 - 3638 D2:3F03 9E 9F - - .db 158,159 - 3639 D2:3F05 9E 9C - - .db 158,156 - 3640 D2:3F07 70 0D 00 60 + 3636 D2:3F1C 00 - - - .db 0 + 3637 D2:3F1D 9C 9F - - .db 156,159 + 3638 D2:3F1F 9E 9F - - .db 158,159 + 3639 D2:3F21 9E 9C - - .db 158,156 + 3640 D2:3F23 70 0D 00 60 0D 00 10 0C 00 - - - .f 215,214,193 - 3641 D2:3F10 00 - - - .db 0 - 3642 D2:3F11 90 9C - - .db 144,156 - 3643 D2:3F13 92 9C - - .db 146,156 - 3644 D2:3F15 92 9F - - .db 146,159 - 3645 D2:3F17 70 0D 00 80 + 3641 D2:3F2C 00 - - - .db 0 + 3642 D2:3F2D 90 9C - - .db 144,156 + 3643 D2:3F2F 92 9C - - .db 146,156 + 3644 D2:3F31 92 9F - - .db 146,159 + 3645 D2:3F33 70 0D 00 80 0D 00 60 0D 00 - - - .f 215,216,214 - 3646 D2:3F20 00 - - - .db 0 - 3647 D2:3F21 92 9C - - .db 146,156 - 3648 D2:3F23 92 9F - - .db 146,159 - 3649 D2:3F25 90 9F - - .db 144,159 - 3650 D2:3F27 80 0D 00 B0 + 3646 D2:3F3C 00 - - - .db 0 + 3647 D2:3F3D 92 9C - - .db 146,156 + 3648 D2:3F3F 92 9F - - .db 146,159 + 3649 D2:3F41 90 9F - - .db 144,159 + 3650 D2:3F43 80 0D 00 B0 0D 00 60 0D 00 - - - .f 216,219,214 - 3651 D2:3F30 00 - - - .db 0 - 3652 D2:3F31 92 9C - - .db 146,156 - 3653 D2:3F33 92 9F - - .db 146,159 - 3654 D2:3F35 90 9F - - .db 144,159 - 3655 D2:3F37 B0 0D 00 80 + 3651 D2:3F4C 00 - - - .db 0 + 3652 D2:3F4D 92 9C - - .db 146,156 + 3653 D2:3F4F 92 9F - - .db 146,159 + 3654 D2:3F51 90 9F - - .db 144,159 + 3655 D2:3F53 B0 0D 00 80 0D 00 30 0D 00 - - - .f 219,216,211 - 3656 D2:3F40 00 - - - .db 0 - 3657 D2:3F41 FF 98 - - .db 255,152 - 3658 D2:3F43 FF 9B - - .db 255,155 - 3659 D2:3F45 FC 9B - - .db 252,155 - 3660 D2:3F47 30 0D 00 40 + 3656 D2:3F5C 00 - - - .db 0 + 3657 D2:3F5D FF 98 - - .db 255,152 + 3658 D2:3F5F FF 9B - - .db 255,155 + 3659 D2:3F61 FC 9B - - .db 252,155 + 3660 D2:3F63 30 0D 00 40 0D 00 B0 0D 00 - - - .f 211,212,219 - 3661 D2:3F50 00 - - - .db 0 - 3662 D2:3F51 FC 9B - - .db 252,155 - 3663 D2:3F53 FC 98 - - .db 252,152 - 3664 D2:3F55 FF 98 - - .db 255,152 - 3665 D2:3F57 40 0D 00 30 + 3661 D2:3F6C 00 - - - .db 0 + 3662 D2:3F6D FC 9B - - .db 252,155 + 3663 D2:3F6F FC 98 - - .db 252,152 + 3664 D2:3F71 FF 98 - - .db 255,152 + 3665 D2:3F73 40 0D 00 30 0D 00 20 0C 00 - - - .f 212,211,194 - 3666 D2:3F60 00 - - - .db 0 - 3667 D2:3F61 86 9C - - .db 134,156 - 3668 D2:3F63 86 9F - - .db 134,159 - 3669 D2:3F65 84 9F - - .db 132,159 - 3670 D2:3F67 20 0C 00 E0 + 3666 D2:3F7C 00 - - - .db 0 + 3667 D2:3F7D 86 9C - - .db 134,156 + 3668 D2:3F7F 86 9F - - .db 134,159 + 3669 D2:3F81 84 9F - - .db 132,159 + 3670 D2:3F83 20 0C 00 E0 0B 00 40 0D 00 - - - .f 194,190,212 - 3671 D2:3F70 00 - - - .db 0 - 3672 D2:3F71 84 9F - - .db 132,159 - 3673 D2:3F73 84 9C - - .db 132,156 - 3674 D2:3F75 86 9C - - .db 134,156 - 3675 D2:3F77 E0 0A 00 A0 + 3671 D2:3F8C 00 - - - .db 0 + 3672 D2:3F8D 84 9F - - .db 132,159 + 3673 D2:3F8F 84 9C - - .db 132,156 + 3674 D2:3F91 86 9C - - .db 134,156 + 3675 D2:3F93 E0 0A 00 A0 0A 00 10 0A 00 - - - .f 174,170,161 - 3676 D2:3F80 00 - - - .db 0 - 3677 D2:3F81 92 9C - - .db 146,156 - 3678 D2:3F83 90 9C - - .db 144,156 - 3679 D2:3F85 90 9F - - .db 144,159 - 3680 D2:3F87 10 0A 00 A0 + 3676 D2:3F9C 00 - - - .db 0 + 3677 D2:3F9D 92 9C - - .db 146,156 + 3678 D2:3F9F 90 9C - - .db 144,156 + 3679 D2:3FA1 90 9F - - .db 144,159 + 3680 D2:3FA3 10 0A 00 A0 0A 00 C0 09 00 - - - .f 161,170,156 - 3681 D2:3F90 00 - - - .db 0 - 3682 D2:3F91 92 9C - - .db 146,156 - 3683 D2:3F93 90 9C - - .db 144,156 - 3684 D2:3F95 90 9F - - .db 144,159 - 3685 D2:3F97 C0 09 00 A0 + 3681 D2:3FAC 00 - - - .db 0 + 3682 D2:3FAD 92 9C - - .db 146,156 + 3683 D2:3FAF 90 9C - - .db 144,156 + 3684 D2:3FB1 90 9F - - .db 144,159 + 3685 D2:3FB3 C0 09 00 A0 0A 00 F0 09 00 - - - .f 156,170,159 - 3686 D2:3FA0 00 - - - .db 0 - 3687 D2:3FA1 92 9C - - .db 146,156 - 3688 D2:3FA3 90 9C - - .db 144,156 - 3689 D2:3FA5 90 9F - - .db 144,159 - 3690 D2:3FA7 F0 09 00 A0 + 3686 D2:3FBC 00 - - - .db 0 + 3687 D2:3FBD 92 9C - - .db 146,156 + 3688 D2:3FBF 90 9C - - .db 144,156 + 3689 D2:3FC1 90 9F - - .db 144,159 + 3690 D2:3FC3 F0 09 00 A0 0A 00 10 0B 00 - - - .f 159,170,177 - 3691 D2:3FB0 00 - - - .db 0 - 3692 D2:3FB1 92 9C - - .db 146,156 - 3693 D2:3FB3 90 9C - - .db 144,156 - 3694 D2:3FB5 90 9F - - .db 144,159 - 3695 D2:3FB7 D0 09 00 F0 + 3691 D2:3FCC 00 - - - .db 0 + 3692 D2:3FCD 92 9C - - .db 146,156 + 3693 D2:3FCF 90 9C - - .db 144,156 + 3694 D2:3FD1 90 9F - - .db 144,159 + 3695 D2:3FD3 D0 09 00 F0 0A 00 E0 0A 00 - - - .f 157,175,174 - 3696 D2:3FC0 00 - - - .db 0 - 3697 D2:3FC1 92 9F - - .db 146,159 - 3698 D2:3FC3 90 9F - - .db 144,159 - 3699 D2:3FC5 90 9C - - .db 144,156 - 3700 D2:3FC7 E0 0A 00 10 + 3696 D2:3FDC 00 - - - .db 0 + 3697 D2:3FDD 92 9F - - .db 146,159 + 3698 D2:3FDF 90 9F - - .db 144,159 + 3699 D2:3FE1 90 9C - - .db 144,156 + 3700 D2:3FE3 E0 0A 00 10 0A 00 D0 09 00 - - - .f 174,161,157 - 3701 D2:3FD0 00 - - - .db 0 - 3702 D2:3FD1 90 9C - - .db 144,156 - 3703 D2:3FD3 92 9C - - .db 146,156 - 3704 D2:3FD5 92 9F - - .db 146,159 - 3705 D2:3FD7 60 09 00 D0 + 3701 D2:3FEC 00 - - - .db 0 + 3702 D2:3FED 90 9C - - .db 144,156 + 3703 D2:3FEF 92 9C - - .db 146,156 + 3704 D2:3FF1 92 9F - - .db 146,159 + 3705 D2:3FF3 60 09 00 D0 09 00 10 0A 00 - - - .f 150,157,161 - 3706 D2:3FE0 00 - - - .db 0 - 3707 D2:3FE1 92 9F - - .db 146,159 - 3708 D2:3FE3 90 9F - - .db 144,159 - 3709 D2:3FE5 90 9C - - .db 144,156 - 3710 D2:3FE7 10 0A 00 C0 + 3706 D2:3FFC 00 - - - .db 0 + 3707 D2:3FFD 92 9F - - .db 146,159 + 3708 D2:3FFF 90 9F - - .db 144,159 + 3709 D2:4001 90 9C - - .db 144,156 + 3710 D2:4003 10 0A 00 C0 09 00 60 09 00 - - - .f 161,156,150 - 3711 D2:3FF0 00 - - - .db 0 - 3712 D2:3FF1 90 9C - - .db 144,156 - 3713 D2:3FF3 92 9C - - .db 146,156 - 3714 D2:3FF5 92 9F - - .db 146,159 - 3715 D2:3FF7 B0 09 00 60 + 3711 D2:400C 00 - - - .db 0 + 3712 D2:400D 90 9C - - .db 144,156 + 3713 D2:400F 92 9C - - .db 146,156 + 3714 D2:4011 92 9F - - .db 146,159 + 3715 D2:4013 B0 09 00 60 09 00 C0 09 00 - - - .f 155,150,156 - 3716 D2:4000 00 - - - .db 0 - 3717 D2:4001 90 9F - - .db 144,159 - 3718 D2:4003 92 9F - - .db 146,159 - 3719 D2:4005 92 9C - - .db 146,156 - 3720 D2:4007 C0 09 00 F0 + 3716 D2:401C 00 - - - .db 0 + 3717 D2:401D 90 9F - - .db 144,159 + 3718 D2:401F 92 9F - - .db 146,159 + 3719 D2:4021 92 9C - - .db 146,156 + 3720 D2:4023 C0 09 00 F0 09 00 B0 09 00 - - - .f 156,159,155 - 3721 D2:4010 00 - - - .db 0 - 3722 D2:4011 92 9C - - .db 146,156 - 3723 D2:4013 90 9C - - .db 144,156 - 3724 D2:4015 90 9F - - .db 144,159 - 3725 D2:4017 00 0B 00 B0 + 3721 D2:402C 00 - - - .db 0 + 3722 D2:402D 92 9C - - .db 146,156 + 3723 D2:402F 90 9C - - .db 144,156 + 3724 D2:4031 90 9F - - .db 144,159 + 3725 D2:4033 00 0B 00 B0 09 00 F0 09 00 - - - .f 176,155,159 - 3726 D2:4020 00 - - - .db 0 - 3727 D2:4021 90 9F - - .db 144,159 - 3728 D2:4023 92 9F - - .db 146,159 - 3729 D2:4025 92 9C - - .db 146,156 - 3730 D2:4027 F0 09 00 10 + 3726 D2:403C 00 - - - .db 0 + 3727 D2:403D 90 9F - - .db 144,159 + 3728 D2:403F 92 9F - - .db 146,159 + 3729 D2:4041 92 9C - - .db 146,156 + 3730 D2:4043 F0 09 00 10 0B 00 00 0B 00 - - - .f 159,177,176 - 3731 D2:4030 00 - - - .db 0 - 3732 D2:4031 92 9C - - .db 146,156 - 3733 D2:4033 90 9C - - .db 144,156 - 3734 D2:4035 90 9F - - .db 144,159 - 3735 D2:4037 40 0B 00 F0 + 3731 D2:404C 00 - - - .db 0 + 3732 D2:404D 92 9C - - .db 146,156 + 3733 D2:404F 90 9C - - .db 144,156 + 3734 D2:4051 90 9F - - .db 144,159 + 3735 D2:4053 40 0B 00 F0 0A 00 A0 09 00 - - - .f 180,175,154 - 3736 D2:4040 00 - - - .db 0 - 3737 D2:4041 9E 9C - - .db 158,156 - 3738 D2:4043 9E 9F - - .db 158,159 - 3739 D2:4045 9C 9F - - .db 156,159 - 3740 D2:4047 A0 09 00 F0 + 3736 D2:405C 00 - - - .db 0 + 3737 D2:405D 9E 9C - - .db 158,156 + 3738 D2:405F 9E 9F - - .db 158,159 + 3739 D2:4061 9C 9F - - .db 156,159 + 3740 D2:4063 A0 09 00 F0 0A 00 D0 09 00 - - - .f 154,175,157 - 3741 D2:4050 00 - - - .db 0 - 3742 D2:4051 90 9C - - .db 144,156 - 3743 D2:4053 92 9C - - .db 146,156 - 3744 D2:4055 92 9F - - .db 146,159 - 3745 D2:4057 A0 09 00 D0 + 3741 D2:406C 00 - - - .db 0 + 3742 D2:406D 90 9C - - .db 144,156 + 3743 D2:406F 92 9C - - .db 146,156 + 3744 D2:4071 92 9F - - .db 146,159 + 3745 D2:4073 A0 09 00 D0 09 00 70 09 00 - - - .f 154,157,151 - 3746 D2:4060 00 - - - .db 0 - 3747 D2:4061 92 9C - - .db 146,156 - 3748 D2:4063 92 9F - - .db 146,159 - 3749 D2:4065 90 9F - - .db 144,159 - 3750 D2:4067 70 09 00 D0 + 3746 D2:407C 00 - - - .db 0 + 3747 D2:407D 92 9C - - .db 146,156 + 3748 D2:407F 92 9F - - .db 146,159 + 3749 D2:4081 90 9F - - .db 144,159 + 3750 D2:4083 70 09 00 D0 09 00 60 09 00 - - - .f 151,157,150 - 3751 D2:4070 00 - - - .db 0 - 3752 D2:4071 92 9C - - .db 146,156 - 3753 D2:4073 92 9F - - .db 146,159 - 3754 D2:4075 90 9F - - .db 144,159 - 3755 D2:4077 E0 09 00 70 + 3751 D2:408C 00 - - - .db 0 + 3752 D2:408D 92 9C - - .db 146,156 + 3753 D2:408F 92 9F - - .db 146,159 + 3754 D2:4091 90 9F - - .db 144,159 + 3755 D2:4093 E0 09 00 70 09 00 60 09 00 - - - .f 158,151,150 - 3756 D2:4080 00 - - - .db 0 - 3757 D2:4081 FC 9B - - .db 252,155 - 3758 D2:4083 FF 9B - - .db 255,155 - 3759 D2:4085 FF 98 - - .db 255,152 - 3760 D2:4087 60 09 00 B0 + 3756 D2:409C 00 - - - .db 0 + 3757 D2:409D FC 9B - - .db 252,155 + 3758 D2:409F FF 9B - - .db 255,155 + 3759 D2:40A1 FF 98 - - .db 255,152 + 3760 D2:40A3 60 09 00 B0 09 00 E0 09 00 - - - .f 150,155,158 - 3761 D2:4090 00 - - - .db 0 - 3762 D2:4091 FF 98 - - .db 255,152 - 3763 D2:4093 FC 98 - - .db 252,152 - 3764 D2:4095 FC 9B - - .db 252,155 - 3765 D2:4097 D0 0A 00 E0 + 3761 D2:40AC 00 - - - .db 0 + 3762 D2:40AD FF 98 - - .db 255,152 + 3763 D2:40AF FC 98 - - .db 252,152 + 3764 D2:40B1 FC 9B - - .db 252,155 + 3765 D2:40B3 D0 0A 00 E0 09 00 B0 09 00 - - - .f 173,158,155 - 3766 D2:40A0 00 - - - .db 0 - 3767 D2:40A1 84 9F - - .db 132,159 - 3768 D2:40A3 86 9F - - .db 134,159 - 3769 D2:40A5 86 9C - - .db 134,156 - 3770 D2:40A7 B0 09 00 00 + 3766 D2:40BC 00 - - - .db 0 + 3767 D2:40BD 84 9F - - .db 132,159 + 3768 D2:40BF 86 9F - - .db 134,159 + 3769 D2:40C1 86 9C - - .db 134,156 + 3770 D2:40C3 B0 09 00 00 0B 00 D0 0A 00 - - - .f 155,176,173 - 3771 D2:40B0 00 - - - .db 0 - 3772 D2:40B1 86 9C - - .db 134,156 - 3773 D2:40B3 84 9C - - .db 132,156 - 3774 D2:40B5 84 9F - - .db 132,159 - 3775 D2:40B7 A0 0D 00 10 + 3771 D2:40CC 00 - - - .db 0 + 3772 D2:40CD 86 9C - - .db 134,156 + 3773 D2:40CF 84 9C - - .db 132,156 + 3774 D2:40D1 84 9F - - .db 132,159 + 3775 D2:40D3 A0 0D 00 10 0D 00 80 0D 00 - - - .f 218,209,216 - 3776 D2:40C0 00 - - - .db 0 - 3777 D2:40C1 9C 6C - - .db 156,108 - 3778 D2:40C3 9C 77 - - .db 156,119 - 3779 D2:40C5 A2 77 - - .db 162,119 - 3780 D2:40C7 70 09 00 20 + 3776 D2:40DC 00 - - - .db 0 + 3777 D2:40DD 9C 6C - - .db 156,108 + 3778 D2:40DF 9C 77 - - .db 156,119 + 3779 D2:40E1 A2 77 - - .db 162,119 + 3780 D2:40E3 70 09 00 20 0A 00 90 09 00 - - - .f 151,162,153 - 3781 D2:40D0 00 - - - .db 0 - 3782 D2:40D1 A2 77 - - .db 162,119 - 3783 D2:40D3 9C 77 - - .db 156,119 - 3784 D2:40D5 9C 6C - - .db 156,108 - 3785 D2:40D7 20 0B 00 30 + 3781 D2:40EC 00 - - - .db 0 + 3782 D2:40ED A2 77 - - .db 162,119 + 3783 D2:40EF 9C 77 - - .db 156,119 + 3784 D2:40F1 9C 6C - - .db 156,108 + 3785 D2:40F3 20 0B 00 30 0B 00 80 0A 00 - - - .f 178,179,168 - 3786 D2:40E0 00 - - - .db 0 - 3787 D2:40E1 AC 88 - - .db 172,136 - 3788 D2:40E3 B7 88 - - .db 183,136 - 3789 D2:40E5 B7 8F - - .db 183,143 - 3790 D2:40E7 60 0C 00 30 + 3786 D2:40FC 00 - - - .db 0 + 3787 D2:40FD AC 88 - - .db 172,136 + 3788 D2:40FF B7 88 - - .db 183,136 + 3789 D2:4101 B7 8F - - .db 183,143 + 3790 D2:4103 60 0C 00 30 0C 00 40 0C 00 - - - .f 198,195,196 - 3791 D2:40F0 00 - - - .db 0 - 3792 D2:40F1 F4 80 - - .db 244,128 - 3793 D2:40F3 F4 87 - - .db 244,135 - 3794 D2:40F5 FF 87 - - .db 255,135 - 3795 D2:40F7 40 0C 00 30 + 3791 D2:410C 00 - - - .db 0 + 3792 D2:410D F4 80 - - .db 244,128 + 3793 D2:410F F4 87 - - .db 244,135 + 3794 D2:4111 FF 87 - - .db 255,135 + 3795 D2:4113 40 0C 00 30 0C 00 90 0C 00 - - - .f 196,195,201 - 3796 D2:4100 00 - - - .db 0 - 3797 D2:4101 B7 88 - - .db 183,136 - 3798 D2:4103 AC 88 - - .db 172,136 - 3799 D2:4105 AC 8F - - .db 172,143 - 3800 D2:4107 C0 0A 00 30 + 3796 D2:411C 00 - - - .db 0 + 3797 D2:411D B7 88 - - .db 183,136 + 3798 D2:411F AC 88 - - .db 172,136 + 3799 D2:4121 AC 8F - - .db 172,143 + 3800 D2:4123 C0 0A 00 30 0B 00 20 0B 00 - - - .f 172,179,178 - 3801 D2:4110 00 - - - .db 0 - 3802 D2:4111 FF 80 - - .db 255,128 - 3803 D2:4113 FF 87 - - .db 255,135 - 3804 D2:4115 F4 87 - - .db 244,135 - 3805 D2:4117 20 0A 00 30 + 3801 D2:412C 00 - - - .db 0 + 3802 D2:412D FF 80 - - .db 255,128 + 3803 D2:412F FF 87 - - .db 255,135 + 3804 D2:4131 F4 87 - - .db 244,135 + 3805 D2:4133 20 0A 00 30 0A 00 00 0A 00 - - - .f 162,163,160 - 3806 D2:4120 00 - - - .db 0 - 3807 D2:4121 92 6C - - .db 146,108 - 3808 D2:4123 8C 6C - - .db 140,108 - 3809 D2:4125 8C 77 - - .db 140,119 - 3810 D2:4127 30 0A 00 70 + 3806 D2:413C 00 - - - .db 0 + 3807 D2:413D 92 6C - - .db 146,108 + 3808 D2:413F 8C 6C - - .db 140,108 + 3809 D2:4141 8C 77 - - .db 140,119 + 3810 D2:4143 30 0A 00 70 0A 00 00 0A 00 - - - .f 163,167,160 - 3811 D2:4130 00 - - - .db 0 - 3812 D2:4131 92 6C - - .db 146,108 - 3813 D2:4133 8C 6C - - .db 140,108 - 3814 D2:4135 8C 77 - - .db 140,119 - 3815 D2:4137 70 0A 00 40 + 3811 D2:414C 00 - - - .db 0 + 3812 D2:414D 92 6C - - .db 146,108 + 3813 D2:414F 8C 6C - - .db 140,108 + 3814 D2:4151 8C 77 - - .db 140,119 + 3815 D2:4153 70 0A 00 40 0A 00 00 0A 00 - - - .f 167,164,160 - 3816 D2:4140 00 - - - .db 0 - 3817 D2:4141 92 6C - - .db 146,108 - 3818 D2:4143 8C 6C - - .db 140,108 - 3819 D2:4145 8C 77 - - .db 140,119 - 3820 D2:4147 40 0A 00 60 + 3816 D2:415C 00 - - - .db 0 + 3817 D2:415D 92 6C - - .db 146,108 + 3818 D2:415F 8C 6C - - .db 140,108 + 3819 D2:4161 8C 77 - - .db 140,119 + 3820 D2:4163 40 0A 00 60 0A 00 00 0A 00 - - - .f 164,166,160 - 3821 D2:4150 00 - - - .db 0 - 3822 D2:4151 92 6C - - .db 146,108 - 3823 D2:4153 8C 6C - - .db 140,108 - 3824 D2:4155 8C 77 - - .db 140,119 - 3825 D2:4157 60 0A 00 50 + 3821 D2:416C 00 - - - .db 0 + 3822 D2:416D 92 6C - - .db 146,108 + 3823 D2:416F 8C 6C - - .db 140,108 + 3824 D2:4171 8C 77 - - .db 140,119 + 3825 D2:4173 60 0A 00 50 0A 00 00 0A 00 - - - .f 166,165,160 - 3826 D2:4160 00 - - - .db 0 - 3827 D2:4161 92 6C - - .db 146,108 - 3828 D2:4163 8C 6C - - .db 140,108 - 3829 D2:4165 8C 77 - - .db 140,119 - 3830 D2:4167 50 0A 00 20 + 3826 D2:417C 00 - - - .db 0 + 3827 D2:417D 92 6C - - .db 146,108 + 3828 D2:417F 8C 6C - - .db 140,108 + 3829 D2:4181 8C 77 - - .db 140,119 + 3830 D2:4183 50 0A 00 20 0A 00 00 0A 00 - - - .f 165,162,160 - 3831 D2:4170 00 - - - .db 0 - 3832 D2:4171 92 6C - - .db 146,108 - 3833 D2:4173 8C 6C - - .db 140,108 - 3834 D2:4175 8C 77 - - .db 140,119 - 3835 D2:4177 E0 0C 00 10 + 3831 D2:418C 00 - - - .db 0 + 3832 D2:418D 92 6C - - .db 146,108 + 3833 D2:418F 8C 6C - - .db 140,108 + 3834 D2:4191 8C 77 - - .db 140,119 + 3835 D2:4193 E0 0C 00 10 0D 00 20 0D 00 - - - .f 206,209,210 - 3836 D2:4180 00 - - - .db 0 - 3837 D2:4181 92 6C - - .db 146,108 - 3838 D2:4183 8C 6C - - .db 140,108 - 3839 D2:4185 8C 77 - - .db 140,119 - 3840 D2:4187 A0 0C 00 E0 + 3836 D2:419C 00 - - - .db 0 + 3837 D2:419D 92 6C - - .db 146,108 + 3838 D2:419F 8C 6C - - .db 140,108 + 3839 D2:41A1 8C 77 - - .db 140,119 + 3840 D2:41A3 A0 0C 00 E0 0C 00 20 0D 00 - - - .f 202,206,210 - 3841 D2:4190 00 - - - .db 0 - 3842 D2:4191 92 6C - - .db 146,108 - 3843 D2:4193 8C 6C - - .db 140,108 - 3844 D2:4195 8C 77 - - .db 140,119 - 3845 D2:4197 B0 0C 00 A0 + 3841 D2:41AC 00 - - - .db 0 + 3842 D2:41AD 92 6C - - .db 146,108 + 3843 D2:41AF 8C 6C - - .db 140,108 + 3844 D2:41B1 8C 77 - - .db 140,119 + 3845 D2:41B3 B0 0C 00 A0 0C 00 20 0D 00 - - - .f 203,202,210 - 3846 D2:41A0 00 - - - .db 0 - 3847 D2:41A1 92 6C - - .db 146,108 - 3848 D2:41A3 8C 6C - - .db 140,108 - 3849 D2:41A5 8C 77 - - .db 140,119 - 3850 D2:41A7 D0 0C 00 B0 + 3846 D2:41BC 00 - - - .db 0 + 3847 D2:41BD 92 6C - - .db 146,108 + 3848 D2:41BF 8C 6C - - .db 140,108 + 3849 D2:41C1 8C 77 - - .db 140,119 + 3850 D2:41C3 D0 0C 00 B0 0C 00 20 0D 00 - - - .f 205,203,210 - 3851 D2:41B0 00 - - - .db 0 - 3852 D2:41B1 92 6C - - .db 146,108 - 3853 D2:41B3 8C 6C - - .db 140,108 - 3854 D2:41B5 8C 77 - - .db 140,119 - 3855 D2:41B7 C0 0C 00 D0 + 3851 D2:41CC 00 - - - .db 0 + 3852 D2:41CD 92 6C - - .db 146,108 + 3853 D2:41CF 8C 6C - - .db 140,108 + 3854 D2:41D1 8C 77 - - .db 140,119 + 3855 D2:41D3 C0 0C 00 D0 0C 00 20 0D 00 - - - .f 204,205,210 - 3856 D2:41C0 00 - - - .db 0 - 3857 D2:41C1 92 6C - - .db 146,108 - 3858 D2:41C3 8C 6C - - .db 140,108 - 3859 D2:41C5 8C 77 - - .db 140,119 - 3860 D2:41C7 10 0D 00 C0 + 3856 D2:41DC 00 - - - .db 0 + 3857 D2:41DD 92 6C - - .db 146,108 + 3858 D2:41DF 8C 6C - - .db 140,108 + 3859 D2:41E1 8C 77 - - .db 140,119 + 3860 D2:41E3 10 0D 00 C0 0C 00 20 0D 00 - - - .f 209,204,210 - 3861 D2:41D0 00 - - - .db 0 - 3862 D2:41D1 92 6C - - .db 146,108 - 3863 D2:41D3 8C 6C - - .db 140,108 - 3864 D2:41D5 8C 77 - - .db 140,119 - 3865 D2:41D7 C0 0C 00 A0 + 3861 D2:41EC 00 - - - .db 0 + 3862 D2:41ED 92 6C - - .db 146,108 + 3863 D2:41EF 8C 6C - - .db 140,108 + 3864 D2:41F1 8C 77 - - .db 140,119 + 3865 D2:41F3 C0 0C 00 A0 0D 00 C0 0B 00 - - - .f 204,218,188 - 3866 D2:41E0 00 - - - .db 0 - 3867 D2:41E1 A0 8F - - .db 160,143 - 3868 D2:41E3 A0 88 - - .db 160,136 - 3869 D2:41E5 AA 88 - - .db 170,136 - 3870 D2:41E7 50 0A 00 90 + 3866 D2:41FC 00 - - - .db 0 + 3867 D2:41FD A0 8F - - .db 160,143 + 3868 D2:41FF A0 88 - - .db 160,136 + 3869 D2:4201 AA 88 - - .db 170,136 + 3870 D2:4203 50 0A 00 90 09 00 20 0A 00 - - - .f 165,153,162 - 3871 D2:41F0 00 - - - .db 0 - 3872 D2:41F1 C7 2C - - .db 199,44 - 3873 D2:41F3 C4 2C - - .db 196,44 - 3874 D2:41F5 C4 3E - - .db 196,62 - 3875 D2:41F7 50 0A 00 C0 + 3871 D2:420C 00 - - - .db 0 + 3872 D2:420D C7 2C - - .db 199,44 + 3873 D2:420F C4 2C - - .db 196,44 + 3874 D2:4211 C4 3E - - .db 196,62 + 3875 D2:4213 50 0A 00 C0 0C 00 C0 0B 00 - - - .f 165,204,188 - 3876 D2:4200 00 - - - .db 0 - 3877 D2:4201 D8 73 - - .db 216,115 - 3878 D2:4203 F3 73 - - .db 243,115 - 3879 D2:4205 F3 6C - - .db 243,108 - 3880 D2:4207 C0 0B 00 50 + 3876 D2:421C 00 - - - .db 0 + 3877 D2:421D D8 73 - - .db 216,115 + 3878 D2:421F F3 73 - - .db 243,115 + 3879 D2:4221 F3 6C - - .db 243,108 + 3880 D2:4223 C0 0B 00 50 0B 00 50 0A 00 - - - .f 188,181,165 - 3881 D2:4210 00 - - - .db 0 - 3882 D2:4211 F3 6C - - .db 243,108 - 3883 D2:4213 D8 6C - - .db 216,108 - 3884 D2:4215 D8 73 - - .db 216,115 - 3885 D2:4217 40 0E 00 80 + 3881 D2:422C 00 - - - .db 0 + 3882 D2:422D F3 6C - - .db 243,108 + 3883 D2:422F D8 6C - - .db 216,108 + 3884 D2:4231 D8 73 - - .db 216,115 + 3885 D2:4233 40 0E 00 80 0E 00 E0 0D 00 - - - .f 228,232,222 - 3886 D2:4220 00 - - - .db 0 - 3887 D2:4221 96 9C - - .db 150,156 - 3888 D2:4223 94 9C - - .db 148,156 - 3889 D2:4225 94 9F - - .db 148,159 - 3890 D2:4227 40 0E 00 E0 + 3886 D2:423C 00 - - - .db 0 + 3887 D2:423D 96 9C - - .db 150,156 + 3888 D2:423F 94 9C - - .db 148,156 + 3889 D2:4241 94 9F - - .db 148,159 + 3890 D2:4243 40 0E 00 E0 0D 00 C0 0D 00 - - - .f 228,222,220 - 3891 D2:4230 00 - - - .db 0 - 3892 D2:4231 96 9C - - .db 150,156 - 3893 D2:4233 94 9F - - .db 148,159 - 3894 D2:4235 96 9F - - .db 150,159 - 3895 D2:4237 C0 0D 00 E0 + 3891 D2:424C 00 - - - .db 0 + 3892 D2:424D 96 9C - - .db 150,156 + 3893 D2:424F 94 9F - - .db 148,159 + 3894 D2:4251 96 9F - - .db 150,159 + 3895 D2:4253 C0 0D 00 E0 0D 00 F0 0D 00 - - - .f 220,222,223 - 3896 D2:4240 00 - - - .db 0 - 3897 D2:4241 96 9C - - .db 150,156 - 3898 D2:4243 94 9C - - .db 148,156 - 3899 D2:4245 94 9F - - .db 148,159 - 3900 D2:4247 C0 0D 00 F0 + 3896 D2:425C 00 - - - .db 0 + 3897 D2:425D 96 9C - - .db 150,156 + 3898 D2:425F 94 9C - - .db 148,156 + 3899 D2:4261 94 9F - - .db 148,159 + 3900 D2:4263 C0 0D 00 F0 0D 00 D0 0D 00 - - - .f 220,223,221 - 3901 D2:4250 00 - - - .db 0 - 3902 D2:4251 96 9C - - .db 150,156 - 3903 D2:4253 94 9F - - .db 148,159 - 3904 D2:4255 96 9F - - .db 150,159 - 3905 D2:4257 D0 0D 00 F0 + 3901 D2:426C 00 - - - .db 0 + 3902 D2:426D 96 9C - - .db 150,156 + 3903 D2:426F 94 9F - - .db 148,159 + 3904 D2:4271 96 9F - - .db 150,159 + 3905 D2:4273 D0 0D 00 F0 0D 00 90 0E 00 - - - .f 221,223,233 - 3906 D2:4260 00 - - - .db 0 - 3907 D2:4261 96 9C - - .db 150,156 - 3908 D2:4263 94 9C - - .db 148,156 - 3909 D2:4265 94 9F - - .db 148,159 - 3910 D2:4267 D0 0D 00 90 + 3906 D2:427C 00 - - - .db 0 + 3907 D2:427D 96 9C - - .db 150,156 + 3908 D2:427F 94 9C - - .db 148,156 + 3909 D2:4281 94 9F - - .db 148,159 + 3910 D2:4283 D0 0D 00 90 0E 00 50 0E 00 - - - .f 221,233,229 - 3911 D2:4270 00 - - - .db 0 - 3912 D2:4271 96 9C - - .db 150,156 - 3913 D2:4273 94 9F - - .db 148,159 - 3914 D2:4275 96 9F - - .db 150,159 - 3915 D2:4277 50 0E 00 90 + 3911 D2:428C 00 - - - .db 0 + 3912 D2:428D 96 9C - - .db 150,156 + 3913 D2:428F 94 9F - - .db 148,159 + 3914 D2:4291 96 9F - - .db 150,159 + 3915 D2:4293 50 0E 00 90 0E 00 B0 0E 00 - - - .f 229,233,235 - 3916 D2:4280 00 - - - .db 0 - 3917 D2:4281 96 9C - - .db 150,156 - 3918 D2:4283 94 9C - - .db 148,156 - 3919 D2:4285 94 9F - - .db 148,159 - 3920 D2:4287 50 0E 00 B0 + 3916 D2:429C 00 - - - .db 0 + 3917 D2:429D 96 9C - - .db 150,156 + 3918 D2:429F 94 9C - - .db 148,156 + 3919 D2:42A1 94 9F - - .db 148,159 + 3920 D2:42A3 50 0E 00 B0 0E 00 A0 0E 00 - - - .f 229,235,234 - 3921 D2:4290 00 - - - .db 0 - 3922 D2:4291 96 9C - - .db 150,156 - 3923 D2:4293 94 9F - - .db 148,159 - 3924 D2:4295 96 9F - - .db 150,159 - 3925 D2:4297 A0 0E 00 B0 + 3921 D2:42AC 00 - - - .db 0 + 3922 D2:42AD 96 9C - - .db 150,156 + 3923 D2:42AF 94 9F - - .db 148,159 + 3924 D2:42B1 96 9F - - .db 150,159 + 3925 D2:42B3 A0 0E 00 B0 0E 00 80 0E 00 - - - .f 234,235,232 - 3926 D2:42A0 00 - - - .db 0 - 3927 D2:42A1 96 9C - - .db 150,156 - 3928 D2:42A3 94 9C - - .db 148,156 - 3929 D2:42A5 94 9F - - .db 148,159 - 3930 D2:42A7 A0 0E 00 80 + 3926 D2:42BC 00 - - - .db 0 + 3927 D2:42BD 96 9C - - .db 150,156 + 3928 D2:42BF 94 9C - - .db 148,156 + 3929 D2:42C1 94 9F - - .db 148,159 + 3930 D2:42C3 A0 0E 00 80 0E 00 40 0E 00 - - - .f 234,232,228 - 3931 D2:42B0 00 - - - .db 0 - 3932 D2:42B1 96 9C - - .db 150,156 - 3933 D2:42B3 94 9F - - .db 148,159 - 3934 D2:42B5 96 9F - - .db 150,159 - 3935 D2:42B7 10 0E 00 E0 + 3931 D2:42CC 00 - - - .db 0 + 3932 D2:42CD 96 9C - - .db 150,156 + 3933 D2:42CF 94 9F - - .db 148,159 + 3934 D2:42D1 96 9F - - .db 150,159 + 3935 D2:42D3 10 0E 00 E0 0D 00 60 0E 00 - - - .f 225,222,230 - 3936 D2:42C0 00 - - - .db 0 - 3937 D2:42C1 96 9C - - .db 150,156 - 3938 D2:42C3 94 9C - - .db 148,156 - 3939 D2:42C5 94 9F - - .db 148,159 - 3940 D2:42C7 E0 0D 00 80 + 3936 D2:42DC 00 - - - .db 0 + 3937 D2:42DD 96 9C - - .db 150,156 + 3938 D2:42DF 94 9C - - .db 148,156 + 3939 D2:42E1 94 9F - - .db 148,159 + 3940 D2:42E3 E0 0D 00 80 0E 00 60 0E 00 - - - .f 222,232,230 - 3941 D2:42D0 00 - - - .db 0 - 3942 D2:42D1 96 9C - - .db 150,156 - 3943 D2:42D3 94 9C - - .db 148,156 - 3944 D2:42D5 94 9F - - .db 148,159 - 3945 D2:42D7 F0 0D 00 E0 + 3941 D2:42EC 00 - - - .db 0 + 3942 D2:42ED 96 9C - - .db 150,156 + 3943 D2:42EF 94 9C - - .db 148,156 + 3944 D2:42F1 94 9F - - .db 148,159 + 3945 D2:42F3 F0 0D 00 E0 0D 00 10 0E 00 - - - .f 223,222,225 - 3946 D2:42E0 00 - - - .db 0 - 3947 D2:42E1 96 9C - - .db 150,156 - 3948 D2:42E3 94 9C - - .db 148,156 - 3949 D2:42E5 94 9F - - .db 148,159 - 3950 D2:42E7 90 0E 00 F0 + 3946 D2:42FC 00 - - - .db 0 + 3947 D2:42FD 96 9C - - .db 150,156 + 3948 D2:42FF 94 9C - - .db 148,156 + 3949 D2:4301 94 9F - - .db 148,159 + 3950 D2:4303 90 0E 00 F0 0D 00 70 0E 00 - - - .f 233,223,231 - 3951 D2:42F0 00 - - - .db 0 - 3952 D2:42F1 96 9C - - .db 150,156 - 3953 D2:42F3 94 9C - - .db 148,156 - 3954 D2:42F5 94 9F - - .db 148,159 - 3955 D2:42F7 10 0E 00 70 + 3951 D2:430C 00 - - - .db 0 + 3952 D2:430D 96 9C - - .db 150,156 + 3953 D2:430F 94 9C - - .db 148,156 + 3954 D2:4311 94 9F - - .db 148,159 + 3955 D2:4313 10 0E 00 70 0E 00 F0 0D 00 - - - .f 225,231,223 - 3956 D2:4300 00 - - - .db 0 - 3957 D2:4301 96 9C - - .db 150,156 - 3958 D2:4303 94 9C - - .db 148,156 - 3959 D2:4305 94 9F - - .db 148,159 - 3960 D2:4307 60 0E 00 B0 + 3956 D2:431C 00 - - - .db 0 + 3957 D2:431D 96 9C - - .db 150,156 + 3958 D2:431F 94 9C - - .db 148,156 + 3959 D2:4321 94 9F - - .db 148,159 + 3960 D2:4323 60 0E 00 B0 0E 00 70 0E 00 - - - .f 230,235,231 - 3961 D2:4310 00 - - - .db 0 - 3962 D2:4311 96 9C - - .db 150,156 - 3963 D2:4313 94 9C - - .db 148,156 - 3964 D2:4315 94 9F - - .db 148,159 - 3965 D2:4317 B0 0E 00 90 + 3961 D2:432C 00 - - - .db 0 + 3962 D2:432D 96 9C - - .db 150,156 + 3963 D2:432F 94 9C - - .db 148,156 + 3964 D2:4331 94 9F - - .db 148,159 + 3965 D2:4333 B0 0E 00 90 0E 00 70 0E 00 - - - .f 235,233,231 - 3966 D2:4320 00 - - - .db 0 - 3967 D2:4321 96 9C - - .db 150,156 - 3968 D2:4323 94 9C - - .db 148,156 - 3969 D2:4325 94 9F - - .db 148,159 - 3970 D2:4327 80 0E 00 B0 + 3966 D2:433C 00 - - - .db 0 + 3967 D2:433D 96 9C - - .db 150,156 + 3968 D2:433F 94 9C - - .db 148,156 + 3969 D2:4341 94 9F - - .db 148,159 + 3970 D2:4343 80 0E 00 B0 0E 00 60 0E 00 - - - .f 232,235,230 - 3971 D2:4330 00 - - - .db 0 - 3972 D2:4331 96 9C - - .db 150,156 - 3973 D2:4333 94 9C - - .db 148,156 - 3974 D2:4335 94 9F - - .db 148,159 - 3975 D2:4337 00 0E 00 20 + 3971 D2:434C 00 - - - .db 0 + 3972 D2:434D 96 9C - - .db 150,156 + 3973 D2:434F 94 9C - - .db 148,156 + 3974 D2:4351 94 9F - - .db 148,159 + 3975 D2:4353 00 0E 00 20 0E 00 C0 0D 00 - - - .f 224,226,220 - 3976 D2:4340 00 - - - .db 0 - 3977 D2:4341 96 9C - - .db 150,156 - 3978 D2:4343 94 9C - - .db 148,156 - 3979 D2:4345 94 9F - - .db 148,159 - 3980 D2:4347 40 0E 00 C0 + 3976 D2:435C 00 - - - .db 0 + 3977 D2:435D 96 9C - - .db 150,156 + 3978 D2:435F 94 9C - - .db 148,156 + 3979 D2:4361 94 9F - - .db 148,159 + 3980 D2:4363 40 0E 00 C0 0D 00 20 0E 00 - - - .f 228,220,226 - 3981 D2:4350 00 - - - .db 0 - 3982 D2:4351 96 9C - - .db 150,156 - 3983 D2:4353 94 9C - - .db 148,156 - 3984 D2:4355 94 9F - - .db 148,159 - 3985 D2:4357 D0 0D 00 00 + 3981 D2:436C 00 - - - .db 0 + 3982 D2:436D 96 9C - - .db 150,156 + 3983 D2:436F 94 9C - - .db 148,156 + 3984 D2:4371 94 9F - - .db 148,159 + 3985 D2:4373 D0 0D 00 00 0E 00 C0 0D 00 - - - .f 221,224,220 - 3986 D2:4360 00 - - - .db 0 - 3987 D2:4361 96 9C - - .db 150,156 - 3988 D2:4363 94 9C - - .db 148,156 - 3989 D2:4365 94 9F - - .db 148,159 - 3990 D2:4367 50 0E 00 30 + 3986 D2:437C 00 - - - .db 0 + 3987 D2:437D 96 9C - - .db 150,156 + 3988 D2:437F 94 9C - - .db 148,156 + 3989 D2:4381 94 9F - - .db 148,159 + 3990 D2:4383 50 0E 00 30 0E 00 D0 0D 00 - - - .f 229,227,221 - 3991 D2:4370 00 - - - .db 0 - 3992 D2:4371 96 9C - - .db 150,156 - 3993 D2:4373 94 9C - - .db 148,156 - 3994 D2:4375 94 9F - - .db 148,159 - 3995 D2:4377 30 0E 00 00 + 3991 D2:438C 00 - - - .db 0 + 3992 D2:438D 96 9C - - .db 150,156 + 3993 D2:438F 94 9C - - .db 148,156 + 3994 D2:4391 94 9F - - .db 148,159 + 3995 D2:4393 30 0E 00 00 0E 00 D0 0D 00 - - - .f 227,224,221 - 3996 D2:4380 00 - - - .db 0 - 3997 D2:4381 96 9C - - .db 150,156 - 3998 D2:4383 94 9C - - .db 148,156 - 3999 D2:4385 94 9F - - .db 148,159 - 4000 D2:4387 50 0E 00 A0 + 3996 D2:439C 00 - - - .db 0 + 3997 D2:439D 96 9C - - .db 150,156 + 3998 D2:439F 94 9C - - .db 148,156 + 3999 D2:43A1 94 9F - - .db 148,159 + 4000 D2:43A3 50 0E 00 A0 0E 00 30 0E 00 - - - .f 229,234,227 - 4001 D2:4390 00 - - - .db 0 - 4002 D2:4391 96 9C - - .db 150,156 - 4003 D2:4393 94 9C - - .db 148,156 - 4004 D2:4395 94 9F - - .db 148,159 - 4005 D2:4397 40 0E 00 20 + 4001 D2:43AC 00 - - - .db 0 + 4002 D2:43AD 96 9C - - .db 150,156 + 4003 D2:43AF 94 9C - - .db 148,156 + 4004 D2:43B1 94 9F - - .db 148,159 + 4005 D2:43B3 40 0E 00 20 0E 00 A0 0E 00 - - - .f 228,226,234 - 4006 D2:43A0 00 - - - .db 0 - 4007 D2:43A1 96 9C - - .db 150,156 - 4008 D2:43A3 94 9C - - .db 148,156 - 4009 D2:43A5 94 9F - - .db 148,159 - 4010 D2:43A7 20 0E 00 30 + 4006 D2:43BC 00 - - - .db 0 + 4007 D2:43BD 96 9C - - .db 150,156 + 4008 D2:43BF 94 9C - - .db 148,156 + 4009 D2:43C1 94 9F - - .db 148,159 + 4010 D2:43C3 20 0E 00 30 0E 00 A0 0E 00 - - - .f 226,227,234 - 4011 D2:43B0 00 - - - .db 0 - 4012 D2:43B1 96 9C - - .db 150,156 - 4013 D2:43B3 94 9C - - .db 148,156 - 4014 D2:43B5 94 9F - - .db 148,159 - 4015 D2:43B7 70 0E 00 10 + 4011 D2:43CC 00 - - - .db 0 + 4012 D2:43CD 96 9C - - .db 150,156 + 4013 D2:43CF 94 9C - - .db 148,156 + 4014 D2:43D1 94 9F - - .db 148,159 + 4015 D2:43D3 70 0E 00 10 0E 00 60 0E 00 - - - .f 231,225,230 - 4016 D2:43C0 00 - - - .db 0 - 4017 D2:43C1 96 9C - - .db 150,156 - 4018 D2:43C3 94 9C - - .db 148,156 - 4019 D2:43C5 94 9F - - .db 148,159 - 4020 D2:43C7 20 0E 00 00 + 4016 D2:43DC 00 - - - .db 0 + 4017 D2:43DD 96 9C - - .db 150,156 + 4018 D2:43DF 94 9C - - .db 148,156 + 4019 D2:43E1 94 9F - - .db 148,159 + 4020 D2:43E3 20 0E 00 00 0E 00 30 0E 00 - - - .f 226,224,227 - 4021 D2:43D0 00 - - - .db 0 - 4022 D2:43D1 96 9C - - .db 150,156 - 4023 D2:43D3 94 9C - - .db 148,156 - 4024 D2:43D5 94 9F - - .db 148,159 - 4025 D2:43D7 50 0F 00 30 + 4021 D2:43EC 00 - - - .db 0 + 4022 D2:43ED 96 9C - - .db 150,156 + 4023 D2:43EF 94 9C - - .db 148,156 + 4024 D2:43F1 94 9F - - .db 148,159 + 4025 D2:43F3 50 0F 00 30 0F 00 E0 0E 00 - - - .f 245,243,238 - 4026 D2:43E0 00 - - - .db 0 - 4027 D2:43E1 96 9C - - .db 150,156 - 4028 D2:43E3 94 9C - - .db 148,156 - 4029 D2:43E5 94 9F - - .db 148,159 - 4030 D2:43E7 50 0F 00 E0 + 4026 D2:43FC 00 - - - .db 0 + 4027 D2:43FD 96 9C - - .db 150,156 + 4028 D2:43FF 94 9C - - .db 148,156 + 4029 D2:4401 94 9F - - .db 148,159 + 4030 D2:4403 50 0F 00 E0 0E 00 C0 0E 00 - - - .f 245,238,236 - 4031 D2:43F0 00 - - - .db 0 - 4032 D2:43F1 96 9C - - .db 150,156 - 4033 D2:43F3 94 9F - - .db 148,159 - 4034 D2:43F5 96 9F - - .db 150,159 - 4035 D2:43F7 C0 0E 00 E0 + 4031 D2:440C 00 - - - .db 0 + 4032 D2:440D 96 9C - - .db 150,156 + 4033 D2:440F 94 9F - - .db 148,159 + 4034 D2:4411 96 9F - - .db 150,159 + 4035 D2:4413 C0 0E 00 E0 0E 00 F0 0E 00 - - - .f 236,238,239 - 4036 D2:4400 00 - - - .db 0 - 4037 D2:4401 96 9C - - .db 150,156 - 4038 D2:4403 94 9C - - .db 148,156 - 4039 D2:4405 94 9F - - .db 148,159 - 4040 D2:4407 C0 0E 00 F0 + 4036 D2:441C 00 - - - .db 0 + 4037 D2:441D 96 9C - - .db 150,156 + 4038 D2:441F 94 9C - - .db 148,156 + 4039 D2:4421 94 9F - - .db 148,159 + 4040 D2:4423 C0 0E 00 F0 0E 00 D0 0E 00 - - - .f 236,239,237 - 4041 D2:4410 00 - - - .db 0 - 4042 D2:4411 96 9C - - .db 150,156 - 4043 D2:4413 94 9F - - .db 148,159 - 4044 D2:4415 96 9F - - .db 150,159 - 4045 D2:4417 D0 0E 00 F0 + 4041 D2:442C 00 - - - .db 0 + 4042 D2:442D 96 9C - - .db 150,156 + 4043 D2:442F 94 9F - - .db 148,159 + 4044 D2:4431 96 9F - - .db 150,159 + 4045 D2:4433 D0 0E 00 F0 0E 00 40 0F 00 - - - .f 237,239,244 - 4046 D2:4420 00 - - - .db 0 - 4047 D2:4421 96 9C - - .db 150,156 - 4048 D2:4423 94 9C - - .db 148,156 - 4049 D2:4425 94 9F - - .db 148,159 - 4050 D2:4427 D0 0E 00 40 + 4046 D2:443C 00 - - - .db 0 + 4047 D2:443D 96 9C - - .db 150,156 + 4048 D2:443F 94 9C - - .db 148,156 + 4049 D2:4441 94 9F - - .db 148,159 + 4050 D2:4443 D0 0E 00 40 0F 00 60 0F 00 - - - .f 237,244,246 - 4051 D2:4430 00 - - - .db 0 - 4052 D2:4431 96 9C - - .db 150,156 - 4053 D2:4433 94 9F - - .db 148,159 - 4054 D2:4435 96 9F - - .db 150,159 - 4055 D2:4437 60 0F 00 40 + 4051 D2:444C 00 - - - .db 0 + 4052 D2:444D 96 9C - - .db 150,156 + 4053 D2:444F 94 9F - - .db 148,159 + 4054 D2:4451 96 9F - - .db 150,159 + 4055 D2:4453 60 0F 00 40 0F 00 70 0F 00 - - - .f 246,244,247 - 4056 D2:4440 00 - - - .db 0 - 4057 D2:4441 96 9C - - .db 150,156 - 4058 D2:4443 94 9C - - .db 148,156 - 4059 D2:4445 94 9F - - .db 148,159 - 4060 D2:4447 60 0F 00 70 + 4056 D2:445C 00 - - - .db 0 + 4057 D2:445D 96 9C - - .db 150,156 + 4058 D2:445F 94 9C - - .db 148,156 + 4059 D2:4461 94 9F - - .db 148,159 + 4060 D2:4463 60 0F 00 70 0F 00 80 0F 00 - - - .f 246,247,248 - 4061 D2:4450 00 - - - .db 0 - 4062 D2:4451 96 9C - - .db 150,156 - 4063 D2:4453 94 9F - - .db 148,159 - 4064 D2:4455 96 9F - - .db 150,159 - 4065 D2:4457 80 0F 00 70 + 4061 D2:446C 00 - - - .db 0 + 4062 D2:446D 96 9C - - .db 150,156 + 4063 D2:446F 94 9F - - .db 148,159 + 4064 D2:4471 96 9F - - .db 150,159 + 4065 D2:4473 80 0F 00 70 0F 00 30 0F 00 - - - .f 248,247,243 - 4066 D2:4460 00 - - - .db 0 - 4067 D2:4461 96 9C - - .db 150,156 - 4068 D2:4463 94 9C - - .db 148,156 - 4069 D2:4465 94 9F - - .db 148,159 - 4070 D2:4467 80 0F 00 30 + 4066 D2:447C 00 - - - .db 0 + 4067 D2:447D 96 9C - - .db 150,156 + 4068 D2:447F 94 9C - - .db 148,156 + 4069 D2:4481 94 9F - - .db 148,159 + 4070 D2:4483 80 0F 00 30 0F 00 50 0F 00 - - - .f 248,243,245 - 4071 D2:4470 00 - - - .db 0 - 4072 D2:4471 96 9C - - .db 150,156 - 4073 D2:4473 94 9F - - .db 148,159 - 4074 D2:4475 96 9F - - .db 150,159 - 4075 D2:4477 D0 0E 00 60 + 4071 D2:448C 00 - - - .db 0 + 4072 D2:448D 96 9C - - .db 150,156 + 4073 D2:448F 94 9F - - .db 148,159 + 4074 D2:4491 96 9F - - .db 150,159 + 4075 D2:4493 D0 0E 00 60 0F 00 50 0F 00 - - - .f 237,246,245 - 4076 D2:4480 00 - - - .db 0 - 4077 D2:4481 96 9C - - .db 150,156 - 4078 D2:4483 94 9C - - .db 148,156 - 4079 D2:4485 94 9F - - .db 148,159 - 4080 D2:4487 D0 0E 00 50 + 4076 D2:449C 00 - - - .db 0 + 4077 D2:449D 96 9C - - .db 150,156 + 4078 D2:449F 94 9C - - .db 148,156 + 4079 D2:44A1 94 9F - - .db 148,159 + 4080 D2:44A3 D0 0E 00 50 0F 00 C0 0E 00 - - - .f 237,245,236 - 4081 D2:4490 00 - - - .db 0 - 4082 D2:4491 96 9C - - .db 150,156 - 4083 D2:4493 94 9F - - .db 148,159 - 4084 D2:4495 96 9F - - .db 150,159 - 4085 D2:4497 00 0F 00 E0 + 4081 D2:44AC 00 - - - .db 0 + 4082 D2:44AD 96 9C - - .db 150,156 + 4083 D2:44AF 94 9F - - .db 148,159 + 4084 D2:44B1 96 9F - - .db 150,159 + 4085 D2:44B3 00 0F 00 E0 0E 00 10 0F 00 - - - .f 240,238,241 - 4086 D2:44A0 00 - - - .db 0 - 4087 D2:44A1 96 9C - - .db 150,156 - 4088 D2:44A3 94 9C - - .db 148,156 - 4089 D2:44A5 94 9F - - .db 148,159 - 4090 D2:44A7 E0 0E 00 30 + 4086 D2:44BC 00 - - - .db 0 + 4087 D2:44BD 96 9C - - .db 150,156 + 4088 D2:44BF 94 9C - - .db 148,156 + 4089 D2:44C1 94 9F - - .db 148,159 + 4090 D2:44C3 E0 0E 00 30 0F 00 10 0F 00 - - - .f 238,243,241 - 4091 D2:44B0 00 - - - .db 0 - 4092 D2:44B1 96 9C - - .db 150,156 - 4093 D2:44B3 94 9C - - .db 148,156 - 4094 D2:44B5 94 9F - - .db 148,159 - 4095 D2:44B7 F0 0E 00 E0 + 4091 D2:44CC 00 - - - .db 0 + 4092 D2:44CD 96 9C - - .db 150,156 + 4093 D2:44CF 94 9C - - .db 148,156 + 4094 D2:44D1 94 9F - - .db 148,159 + 4095 D2:44D3 F0 0E 00 E0 0E 00 00 0F 00 - - - .f 239,238,240 - 4096 D2:44C0 00 - - - .db 0 - 4097 D2:44C1 96 9C - - .db 150,156 - 4098 D2:44C3 94 9C - - .db 148,156 - 4099 D2:44C5 94 9F - - .db 148,159 - 4100 D2:44C7 40 0F 00 F0 + 4096 D2:44DC 00 - - - .db 0 + 4097 D2:44DD 96 9C - - .db 150,156 + 4098 D2:44DF 94 9C - - .db 148,156 + 4099 D2:44E1 94 9F - - .db 148,159 + 4100 D2:44E3 40 0F 00 F0 0E 00 20 0F 00 - - - .f 244,239,242 - 4101 D2:44D0 00 - - - .db 0 - 4102 D2:44D1 96 9C - - .db 150,156 - 4103 D2:44D3 94 9C - - .db 148,156 - 4104 D2:44D5 94 9F - - .db 148,159 - 4105 D2:44D7 00 0F 00 20 + 4101 D2:44EC 00 - - - .db 0 + 4102 D2:44ED 96 9C - - .db 150,156 + 4103 D2:44EF 94 9C - - .db 148,156 + 4104 D2:44F1 94 9F - - .db 148,159 + 4105 D2:44F3 00 0F 00 20 0F 00 F0 0E 00 - - - .f 240,242,239 - 4106 D2:44E0 00 - - - .db 0 - 4107 D2:44E1 96 9C - - .db 150,156 - 4108 D2:44E3 94 9C - - .db 148,156 - 4109 D2:44E5 94 9F - - .db 148,159 - 4110 D2:44E7 10 0F 00 70 + 4106 D2:44FC 00 - - - .db 0 + 4107 D2:44FD 96 9C - - .db 150,156 + 4108 D2:44FF 94 9C - - .db 148,156 + 4109 D2:4501 94 9F - - .db 148,159 + 4110 D2:4503 10 0F 00 70 0F 00 20 0F 00 - - - .f 241,247,242 - 4111 D2:44F0 00 - - - .db 0 - 4112 D2:44F1 96 9C - - .db 150,156 - 4113 D2:44F3 94 9C - - .db 148,156 - 4114 D2:44F5 94 9F - - .db 148,159 - 4115 D2:44F7 70 0F 00 40 + 4111 D2:450C 00 - - - .db 0 + 4112 D2:450D 96 9C - - .db 150,156 + 4113 D2:450F 94 9C - - .db 148,156 + 4114 D2:4511 94 9F - - .db 148,159 + 4115 D2:4513 70 0F 00 40 0F 00 20 0F 00 - - - .f 247,244,242 - 4116 D2:4500 00 - - - .db 0 - 4117 D2:4501 96 9C - - .db 150,156 - 4118 D2:4503 94 9C - - .db 148,156 - 4119 D2:4505 94 9F - - .db 148,159 - 4120 D2:4507 30 0F 00 70 + 4116 D2:451C 00 - - - .db 0 + 4117 D2:451D 96 9C - - .db 150,156 + 4118 D2:451F 94 9C - - .db 148,156 + 4119 D2:4521 94 9F - - .db 148,159 + 4120 D2:4523 30 0F 00 70 0F 00 10 0F 00 - - - .f 243,247,241 - 4121 D2:4510 00 - - - .db 0 - 4122 D2:4511 96 9C - - .db 150,156 - 4123 D2:4513 94 9C - - .db 148,156 - 4124 D2:4515 94 9F - - .db 148,159 - 4125 D2:4517 50 0F 00 60 + 4121 D2:452C 00 - - - .db 0 + 4122 D2:452D 96 9C - - .db 150,156 + 4123 D2:452F 94 9C - - .db 148,156 + 4124 D2:4531 94 9F - - .db 148,159 + 4125 D2:4533 50 0F 00 60 0F 00 80 0F 00 - - - .f 245,246,248 - 4126 D2:4520 00 - - - .db 0 - 4127 D2:4521 96 9C - - .db 150,156 - 4128 D2:4523 94 9C - - .db 148,156 - 4129 D2:4525 94 9F - - .db 148,159 - 4130 D2:4527 20 0F 00 00 + 4126 D2:453C 00 - - - .db 0 + 4127 D2:453D 96 9C - - .db 150,156 + 4128 D2:453F 94 9C - - .db 148,156 + 4129 D2:4541 94 9F - - .db 148,159 + 4130 D2:4543 20 0F 00 00 0F 00 10 0F 00 - - - .f 242,240,241 - 4131 D2:4530 00 - - - .db 0 - 4132 D2:4531 96 9C - - .db 150,156 - 4133 D2:4533 94 9C - - .db 148,156 - 4134 D2:4535 94 9F - - .db 148,159 - 4135 D2:4537 E0 0F 00 A0 + 4131 D2:454C 00 - - - .db 0 + 4132 D2:454D 96 9C - - .db 150,156 + 4133 D2:454F 94 9C - - .db 148,156 + 4134 D2:4551 94 9F - - .db 148,159 + 4135 D2:4553 E0 0F 00 A0 0F 00 90 0F 00 - - - .f 254,250,249 - 4136 D2:4540 00 - - - .db 0 - 4137 D2:4541 D4 4C - - .db 212,76 - 4138 D2:4543 DF 4C - - .db 223,76 - 4139 D2:4545 DF 5A - - .db 223,90 - 4140 D2:4547 E0 0F 00 90 + 4136 D2:455C 00 - - - .db 0 + 4137 D2:455D D4 4C - - .db 212,76 + 4138 D2:455F DF 4C - - .db 223,76 + 4139 D2:4561 DF 5A - - .db 223,90 + 4140 D2:4563 E0 0F 00 90 0F 00 D0 0F 00 - - - .f 254,249,253 - 4141 D2:4550 00 - - - .db 0 - 4142 D2:4551 D4 4C - - .db 212,76 - 4143 D2:4553 DF 5A - - .db 223,90 - 4144 D2:4555 D4 5A - - .db 212,90 - 4145 D2:4557 90 0F 00 A0 + 4141 D2:456C 00 - - - .db 0 + 4142 D2:456D D4 4C - - .db 212,76 + 4143 D2:456F DF 5A - - .db 223,90 + 4144 D2:4571 D4 5A - - .db 212,90 + 4145 D2:4573 90 0F 00 A0 0F 00 C0 0F 00 - - - .f 249,250,252 - 4146 D2:4560 00 - - - .db 0 - 4147 D2:4561 EB 4C - - .db 235,76 - 4148 D2:4563 E0 4C - - .db 224,76 - 4149 D2:4565 E0 5A - - .db 224,90 - 4150 D2:4567 90 0F 00 C0 + 4146 D2:457C 00 - - - .db 0 + 4147 D2:457D EB 4C - - .db 235,76 + 4148 D2:457F E0 4C - - .db 224,76 + 4149 D2:4581 E0 5A - - .db 224,90 + 4150 D2:4583 90 0F 00 C0 0F 00 B0 0F 00 - - - .f 249,252,251 - 4151 D2:4570 00 - - - .db 0 - 4152 D2:4571 EB 4C - - .db 235,76 - 4153 D2:4573 E0 5A - - .db 224,90 - 4154 D2:4575 EB 5A - - .db 235,90 - 4155 D2:4577 E0 0F 00 D0 + 4151 D2:458C 00 - - - .db 0 + 4152 D2:458D EB 4C - - .db 235,76 + 4153 D2:458F E0 5A - - .db 224,90 + 4154 D2:4591 EB 5A - - .db 235,90 + 4155 D2:4593 E0 0F 00 D0 0F 00 F0 0F 00 - - - .f 254,253,255 - 4156 D2:4580 00 - - - .db 0 - 4157 D2:4581 EC 4C - - .db 236,76 - 4158 D2:4583 F7 4C - - .db 247,76 - 4159 D2:4585 F7 5A - - .db 247,90 - 4160 D2:4587 E0 0F 00 F0 + 4156 D2:459C 00 - - - .db 0 + 4157 D2:459D EC 4C - - .db 236,76 + 4158 D2:459F F7 4C - - .db 247,76 + 4159 D2:45A1 F7 5A - - .db 247,90 + 4160 D2:45A3 E0 0F 00 F0 0F 00 00 10 00 - - - .f 254,255,256 - 4161 D2:4590 00 - - - .db 0 - 4162 D2:4591 EC 4C - - .db 236,76 - 4163 D2:4593 F7 5A - - .db 247,90 - 4164 D2:4595 EC 5A - - .db 236,90 - 4165 D2:4597 A0 0F 00 E0 + 4161 D2:45AC 00 - - - .db 0 + 4162 D2:45AD EC 4C - - .db 236,76 + 4163 D2:45AF F7 5A - - .db 247,90 + 4164 D2:45B1 EC 5A - - .db 236,90 + 4165 D2:45B3 A0 0F 00 E0 0F 00 00 10 00 - - - .f 250,254,256 - 4166 D2:45A0 00 - - - .db 0 - 4167 D2:45A1 D3 4C - - .db 211,76 - 4168 D2:45A3 C8 4C - - .db 200,76 - 4169 D2:45A5 C8 5A - - .db 200,90 - 4170 D2:45A7 A0 0F 00 00 + 4166 D2:45BC 00 - - - .db 0 + 4167 D2:45BD D3 4C - - .db 211,76 + 4168 D2:45BF C8 4C - - .db 200,76 + 4169 D2:45C1 C8 5A - - .db 200,90 + 4170 D2:45C3 A0 0F 00 00 10 00 C0 0F 00 - - - .f 250,256,252 - 4171 D2:45B0 00 - - - .db 0 - 4172 D2:45B1 D3 4C - - .db 211,76 - 4173 D2:45B3 C8 5A - - .db 200,90 - 4174 D2:45B5 D3 5A - - .db 211,90 - 4175 D2:45B7 D0 0F 00 90 + 4171 D2:45CC 00 - - - .db 0 + 4172 D2:45CD D3 4C - - .db 211,76 + 4173 D2:45CF C8 5A - - .db 200,90 + 4174 D2:45D1 D3 5A - - .db 211,90 + 4175 D2:45D3 D0 0F 00 90 0F 00 B0 0F 00 - - - .f 253,249,251 - 4176 D2:45C0 00 - - - .db 0 - 4177 D2:45C1 8A 5C - - .db 138,92 - 4178 D2:45C3 80 5C - - .db 128,92 - 4179 D2:45C5 80 6B - - .db 128,107 - 4180 D2:45C7 B0 0F 00 F0 + 4176 D2:45DC 00 - - - .db 0 + 4177 D2:45DD 8A 5C - - .db 138,92 + 4178 D2:45DF 80 5C - - .db 128,92 + 4179 D2:45E1 80 6B - - .db 128,107 + 4180 D2:45E3 B0 0F 00 F0 0F 00 D0 0F 00 - - - .f 251,255,253 - 4181 D2:45D0 00 - - - .db 0 - 4182 D2:45D1 8A 5C - - .db 138,92 - 4183 D2:45D3 8A 6B - - .db 138,107 - 4184 D2:45D5 80 6B - - .db 128,107 - 4185 D2:45D7 F0 0F 00 B0 + 4181 D2:45EC 00 - - - .db 0 + 4182 D2:45ED 8A 5C - - .db 138,92 + 4183 D2:45EF 8A 6B - - .db 138,107 + 4184 D2:45F1 80 6B - - .db 128,107 + 4185 D2:45F3 F0 0F 00 B0 0F 00 C0 0F 00 - - - .f 255,251,252 - 4186 D2:45E0 00 - - - .db 0 - 4187 D2:45E1 7F 2B - - .db 127,43 - 4188 D2:45E3 7F 2B - - .db 127,43 - 4189 D2:45E5 7F 2B - - .db 127,43 - 4190 D2:45E7 F0 0F 00 C0 + 4186 D2:45FC 00 - - - .db 0 + 4187 D2:45FD 7F 2B - - .db 127,43 + 4188 D2:45FF 7F 2B - - .db 127,43 + 4189 D2:4601 7F 2B - - .db 127,43 + 4190 D2:4603 F0 0F 00 C0 0F 00 00 10 00 - - - .f 255,252,256 - 4191 D2:45F0 00 - - - .db 0 - 4192 D2:45F1 7F 2B - - .db 127,43 - 4193 D2:45F3 7F 2B - - .db 127,43 - 4194 D2:45F5 7F 2B - - .db 127,43 - 4195 D2:45F7 70 10 00 00 + 4191 D2:460C 00 - - - .db 0 + 4192 D2:460D 7F 2B - - .db 127,43 + 4193 D2:460F 7F 2B - - .db 127,43 + 4194 D2:4611 7F 2B - - .db 127,43 + 4195 D2:4613 70 10 00 00 11 00 E0 10 00 - - - .f 263,272,270 - 4196 D2:4600 00 - - - .db 0 - 4197 D2:4601 96 9C - - .db 150,156 - 4198 D2:4603 94 9C - - .db 148,156 - 4199 D2:4605 94 9F - - .db 148,159 - 4200 D2:4607 70 10 00 E0 + 4196 D2:461C 00 - - - .db 0 + 4197 D2:461D 96 9C - - .db 150,156 + 4198 D2:461F 94 9C - - .db 148,156 + 4199 D2:4621 94 9F - - .db 148,159 + 4200 D2:4623 70 10 00 E0 10 00 40 10 00 - - - .f 263,270,260 - 4201 D2:4610 00 - - - .db 0 - 4202 D2:4611 96 9C - - .db 150,156 - 4203 D2:4613 94 9F - - .db 148,159 - 4204 D2:4615 96 9F - - .db 150,159 - 4205 D2:4617 00 11 00 F0 + 4201 D2:462C 00 - - - .db 0 + 4202 D2:462D 96 9C - - .db 150,156 + 4203 D2:462F 94 9F - - .db 148,159 + 4204 D2:4631 96 9F - - .db 150,159 + 4205 D2:4633 00 11 00 F0 10 00 D0 10 00 - - - .f 272,271,269 - 4206 D2:4620 00 - - - .db 0 - 4207 D2:4621 96 9C - - .db 150,156 - 4208 D2:4623 94 9C - - .db 148,156 - 4209 D2:4625 94 9F - - .db 148,159 - 4210 D2:4627 00 11 00 D0 + 4206 D2:463C 00 - - - .db 0 + 4207 D2:463D 96 9C - - .db 150,156 + 4208 D2:463F 94 9C - - .db 148,156 + 4209 D2:4641 94 9F - - .db 148,159 + 4210 D2:4643 00 11 00 D0 10 00 E0 10 00 - - - .f 272,269,270 - 4211 D2:4630 00 - - - .db 0 - 4212 D2:4631 96 9C - - .db 150,156 - 4213 D2:4633 94 9F - - .db 148,159 - 4214 D2:4635 96 9F - - .db 150,159 - 4215 D2:4637 F0 10 00 80 + 4211 D2:464C 00 - - - .db 0 + 4212 D2:464D 96 9C - - .db 150,156 + 4213 D2:464F 94 9F - - .db 148,159 + 4214 D2:4651 96 9F - - .db 150,159 + 4215 D2:4653 F0 10 00 80 10 00 30 10 00 - - - .f 271,264,259 - 4216 D2:4640 00 - - - .db 0 - 4217 D2:4641 96 9C - - .db 150,156 - 4218 D2:4643 94 9C - - .db 148,156 - 4219 D2:4645 94 9F - - .db 148,159 - 4220 D2:4647 F0 10 00 30 + 4216 D2:465C 00 - - - .db 0 + 4217 D2:465D 96 9C - - .db 150,156 + 4218 D2:465F 94 9C - - .db 148,156 + 4219 D2:4661 94 9F - - .db 148,159 + 4220 D2:4663 F0 10 00 30 10 00 D0 10 00 - - - .f 271,259,269 - 4221 D2:4650 00 - - - .db 0 - 4222 D2:4651 96 9C - - .db 150,156 - 4223 D2:4653 94 9F - - .db 148,159 - 4224 D2:4655 96 9F - - .db 150,159 - 4225 D2:4657 80 10 00 20 + 4221 D2:466C 00 - - - .db 0 + 4222 D2:466D 96 9C - - .db 150,156 + 4223 D2:466F 94 9F - - .db 148,159 + 4224 D2:4671 96 9F - - .db 150,159 + 4225 D2:4673 80 10 00 20 10 00 10 10 00 - - - .f 264,258,257 - 4226 D2:4660 00 - - - .db 0 - 4227 D2:4661 96 9C - - .db 150,156 - 4228 D2:4663 94 9C - - .db 148,156 - 4229 D2:4665 94 9F - - .db 148,159 - 4230 D2:4667 80 10 00 10 + 4226 D2:467C 00 - - - .db 0 + 4227 D2:467D 96 9C - - .db 150,156 + 4228 D2:467F 94 9C - - .db 148,156 + 4229 D2:4681 94 9F - - .db 148,159 + 4230 D2:4683 80 10 00 10 10 00 30 10 00 - - - .f 264,257,259 - 4231 D2:4670 00 - - - .db 0 - 4232 D2:4671 96 9C - - .db 150,156 - 4233 D2:4673 94 9F - - .db 148,159 - 4234 D2:4675 96 9F - - .db 150,159 - 4235 D2:4677 20 10 00 70 + 4231 D2:468C 00 - - - .db 0 + 4232 D2:468D 96 9C - - .db 150,156 + 4233 D2:468F 94 9F - - .db 148,159 + 4234 D2:4691 96 9F - - .db 150,159 + 4235 D2:4693 20 10 00 70 10 00 40 10 00 - - - .f 258,263,260 - 4236 D2:4680 00 - - - .db 0 - 4237 D2:4681 96 9C - - .db 150,156 - 4238 D2:4683 94 9C - - .db 148,156 - 4239 D2:4685 94 9F - - .db 148,159 - 4240 D2:4687 20 10 00 40 + 4236 D2:469C 00 - - - .db 0 + 4237 D2:469D 96 9C - - .db 150,156 + 4238 D2:469F 94 9C - - .db 148,156 + 4239 D2:46A1 94 9F - - .db 148,159 + 4240 D2:46A3 20 10 00 40 10 00 10 10 00 - - - .f 258,260,257 - 4241 D2:4690 00 - - - .db 0 - 4242 D2:4691 96 9C - - .db 150,156 - 4243 D2:4693 94 9F - - .db 148,159 - 4244 D2:4695 96 9F - - .db 150,159 - 4245 D2:4697 B0 10 00 50 + 4241 D2:46AC 00 - - - .db 0 + 4242 D2:46AD 96 9C - - .db 150,156 + 4243 D2:46AF 94 9F - - .db 148,159 + 4244 D2:46B1 96 9F - - .db 150,159 + 4245 D2:46B3 B0 10 00 50 10 00 E0 10 00 - - - .f 267,261,270 - 4246 D2:46A0 00 - - - .db 0 - 4247 D2:46A1 96 9C - - .db 150,156 - 4248 D2:46A3 94 9C - - .db 148,156 - 4249 D2:46A5 94 9F - - .db 148,159 - 4250 D2:46A7 E0 10 00 50 + 4246 D2:46BC 00 - - - .db 0 + 4247 D2:46BD 96 9C - - .db 150,156 + 4248 D2:46BF 94 9C - - .db 148,156 + 4249 D2:46C1 94 9F - - .db 148,159 + 4250 D2:46C3 E0 10 00 50 10 00 40 10 00 - - - .f 270,261,260 - 4251 D2:46B0 00 - - - .db 0 - 4252 D2:46B1 96 9C - - .db 150,156 - 4253 D2:46B3 94 9C - - .db 148,156 - 4254 D2:46B5 94 9F - - .db 148,159 - 4255 D2:46B7 D0 10 00 B0 + 4251 D2:46CC 00 - - - .db 0 + 4252 D2:46CD 96 9C - - .db 150,156 + 4253 D2:46CF 94 9C - - .db 148,156 + 4254 D2:46D1 94 9F - - .db 148,159 + 4255 D2:46D3 D0 10 00 B0 10 00 E0 10 00 - - - .f 269,267,270 - 4256 D2:46C0 00 - - - .db 0 - 4257 D2:46C1 96 9C - - .db 150,156 - 4258 D2:46C3 94 9C - - .db 148,156 - 4259 D2:46C5 94 9F - - .db 148,159 - 4260 D2:46C7 30 10 00 60 + 4256 D2:46DC 00 - - - .db 0 + 4257 D2:46DD 96 9C - - .db 150,156 + 4258 D2:46DF 94 9C - - .db 148,156 + 4259 D2:46E1 94 9F - - .db 148,159 + 4260 D2:46E3 30 10 00 60 10 00 D0 10 00 - - - .f 259,262,269 - 4261 D2:46D0 00 - - - .db 0 - 4262 D2:46D1 96 9C - - .db 150,156 - 4263 D2:46D3 94 9C - - .db 148,156 - 4264 D2:46D5 94 9F - - .db 148,159 - 4265 D2:46D7 B0 10 00 D0 + 4261 D2:46EC 00 - - - .db 0 + 4262 D2:46ED 96 9C - - .db 150,156 + 4263 D2:46EF 94 9C - - .db 148,156 + 4264 D2:46F1 94 9F - - .db 148,159 + 4265 D2:46F3 B0 10 00 D0 10 00 60 10 00 - - - .f 267,269,262 - 4266 D2:46E0 00 - - - .db 0 - 4267 D2:46E1 96 9C - - .db 150,156 - 4268 D2:46E3 94 9C - - .db 148,156 - 4269 D2:46E5 94 9F - - .db 148,159 - 4270 D2:46E7 50 10 00 60 + 4266 D2:46FC 00 - - - .db 0 + 4267 D2:46FD 96 9C - - .db 150,156 + 4268 D2:46FF 94 9C - - .db 148,156 + 4269 D2:4701 94 9F - - .db 148,159 + 4270 D2:4703 50 10 00 60 10 00 10 10 00 - - - .f 261,262,257 - 4271 D2:46F0 00 - - - .db 0 - 4272 D2:46F1 96 9C - - .db 150,156 - 4273 D2:46F3 94 9C - - .db 148,156 - 4274 D2:46F5 94 9F - - .db 148,159 - 4275 D2:46F7 10 10 00 60 + 4271 D2:470C 00 - - - .db 0 + 4272 D2:470D 96 9C - - .db 150,156 + 4273 D2:470F 94 9C - - .db 148,156 + 4274 D2:4711 94 9F - - .db 148,159 + 4275 D2:4713 10 10 00 60 10 00 30 10 00 - - - .f 257,262,259 - 4276 D2:4700 00 - - - .db 0 - 4277 D2:4701 96 9C - - .db 150,156 - 4278 D2:4703 94 9C - - .db 148,156 - 4279 D2:4705 94 9F - - .db 148,159 - 4280 D2:4707 40 10 00 50 + 4276 D2:471C 00 - - - .db 0 + 4277 D2:471D 96 9C - - .db 150,156 + 4278 D2:471F 94 9C - - .db 148,156 + 4279 D2:4721 94 9F - - .db 148,159 + 4280 D2:4723 40 10 00 50 10 00 10 10 00 - - - .f 260,261,257 - 4281 D2:4710 00 - - - .db 0 - 4282 D2:4711 96 9C - - .db 150,156 - 4283 D2:4713 94 9C - - .db 148,156 - 4284 D2:4715 94 9F - - .db 148,159 - 4285 D2:4717 C0 10 00 00 + 4281 D2:472C 00 - - - .db 0 + 4282 D2:472D 96 9C - - .db 150,156 + 4283 D2:472F 94 9C - - .db 148,156 + 4284 D2:4731 94 9F - - .db 148,159 + 4285 D2:4733 C0 10 00 00 11 00 90 10 00 - - - .f 268,272,265 - 4286 D2:4720 00 - - - .db 0 - 4287 D2:4721 96 9C - - .db 150,156 - 4288 D2:4723 94 9C - - .db 148,156 - 4289 D2:4725 94 9F - - .db 148,159 - 4290 D2:4727 70 10 00 90 + 4286 D2:473C 00 - - - .db 0 + 4287 D2:473D 96 9C - - .db 150,156 + 4288 D2:473F 94 9C - - .db 148,156 + 4289 D2:4741 94 9F - - .db 148,159 + 4290 D2:4743 70 10 00 90 10 00 00 11 00 - - - .f 263,265,272 - 4291 D2:4730 00 - - - .db 0 - 4292 D2:4731 96 9C - - .db 150,156 - 4293 D2:4733 94 9C - - .db 148,156 - 4294 D2:4735 94 9F - - .db 148,159 - 4295 D2:4737 F0 10 00 00 + 4291 D2:474C 00 - - - .db 0 + 4292 D2:474D 96 9C - - .db 150,156 + 4293 D2:474F 94 9C - - .db 148,156 + 4294 D2:4751 94 9F - - .db 148,159 + 4295 D2:4753 F0 10 00 00 11 00 C0 10 00 - - - .f 271,272,268 - 4296 D2:4740 00 - - - .db 0 - 4297 D2:4741 96 9C - - .db 150,156 - 4298 D2:4743 94 9C - - .db 148,156 - 4299 D2:4745 94 9F - - .db 148,159 - 4300 D2:4747 80 10 00 F0 + 4296 D2:475C 00 - - - .db 0 + 4297 D2:475D 96 9C - - .db 150,156 + 4298 D2:475F 94 9C - - .db 148,156 + 4299 D2:4761 94 9F - - .db 148,159 + 4300 D2:4763 80 10 00 F0 10 00 A0 10 00 - - - .f 264,271,266 - 4301 D2:4750 00 - - - .db 0 - 4302 D2:4751 96 9C - - .db 150,156 - 4303 D2:4753 94 9C - - .db 148,156 - 4304 D2:4755 94 9F - - .db 148,159 - 4305 D2:4757 A0 10 00 F0 + 4301 D2:476C 00 - - - .db 0 + 4302 D2:476D 96 9C - - .db 150,156 + 4303 D2:476F 94 9C - - .db 148,156 + 4304 D2:4771 94 9F - - .db 148,159 + 4305 D2:4773 A0 10 00 F0 10 00 C0 10 00 - - - .f 266,271,268 - 4306 D2:4760 00 - - - .db 0 - 4307 D2:4761 96 9C - - .db 150,156 - 4308 D2:4763 94 9C - - .db 148,156 - 4309 D2:4765 94 9F - - .db 148,159 - 4310 D2:4767 80 10 00 A0 + 4306 D2:477C 00 - - - .db 0 + 4307 D2:477D 96 9C - - .db 150,156 + 4308 D2:477F 94 9C - - .db 148,156 + 4309 D2:4781 94 9F - - .db 148,159 + 4310 D2:4783 80 10 00 A0 10 00 20 10 00 - - - .f 264,266,258 - 4311 D2:4770 00 - - - .db 0 - 4312 D2:4771 96 9C - - .db 150,156 - 4313 D2:4773 94 9C - - .db 148,156 - 4314 D2:4775 94 9F - - .db 148,159 - 4315 D2:4777 70 10 00 20 + 4311 D2:478C 00 - - - .db 0 + 4312 D2:478D 96 9C - - .db 150,156 + 4313 D2:478F 94 9C - - .db 148,156 + 4314 D2:4791 94 9F - - .db 148,159 + 4315 D2:4793 70 10 00 20 10 00 90 10 00 - - - .f 263,258,265 - 4316 D2:4780 00 - - - .db 0 - 4317 D2:4781 96 9C - - .db 150,156 - 4318 D2:4783 94 9C - - .db 148,156 - 4319 D2:4785 94 9F - - .db 148,159 - 4320 D2:4787 90 10 00 20 + 4316 D2:479C 00 - - - .db 0 + 4317 D2:479D 96 9C - - .db 150,156 + 4318 D2:479F 94 9C - - .db 148,156 + 4319 D2:47A1 94 9F - - .db 148,159 + 4320 D2:47A3 90 10 00 20 10 00 A0 10 00 - - - .f 265,258,266 - 4321 D2:4790 00 - - - .db 0 - 4322 D2:4791 96 9C - - .db 150,156 - 4323 D2:4793 94 9C - - .db 148,156 - 4324 D2:4795 94 9F - - .db 148,159 - 4325 D2:4797 60 10 00 50 + 4321 D2:47AC 00 - - - .db 0 + 4322 D2:47AD 96 9C - - .db 150,156 + 4323 D2:47AF 94 9C - - .db 148,156 + 4324 D2:47B1 94 9F - - .db 148,159 + 4325 D2:47B3 60 10 00 50 10 00 B0 10 00 - - - .f 262,261,267 - 4326 D2:47A0 00 - - - .db 0 - 4327 D2:47A1 96 9C - - .db 150,156 - 4328 D2:47A3 94 9C - - .db 148,156 - 4329 D2:47A5 94 9F - - .db 148,159 - 4330 D2:47A7 90 10 00 A0 + 4326 D2:47BC 00 - - - .db 0 + 4327 D2:47BD 96 9C - - .db 150,156 + 4328 D2:47BF 94 9C - - .db 148,156 + 4329 D2:47C1 94 9F - - .db 148,159 + 4330 D2:47C3 90 10 00 A0 10 00 C0 10 00 - - - .f 265,266,268 - 4331 D2:47B0 00 - - - .db 0 - 4332 D2:47B1 96 9C - - .db 150,156 - 4333 D2:47B3 94 9C - - .db 148,156 - 4334 D2:47B5 94 9F - - .db 148,159 - 4335 D2:47B7 50 11 00 C0 + 4331 D2:47CC 00 - - - .db 0 + 4332 D2:47CD 96 9C - - .db 150,156 + 4333 D2:47CF 94 9C - - .db 148,156 + 4334 D2:47D1 94 9F - - .db 148,159 + 4335 D2:47D3 50 11 00 C0 11 00 A0 11 00 - - - .f 277,284,282 - 4336 D2:47C0 00 - - - .db 0 - 4337 D2:47C1 96 9C - - .db 150,156 - 4338 D2:47C3 94 9C - - .db 148,156 - 4339 D2:47C5 94 9F - - .db 148,159 - 4340 D2:47C7 50 11 00 A0 + 4336 D2:47DC 00 - - - .db 0 + 4337 D2:47DD 96 9C - - .db 150,156 + 4338 D2:47DF 94 9C - - .db 148,156 + 4339 D2:47E1 94 9F - - .db 148,159 + 4340 D2:47E3 50 11 00 A0 11 00 30 11 00 - - - .f 277,282,275 - 4341 D2:47D0 00 - - - .db 0 - 4342 D2:47D1 96 9C - - .db 150,156 - 4343 D2:47D3 94 9F - - .db 148,159 - 4344 D2:47D5 96 9F - - .db 150,159 - 4345 D2:47D7 C0 11 00 D0 + 4341 D2:47EC 00 - - - .db 0 + 4342 D2:47ED 96 9C - - .db 150,156 + 4343 D2:47EF 94 9F - - .db 148,159 + 4344 D2:47F1 96 9F - - .db 150,159 + 4345 D2:47F3 C0 11 00 D0 11 00 B0 11 00 - - - .f 284,285,283 - 4346 D2:47E0 00 - - - .db 0 - 4347 D2:47E1 96 9C - - .db 150,156 - 4348 D2:47E3 94 9C - - .db 148,156 - 4349 D2:47E5 94 9F - - .db 148,159 - 4350 D2:47E7 C0 11 00 B0 + 4346 D2:47FC 00 - - - .db 0 + 4347 D2:47FD 96 9C - - .db 150,156 + 4348 D2:47FF 94 9C - - .db 148,156 + 4349 D2:4801 94 9F - - .db 148,159 + 4350 D2:4803 C0 11 00 B0 11 00 A0 11 00 - - - .f 284,283,282 - 4351 D2:47F0 00 - - - .db 0 - 4352 D2:47F1 96 9C - - .db 150,156 - 4353 D2:47F3 94 9F - - .db 148,159 - 4354 D2:47F5 96 9F - - .db 150,159 - 4355 D2:47F7 D0 11 00 60 + 4351 D2:480C 00 - - - .db 0 + 4352 D2:480D 96 9C - - .db 150,156 + 4353 D2:480F 94 9F - - .db 148,159 + 4354 D2:4811 96 9F - - .db 150,159 + 4355 D2:4813 D0 11 00 60 11 00 40 11 00 - - - .f 285,278,276 - 4356 D2:4800 00 - - - .db 0 - 4357 D2:4801 96 9C - - .db 150,156 - 4358 D2:4803 94 9C - - .db 148,156 - 4359 D2:4805 94 9F - - .db 148,159 - 4360 D2:4807 D0 11 00 40 + 4356 D2:481C 00 - - - .db 0 + 4357 D2:481D 96 9C - - .db 150,156 + 4358 D2:481F 94 9C - - .db 148,156 + 4359 D2:4821 94 9F - - .db 148,159 + 4360 D2:4823 D0 11 00 40 11 00 B0 11 00 - - - .f 285,276,283 - 4361 D2:4810 00 - - - .db 0 - 4362 D2:4811 96 9C - - .db 150,156 - 4363 D2:4813 94 9F - - .db 148,159 - 4364 D2:4815 96 9F - - .db 150,159 - 4365 D2:4817 60 11 00 10 + 4361 D2:482C 00 - - - .db 0 + 4362 D2:482D 96 9C - - .db 150,156 + 4363 D2:482F 94 9F - - .db 148,159 + 4364 D2:4831 96 9F - - .db 150,159 + 4365 D2:4833 60 11 00 10 11 00 20 11 00 - - - .f 278,273,274 - 4366 D2:4820 00 - - - .db 0 - 4367 D2:4821 96 9C - - .db 150,156 - 4368 D2:4823 94 9C - - .db 148,156 - 4369 D2:4825 94 9F - - .db 148,159 - 4370 D2:4827 60 11 00 20 + 4366 D2:483C 00 - - - .db 0 + 4367 D2:483D 96 9C - - .db 150,156 + 4368 D2:483F 94 9C - - .db 148,156 + 4369 D2:4841 94 9F - - .db 148,159 + 4370 D2:4843 60 11 00 20 11 00 40 11 00 - - - .f 278,274,276 - 4371 D2:4830 00 - - - .db 0 - 4372 D2:4831 96 9C - - .db 150,156 - 4373 D2:4833 94 9F - - .db 148,159 - 4374 D2:4835 96 9F - - .db 150,159 - 4375 D2:4837 10 11 00 50 + 4371 D2:484C 00 - - - .db 0 + 4372 D2:484D 96 9C - - .db 150,156 + 4373 D2:484F 94 9F - - .db 148,159 + 4374 D2:4851 96 9F - - .db 150,159 + 4375 D2:4853 10 11 00 50 11 00 30 11 00 - - - .f 273,277,275 - 4376 D2:4840 00 - - - .db 0 - 4377 D2:4841 96 9C - - .db 150,156 - 4378 D2:4843 94 9C - - .db 148,156 - 4379 D2:4845 94 9F - - .db 148,159 - 4380 D2:4847 10 11 00 30 + 4376 D2:485C 00 - - - .db 0 + 4377 D2:485D 96 9C - - .db 150,156 + 4378 D2:485F 94 9C - - .db 148,156 + 4379 D2:4861 94 9F - - .db 148,159 + 4380 D2:4863 10 11 00 30 11 00 20 11 00 - - - .f 273,275,274 - 4381 D2:4850 00 - - - .db 0 - 4382 D2:4851 96 9C - - .db 150,156 - 4383 D2:4853 94 9F - - .db 148,159 - 4384 D2:4855 96 9F - - .db 150,159 - 4385 D2:4857 D0 11 00 C0 + 4381 D2:486C 00 - - - .db 0 + 4382 D2:486D 96 9C - - .db 150,156 + 4383 D2:486F 94 9F - - .db 148,159 + 4384 D2:4871 96 9F - - .db 150,159 + 4385 D2:4873 D0 11 00 C0 11 00 50 11 00 - - - .f 285,284,277 - 4386 D2:4860 00 - - - .db 0 - 4387 D2:4861 96 9C - - .db 150,156 - 4388 D2:4863 94 9C - - .db 148,156 - 4389 D2:4865 94 9F - - .db 148,159 - 4390 D2:4867 D0 11 00 50 + 4386 D2:487C 00 - - - .db 0 + 4387 D2:487D 96 9C - - .db 150,156 + 4388 D2:487F 94 9C - - .db 148,156 + 4389 D2:4881 94 9F - - .db 148,159 + 4390 D2:4883 D0 11 00 50 11 00 60 11 00 - - - .f 285,277,278 - 4391 D2:4870 00 - - - .db 0 - 4392 D2:4871 96 9C - - .db 150,156 - 4393 D2:4873 94 9F - - .db 148,159 - 4394 D2:4875 96 9F - - .db 150,159 - 4395 D2:4877 90 11 00 70 + 4391 D2:488C 00 - - - .db 0 + 4392 D2:488D 96 9C - - .db 150,156 + 4393 D2:488F 94 9F - - .db 148,159 + 4394 D2:4891 96 9F - - .db 150,159 + 4395 D2:4893 90 11 00 70 11 00 A0 11 00 - - - .f 281,279,282 - 4396 D2:4880 00 - - - .db 0 - 4397 D2:4881 96 9C - - .db 150,156 - 4398 D2:4883 94 9C - - .db 148,156 - 4399 D2:4885 94 9F - - .db 148,159 - 4400 D2:4887 A0 11 00 70 + 4396 D2:489C 00 - - - .db 0 + 4397 D2:489D 96 9C - - .db 150,156 + 4398 D2:489F 94 9C - - .db 148,156 + 4399 D2:48A1 94 9F - - .db 148,159 + 4400 D2:48A3 A0 11 00 70 11 00 30 11 00 - - - .f 282,279,275 - 4401 D2:4890 00 - - - .db 0 - 4402 D2:4891 96 9C - - .db 150,156 - 4403 D2:4893 94 9C - - .db 148,156 - 4404 D2:4895 94 9F - - .db 148,159 - 4405 D2:4897 B0 11 00 90 + 4401 D2:48AC 00 - - - .db 0 + 4402 D2:48AD 96 9C - - .db 150,156 + 4403 D2:48AF 94 9C - - .db 148,156 + 4404 D2:48B1 94 9F - - .db 148,159 + 4405 D2:48B3 B0 11 00 90 11 00 A0 11 00 - - - .f 283,281,282 - 4406 D2:48A0 00 - - - .db 0 - 4407 D2:48A1 96 9C - - .db 150,156 - 4408 D2:48A3 94 9C - - .db 148,156 - 4409 D2:48A5 94 9F - - .db 148,159 - 4410 D2:48A7 40 11 00 80 + 4406 D2:48BC 00 - - - .db 0 + 4407 D2:48BD 96 9C - - .db 150,156 + 4408 D2:48BF 94 9C - - .db 148,156 + 4409 D2:48C1 94 9F - - .db 148,159 + 4410 D2:48C3 40 11 00 80 11 00 B0 11 00 - - - .f 276,280,283 - 4411 D2:48B0 00 - - - .db 0 - 4412 D2:48B1 96 9C - - .db 150,156 - 4413 D2:48B3 94 9C - - .db 148,156 - 4414 D2:48B5 94 9F - - .db 148,159 - 4415 D2:48B7 90 11 00 B0 + 4411 D2:48CC 00 - - - .db 0 + 4412 D2:48CD 96 9C - - .db 150,156 + 4413 D2:48CF 94 9C - - .db 148,156 + 4414 D2:48D1 94 9F - - .db 148,159 + 4415 D2:48D3 90 11 00 B0 11 00 80 11 00 - - - .f 281,283,280 - 4416 D2:48C0 00 - - - .db 0 - 4417 D2:48C1 96 9C - - .db 150,156 - 4418 D2:48C3 94 9C - - .db 148,156 - 4419 D2:48C5 94 9F - - .db 148,159 - 4420 D2:48C7 70 11 00 80 + 4416 D2:48DC 00 - - - .db 0 + 4417 D2:48DD 96 9C - - .db 150,156 + 4418 D2:48DF 94 9C - - .db 148,156 + 4419 D2:48E1 94 9F - - .db 148,159 + 4420 D2:48E3 70 11 00 80 11 00 20 11 00 - - - .f 279,280,274 - 4421 D2:48D0 00 - - - .db 0 - 4422 D2:48D1 96 9C - - .db 150,156 - 4423 D2:48D3 94 9C - - .db 148,156 - 4424 D2:48D5 94 9F - - .db 148,159 - 4425 D2:48D7 20 11 00 80 + 4421 D2:48EC 00 - - - .db 0 + 4422 D2:48ED 96 9C - - .db 150,156 + 4423 D2:48EF 94 9C - - .db 148,156 + 4424 D2:48F1 94 9F - - .db 148,159 + 4425 D2:48F3 20 11 00 80 11 00 40 11 00 - - - .f 274,280,276 - 4426 D2:48E0 00 - - - .db 0 - 4427 D2:48E1 96 9C - - .db 150,156 - 4428 D2:48E3 94 9C - - .db 148,156 - 4429 D2:48E5 94 9F - - .db 148,159 - 4430 D2:48E7 30 11 00 70 + 4426 D2:48FC 00 - - - .db 0 + 4427 D2:48FD 96 9C - - .db 150,156 + 4428 D2:48FF 94 9C - - .db 148,156 + 4429 D2:4901 94 9F - - .db 148,159 + 4430 D2:4903 30 11 00 70 11 00 20 11 00 - - - .f 275,279,274 - 4431 D2:48F0 00 - - - .db 0 - 4432 D2:48F1 96 9C - - .db 150,156 - 4433 D2:48F3 94 9C - - .db 148,156 - 4434 D2:48F5 94 9F - - .db 148,159 - 4435 D2:48F7 50 11 00 10 + 4431 D2:490C 00 - - - .db 0 + 4432 D2:490D 96 9C - - .db 150,156 + 4433 D2:490F 94 9C - - .db 148,156 + 4434 D2:4911 94 9F - - .db 148,159 + 4435 D2:4913 50 11 00 10 11 00 60 11 00 - - - .f 277,273,278 - 4436 D2:4900 00 - - - .db 0 - 4437 D2:4901 96 9C - - .db 150,156 - 4438 D2:4903 94 9C - - .db 148,156 - 4439 D2:4905 94 9F - - .db 148,159 - 4440 D2:4907 80 11 00 70 + 4436 D2:491C 00 - - - .db 0 + 4437 D2:491D 96 9C - - .db 150,156 + 4438 D2:491F 94 9C - - .db 148,156 + 4439 D2:4921 94 9F - - .db 148,159 + 4440 D2:4923 80 11 00 70 11 00 90 11 00 - - - .f 280,279,281 - 4441 D2:4910 00 - - - .db 0 - 4442 D2:4911 96 9C - - .db 150,156 - 4443 D2:4913 94 9C - - .db 148,156 - 4444 D2:4915 94 9F - - .db 148,159 - 4445 D2:4917 00 12 00 40 + 4441 D2:492C 00 - - - .db 0 + 4442 D2:492D 96 9C - - .db 150,156 + 4443 D2:492F 94 9C - - .db 148,156 + 4444 D2:4931 94 9F - - .db 148,159 + 4445 D2:4933 00 12 00 40 12 00 50 12 00 - - - .f 288,292,293 - 4446 D2:4920 00 - - - .db 0 - 4447 D2:4921 D4 4C - - .db 212,76 - 4448 D2:4923 DF 4C - - .db 223,76 - 4449 D2:4925 DF 5A - - .db 223,90 - 4450 D2:4927 00 12 00 50 + 4446 D2:493C 00 - - - .db 0 + 4447 D2:493D D4 4C - - .db 212,76 + 4448 D2:493F DF 4C - - .db 223,76 + 4449 D2:4941 DF 5A - - .db 223,90 + 4450 D2:4943 00 12 00 50 12 00 10 12 00 - - - .f 288,293,289 - 4451 D2:4930 00 - - - .db 0 - 4452 D2:4931 D4 4C - - .db 212,76 - 4453 D2:4933 DF 5A - - .db 223,90 - 4454 D2:4935 D4 5A - - .db 212,90 - 4455 D2:4937 50 12 00 40 + 4451 D2:494C 00 - - - .db 0 + 4452 D2:494D D4 4C - - .db 212,76 + 4453 D2:494F DF 5A - - .db 223,90 + 4454 D2:4951 D4 5A - - .db 212,90 + 4455 D2:4953 50 12 00 40 12 00 20 12 00 - - - .f 293,292,290 - 4456 D2:4940 00 - - - .db 0 - 4457 D2:4941 E0 4C - - .db 224,76 - 4458 D2:4943 EB 4C - - .db 235,76 - 4459 D2:4945 EB 5A - - .db 235,90 - 4460 D2:4947 50 12 00 20 + 4456 D2:495C 00 - - - .db 0 + 4457 D2:495D E0 4C - - .db 224,76 + 4458 D2:495F EB 4C - - .db 235,76 + 4459 D2:4961 EB 5A - - .db 235,90 + 4460 D2:4963 50 12 00 20 12 00 30 12 00 - - - .f 293,290,291 - 4461 D2:4950 00 - - - .db 0 - 4462 D2:4951 E0 4C - - .db 224,76 - 4463 D2:4953 EB 5A - - .db 235,90 - 4464 D2:4955 E0 5A - - .db 224,90 - 4465 D2:4957 F0 11 00 E0 + 4461 D2:496C 00 - - - .db 0 + 4462 D2:496D E0 4C - - .db 224,76 + 4463 D2:496F EB 5A - - .db 235,90 + 4464 D2:4971 E0 5A - - .db 224,90 + 4465 D2:4973 F0 11 00 E0 11 00 00 12 00 - - - .f 287,286,288 - 4466 D2:4960 00 - - - .db 0 - 4467 D2:4961 EC 4C - - .db 236,76 - 4468 D2:4963 F7 4C - - .db 247,76 - 4469 D2:4965 F7 5A - - .db 247,90 - 4470 D2:4967 F0 11 00 00 + 4466 D2:497C 00 - - - .db 0 + 4467 D2:497D EC 4C - - .db 236,76 + 4468 D2:497F F7 4C - - .db 247,76 + 4469 D2:4981 F7 5A - - .db 247,90 + 4470 D2:4983 F0 11 00 00 12 00 10 12 00 - - - .f 287,288,289 - 4471 D2:4970 00 - - - .db 0 - 4472 D2:4971 EC 4C - - .db 236,76 - 4473 D2:4973 F7 5A - - .db 247,90 - 4474 D2:4975 EC 5A - - .db 236,90 - 4475 D2:4977 10 12 00 50 + 4471 D2:498C 00 - - - .db 0 + 4472 D2:498D EC 4C - - .db 236,76 + 4473 D2:498F F7 5A - - .db 247,90 + 4474 D2:4991 EC 5A - - .db 236,90 + 4475 D2:4993 10 12 00 50 12 00 30 12 00 - - - .f 289,293,291 - 4476 D2:4980 00 - - - .db 0 - 4477 D2:4981 C8 4C - - .db 200,76 - 4478 D2:4983 D3 4C - - .db 211,76 - 4479 D2:4985 D3 5A - - .db 211,90 - 4480 D2:4987 10 12 00 30 + 4476 D2:499C 00 - - - .db 0 + 4477 D2:499D C8 4C - - .db 200,76 + 4478 D2:499F D3 4C - - .db 211,76 + 4479 D2:49A1 D3 5A - - .db 211,90 + 4480 D2:49A3 10 12 00 30 12 00 F0 11 00 - - - .f 289,291,287 - 4481 D2:4990 00 - - - .db 0 - 4482 D2:4991 C8 4C - - .db 200,76 - 4483 D2:4993 D3 5A - - .db 211,90 - 4484 D2:4995 C8 5A - - .db 200,90 - 4485 D2:4997 40 12 00 00 + 4481 D2:49AC 00 - - - .db 0 + 4482 D2:49AD C8 4C - - .db 200,76 + 4483 D2:49AF D3 5A - - .db 211,90 + 4484 D2:49B1 C8 5A - - .db 200,90 + 4485 D2:49B3 40 12 00 00 12 00 20 12 00 - - - .f 292,288,290 - 4486 D2:49A0 00 - - - .db 0 - 4487 D2:49A1 80 5C - - .db 128,92 - 4488 D2:49A3 8A 5C - - .db 138,92 - 4489 D2:49A5 8A 6B - - .db 138,107 - 4490 D2:49A7 E0 11 00 20 + 4486 D2:49BC 00 - - - .db 0 + 4487 D2:49BD 80 5C - - .db 128,92 + 4488 D2:49BF 8A 5C - - .db 138,92 + 4489 D2:49C1 8A 6B - - .db 138,107 + 4490 D2:49C3 E0 11 00 20 12 00 00 12 00 - - - .f 286,290,288 - 4491 D2:49B0 00 - - - .db 0 - 4492 D2:49B1 80 6B - - .db 128,107 - 4493 D2:49B3 8A 6B - - .db 138,107 - 4494 D2:49B5 8A 5C - - .db 138,92 - 4495 D2:49B7 E0 11 00 F0 + 4491 D2:49CC 00 - - - .db 0 + 4492 D2:49CD 80 6B - - .db 128,107 + 4493 D2:49CF 8A 6B - - .db 138,107 + 4494 D2:49D1 8A 5C - - .db 138,92 + 4495 D2:49D3 E0 11 00 F0 11 00 30 12 00 - - - .f 286,287,291 - 4496 D2:49C0 00 - - - .db 0 - 4497 D2:49C1 7F 2B - - .db 127,43 - 4498 D2:49C3 7F 2B - - .db 127,43 - 4499 D2:49C5 7F 2B - - .db 127,43 - 4500 D2:49C7 E0 11 00 30 + 4496 D2:49DC 00 - - - .db 0 + 4497 D2:49DD 7F 2B - - .db 127,43 + 4498 D2:49DF 7F 2B - - .db 127,43 + 4499 D2:49E1 7F 2B - - .db 127,43 + 4500 D2:49E3 E0 11 00 30 12 00 20 12 00 - - - .f 286,291,290 - 4501 D2:49D0 00 - - - .db 0 - 4502 D2:49D1 7F 2B - - .db 127,43 - 4503 D2:49D3 7F 2B - - .db 127,43 - 4504 D2:49D5 7F 2B - - .db 127,43 - 4505 D2:49D7 C0 12 00 10 + 4501 D2:49EC 00 - - - .db 0 + 4502 D2:49ED 7F 2B - - .db 127,43 + 4503 D2:49EF 7F 2B - - .db 127,43 + 4504 D2:49F1 7F 2B - - .db 127,43 + 4505 D2:49F3 C0 12 00 10 13 00 60 14 00 - - - .f 300,305,326 - 4506 D2:49E0 00 - - - .db 0 - 4507 D2:49E1 E7 67 - - .db 231,103 - 4508 D2:49E3 E7 5C - - .db 231,92 - 4509 D2:49E5 DC 5C - - .db 220,92 - 4510 D2:49E7 10 14 00 00 + 4506 D2:49FC 00 - - - .db 0 + 4507 D2:49FD E7 67 - - .db 231,103 + 4508 D2:49FF E7 5C - - .db 231,92 + 4509 D2:4A01 DC 5C - - .db 220,92 + 4510 D2:4A03 10 14 00 00 14 00 B0 13 00 - - - .f 321,320,315 - 4511 D2:49F0 00 - - - .db 0 - 4512 D2:49F1 9A 6C - - .db 154,108 - 4513 D2:49F3 9A 77 - - .db 154,119 - 4514 D2:49F5 94 77 - - .db 148,119 - 4515 D2:49F7 F0 12 00 40 + 4511 D2:4A0C 00 - - - .db 0 + 4512 D2:4A0D 9A 6C - - .db 154,108 + 4513 D2:4A0F 9A 77 - - .db 154,119 + 4514 D2:4A11 94 77 - - .db 148,119 + 4515 D2:4A13 F0 12 00 40 13 00 80 13 00 - - - .f 303,308,312 - 4516 D2:4A00 00 - - - .db 0 - 4517 D2:4A01 8C 3E - - .db 140,62 - 4518 D2:4A03 8C 2C - - .db 140,44 - 4519 D2:4A05 9A 2C - - .db 154,44 - 4520 D2:4A07 10 16 00 30 + 4516 D2:4A1C 00 - - - .db 0 + 4517 D2:4A1D 8C 3E - - .db 140,62 + 4518 D2:4A1F 8C 2C - - .db 140,44 + 4519 D2:4A21 9A 2C - - .db 154,44 + 4520 D2:4A23 10 16 00 30 15 00 D0 15 00 - - - .f 353,339,349 - 4521 D2:4A10 00 - - - .db 0 - 4522 D2:4A11 8C 3E - - .db 140,62 - 4523 D2:4A13 9A 3E - - .db 154,62 - 4524 D2:4A15 9A 2C - - .db 154,44 - 4525 D2:4A17 60 14 00 80 + 4521 D2:4A2C 00 - - - .db 0 + 4522 D2:4A2D 8C 3E - - .db 140,62 + 4523 D2:4A2F 9A 3E - - .db 154,62 + 4524 D2:4A31 9A 2C - - .db 154,44 + 4525 D2:4A33 60 14 00 80 15 00 F0 15 00 - - - .f 326,344,351 - 4526 D2:4A20 00 - - - .db 0 - 4527 D2:4A21 DC 5C - - .db 220,92 - 4528 D2:4A23 E7 5C - - .db 231,92 - 4529 D2:4A25 E7 67 - - .db 231,103 - 4530 D2:4A27 D0 14 00 00 + 4526 D2:4A3C 00 - - - .db 0 + 4527 D2:4A3D DC 5C - - .db 220,92 + 4528 D2:4A3F E7 5C - - .db 231,92 + 4529 D2:4A41 E7 67 - - .db 231,103 + 4530 D2:4A43 D0 14 00 00 14 00 10 14 00 - - - .f 333,320,321 - 4531 D2:4A30 00 - - - .db 0 - 4532 D2:4A31 94 77 - - .db 148,119 - 4533 D2:4A33 9A 77 - - .db 154,119 - 4534 D2:4A35 9A 6C - - .db 154,108 - 4535 D2:4A37 00 14 00 A0 + 4531 D2:4A4C 00 - - - .db 0 + 4532 D2:4A4D 94 77 - - .db 148,119 + 4533 D2:4A4F 9A 77 - - .db 154,119 + 4534 D2:4A51 9A 6C - - .db 154,108 + 4535 D2:4A53 00 14 00 A0 13 00 B0 13 00 - - - .f 320,314,315 - 4536 D2:4A40 00 - - - .db 0 - 4537 D2:4A41 88 9F - - .db 136,159 - 4538 D2:4A43 8A 9F - - .db 138,159 - 4539 D2:4A45 8A 9C - - .db 138,156 - 4540 D2:4A47 E0 14 00 A0 + 4536 D2:4A5C 00 - - - .db 0 + 4537 D2:4A5D 88 9F - - .db 136,159 + 4538 D2:4A5F 8A 9F - - .db 138,159 + 4539 D2:4A61 8A 9C - - .db 138,156 + 4540 D2:4A63 E0 14 00 A0 13 00 D0 14 00 - - - .f 334,314,333 - 4541 D2:4A50 00 - - - .db 0 - 4542 D2:4A51 88 9F - - .db 136,159 - 4543 D2:4A53 8A 9F - - .db 138,159 - 4544 D2:4A55 8A 9C - - .db 138,156 - 4545 D2:4A57 10 13 00 70 + 4541 D2:4A6C 00 - - - .db 0 + 4542 D2:4A6D 88 9F - - .db 136,159 + 4543 D2:4A6F 8A 9F - - .db 138,159 + 4544 D2:4A71 8A 9C - - .db 138,156 + 4545 D2:4A73 10 13 00 70 14 00 60 14 00 - - - .f 305,327,326 - 4546 D2:4A60 00 - - - .db 0 - 4547 D2:4A61 9A 2C - - .db 154,44 - 4548 D2:4A63 8C 2C - - .db 140,44 - 4549 D2:4A65 8C 3E - - .db 140,62 - 4550 D2:4A67 F0 12 00 F0 + 4546 D2:4A7C 00 - - - .db 0 + 4547 D2:4A7D 9A 2C - - .db 154,44 + 4548 D2:4A7F 8C 2C - - .db 140,44 + 4549 D2:4A81 8C 3E - - .db 140,62 + 4550 D2:4A83 F0 12 00 F0 13 00 80 14 00 - - - .f 303,319,328 - 4551 D2:4A70 00 - - - .db 0 - 4552 D2:4A71 9A 2C - - .db 154,44 - 4553 D2:4A73 8C 2C - - .db 140,44 - 4554 D2:4A75 8C 3E - - .db 140,62 - 4555 D2:4A77 80 13 00 A0 + 4551 D2:4A8C 00 - - - .db 0 + 4552 D2:4A8D 9A 2C - - .db 154,44 + 4553 D2:4A8F 8C 2C - - .db 140,44 + 4554 D2:4A91 8C 3E - - .db 140,62 + 4555 D2:4A93 80 13 00 A0 14 00 F0 13 00 - - - .f 312,330,319 - 4556 D2:4A80 00 - - - .db 0 - 4557 D2:4A81 9A 2C - - .db 154,44 - 4558 D2:4A83 8C 2C - - .db 140,44 - 4559 D2:4A85 8C 3E - - .db 140,62 - 4560 D2:4A87 30 14 00 20 + 4556 D2:4A9C 00 - - - .db 0 + 4557 D2:4A9D 9A 2C - - .db 154,44 + 4558 D2:4A9F 8C 2C - - .db 140,44 + 4559 D2:4AA1 8C 3E - - .db 140,62 + 4560 D2:4AA3 30 14 00 20 14 00 90 13 00 - - - .f 323,322,313 - 4561 D2:4A90 00 - - - .db 0 - 4562 D2:4A91 A6 4C - - .db 166,76 - 4563 D2:4A93 A6 5A - - .db 166,90 - 4564 D2:4A95 94 5A - - .db 148,90 - 4565 D2:4A97 10 14 00 20 + 4561 D2:4AAC 00 - - - .db 0 + 4562 D2:4AAD A6 4C - - .db 166,76 + 4563 D2:4AAF A6 5A - - .db 166,90 + 4564 D2:4AB1 94 5A - - .db 148,90 + 4565 D2:4AB3 10 14 00 20 14 00 F0 14 00 - - - .f 321,322,335 - 4566 D2:4AA0 00 - - - .db 0 - 4567 D2:4AA1 80 5A - - .db 128,90 - 4568 D2:4AA3 80 4C - - .db 128,76 - 4569 D2:4AA5 92 4C - - .db 146,76 - 4570 D2:4AA7 B0 15 00 F0 + 4566 D2:4ABC 00 - - - .db 0 + 4567 D2:4ABD 80 5A - - .db 128,90 + 4568 D2:4ABF 80 4C - - .db 128,76 + 4569 D2:4AC1 92 4C - - .db 146,76 + 4570 D2:4AC3 B0 15 00 F0 15 00 80 15 00 - - - .f 347,351,344 - 4571 D2:4AB0 00 - - - .db 0 - 4572 D2:4AB1 B8 5A - - .db 184,90 - 4573 D2:4AB3 C7 5A - - .db 199,90 - 4574 D2:4AB5 C7 4C - - .db 199,76 - 4575 D2:4AB7 90 15 00 F0 + 4571 D2:4ACC 00 - - - .db 0 + 4572 D2:4ACD B8 5A - - .db 184,90 + 4573 D2:4ACF C7 5A - - .db 199,90 + 4574 D2:4AD1 C7 4C - - .db 199,76 + 4575 D2:4AD3 90 15 00 F0 14 00 30 14 00 - - - .f 345,335,323 - 4576 D2:4AC0 00 - - - .db 0 - 4577 D2:4AC1 AE 90 - - .db 174,144 - 4578 D2:4AC3 A8 90 - - .db 168,144 - 4579 D2:4AC5 A8 97 - - .db 168,151 - 4580 D2:4AC7 90 12 00 E0 + 4576 D2:4ADC 00 - - - .db 0 + 4577 D2:4ADD AE 90 - - .db 174,144 + 4578 D2:4ADF A8 90 - - .db 168,144 + 4579 D2:4AE1 A8 97 - - .db 168,151 + 4580 D2:4AE3 90 12 00 E0 12 00 00 13 00 - - - .f 297,302,304 - 4581 D2:4AD0 00 - - - .db 0 - 4582 D2:4AD1 FF 2C - - .db 255,44 - 4583 D2:4AD3 FC 2C - - .db 252,44 - 4584 D2:4AD5 FC 36 - - .db 252,54 - 4585 D2:4AD7 60 12 00 10 + 4581 D2:4AEC 00 - - - .db 0 + 4582 D2:4AED FF 2C - - .db 255,44 + 4583 D2:4AEF FC 2C - - .db 252,44 + 4584 D2:4AF1 FC 36 - - .db 252,54 + 4585 D2:4AF3 60 12 00 10 13 00 D0 12 00 - - - .f 294,305,301 - 4586 D2:4AE0 00 - - - .db 0 - 4587 D2:4AE1 9A 2C - - .db 154,44 - 4588 D2:4AE3 8C 2C - - .db 140,44 - 4589 D2:4AE5 8C 3E - - .db 140,62 - 4590 D2:4AE7 E0 15 00 C0 + 4586 D2:4AFC 00 - - - .db 0 + 4587 D2:4AFD 9A 2C - - .db 154,44 + 4588 D2:4AFF 8C 2C - - .db 140,44 + 4589 D2:4B01 8C 3E - - .db 140,62 + 4590 D2:4B03 E0 15 00 C0 15 00 30 14 00 - - - .f 350,348,323 - 4591 D2:4AF0 00 - - - .db 0 - 4592 D2:4AF1 D7 6C - - .db 215,108 - 4593 D2:4AF3 D7 73 - - .db 215,115 - 4594 D2:4AF5 BC 73 - - .db 188,115 - 4595 D2:4AF7 B0 12 00 40 + 4591 D2:4B0C 00 - - - .db 0 + 4592 D2:4B0D D7 6C - - .db 215,108 + 4593 D2:4B0F D7 73 - - .db 215,115 + 4594 D2:4B11 BC 73 - - .db 188,115 + 4595 D2:4B13 B0 12 00 40 14 00 30 14 00 - - - .f 299,324,323 - 4596 D2:4B00 00 - - - .db 0 - 4597 D2:4B01 D7 6C - - .db 215,108 - 4598 D2:4B03 BC 6C - - .db 188,108 - 4599 D2:4B05 BC 73 - - .db 188,115 - 4600 D2:4B07 E0 12 00 90 + 4596 D2:4B1C 00 - - - .db 0 + 4597 D2:4B1D D7 6C - - .db 215,108 + 4598 D2:4B1F BC 6C - - .db 188,108 + 4599 D2:4B21 BC 73 - - .db 188,115 + 4600 D2:4B23 E0 12 00 90 12 00 30 14 00 - - - .f 302,297,323 - 4601 D2:4B10 00 - - - .db 0 - 4602 D2:4B11 D3 7F - - .db 211,127 - 4603 D2:4B13 D3 78 - - .db 211,120 - 4604 D2:4B15 B8 78 - - .db 184,120 - 4605 D2:4B17 90 15 00 C0 + 4601 D2:4B2C 00 - - - .db 0 + 4602 D2:4B2D D3 7F - - .db 211,127 + 4603 D2:4B2F D3 78 - - .db 211,120 + 4604 D2:4B31 B8 78 - - .db 184,120 + 4605 D2:4B33 90 15 00 C0 15 00 70 15 00 - - - .f 345,348,343 - 4606 D2:4B20 00 - - - .db 0 - 4607 D2:4B21 FF 2C - - .db 255,44 - 4608 D2:4B23 FC 2C - - .db 252,44 - 4609 D2:4B25 FC 36 - - .db 252,54 - 4610 D2:4B27 70 15 00 D0 + 4606 D2:4B3C 00 - - - .db 0 + 4607 D2:4B3D FF 2C - - .db 255,44 + 4608 D2:4B3F FC 2C - - .db 252,44 + 4609 D2:4B41 FC 36 - - .db 252,54 + 4610 D2:4B43 70 15 00 D0 14 00 90 15 00 - - - .f 343,333,345 - 4611 D2:4B30 00 - - - .db 0 - 4612 D2:4B31 80 77 - - .db 128,119 - 4613 D2:4B33 8A 77 - - .db 138,119 - 4614 D2:4B35 8A 6C - - .db 138,108 - 4615 D2:4B37 D0 14 00 A0 + 4611 D2:4B4C 00 - - - .db 0 + 4612 D2:4B4D 80 77 - - .db 128,119 + 4613 D2:4B4F 8A 77 - - .db 138,119 + 4614 D2:4B51 8A 6C - - .db 138,108 + 4615 D2:4B53 D0 14 00 A0 13 00 00 14 00 - - - .f 333,314,320 - 4616 D2:4B40 00 - - - .db 0 - 4617 D2:4B41 88 9F - - .db 136,159 - 4618 D2:4B43 8A 9F - - .db 138,159 - 4619 D2:4B45 8A 9C - - .db 138,156 - 4620 D2:4B47 B0 13 00 A0 + 4616 D2:4B5C 00 - - - .db 0 + 4617 D2:4B5D 88 9F - - .db 136,159 + 4618 D2:4B5F 8A 9F - - .db 138,159 + 4619 D2:4B61 8A 9C - - .db 138,156 + 4620 D2:4B63 B0 13 00 A0 13 00 00 13 00 - - - .f 315,314,304 - 4621 D2:4B50 00 - - - .db 0 - 4622 D2:4B51 88 9F - - .db 136,159 - 4623 D2:4B53 8A 9F - - .db 138,159 - 4624 D2:4B55 8A 9C - - .db 138,156 - 4625 D2:4B57 B0 13 00 90 + 4621 D2:4B6C 00 - - - .db 0 + 4622 D2:4B6D 88 9F - - .db 136,159 + 4623 D2:4B6F 8A 9F - - .db 138,159 + 4624 D2:4B71 8A 9C - - .db 138,156 + 4625 D2:4B73 B0 13 00 90 13 00 10 14 00 - - - .f 315,313,321 - 4626 D2:4B60 00 - - - .db 0 - 4627 D2:4B61 94 77 - - .db 148,119 - 4628 D2:4B63 94 6C - - .db 148,108 - 4629 D2:4B65 9A 6C - - .db 154,108 - 4630 D2:4B67 90 13 00 20 + 4626 D2:4B7C 00 - - - .db 0 + 4627 D2:4B7D 94 77 - - .db 148,119 + 4628 D2:4B7F 94 6C - - .db 148,108 + 4629 D2:4B81 9A 6C - - .db 154,108 + 4630 D2:4B83 90 13 00 20 14 00 10 14 00 - - - .f 313,322,321 - 4631 D2:4B70 00 - - - .db 0 - 4632 D2:4B71 92 4C - - .db 146,76 - 4633 D2:4B73 80 4C - - .db 128,76 - 4634 D2:4B75 80 5A - - .db 128,90 - 4635 D2:4B77 E0 12 00 90 + 4631 D2:4B8C 00 - - - .db 0 + 4632 D2:4B8D 92 4C - - .db 146,76 + 4633 D2:4B8F 80 4C - - .db 128,76 + 4634 D2:4B91 80 5A - - .db 128,90 + 4635 D2:4B93 E0 12 00 90 13 00 B0 13 00 - - - .f 302,313,315 - 4636 D2:4B80 00 - - - .db 0 - 4637 D2:4B81 AE 90 - - .db 174,144 - 4638 D2:4B83 A8 90 - - .db 168,144 - 4639 D2:4B85 A8 97 - - .db 168,151 - 4640 D2:4B87 F0 14 00 20 + 4636 D2:4B9C 00 - - - .db 0 + 4637 D2:4B9D AE 90 - - .db 174,144 + 4638 D2:4B9F A8 90 - - .db 168,144 + 4639 D2:4BA1 A8 97 - - .db 168,151 + 4640 D2:4BA3 F0 14 00 20 14 00 30 14 00 - - - .f 335,322,323 - 4641 D2:4B90 00 - - - .db 0 - 4642 D2:4B91 94 5A - - .db 148,90 - 4643 D2:4B93 A6 5A - - .db 166,90 - 4644 D2:4B95 A6 4C - - .db 166,76 - 4645 D2:4B97 10 14 00 F0 + 4641 D2:4BAC 00 - - - .db 0 + 4642 D2:4BAD 94 5A - - .db 148,90 + 4643 D2:4BAF A6 5A - - .db 166,90 + 4644 D2:4BB1 A6 4C - - .db 166,76 + 4645 D2:4BB3 10 14 00 F0 14 00 D0 14 00 - - - .f 321,335,333 - 4646 D2:4BA0 00 - - - .db 0 - 4647 D2:4BA1 9A 6C - - .db 154,108 - 4648 D2:4BA3 94 6C - - .db 148,108 - 4649 D2:4BA5 94 77 - - .db 148,119 - 4650 D2:4BA7 40 14 00 B0 + 4646 D2:4BBC 00 - - - .db 0 + 4647 D2:4BBD 9A 6C - - .db 154,108 + 4648 D2:4BBF 94 6C - - .db 148,108 + 4649 D2:4BC1 94 77 - - .db 148,119 + 4650 D2:4BC3 40 14 00 B0 12 00 C0 12 00 - - - .f 324,299,300 - 4651 D2:4BB0 00 - - - .db 0 - 4652 D2:4BB1 80 7F - - .db 128,127 - 4653 D2:4BB3 9A 7F - - .db 154,127 - 4654 D2:4BB5 9A 78 - - .db 154,120 - 4655 D2:4BB7 D0 12 00 B0 + 4651 D2:4BCC 00 - - - .db 0 + 4652 D2:4BCD 80 7F - - .db 128,127 + 4653 D2:4BCF 9A 7F - - .db 154,127 + 4654 D2:4BD1 9A 78 - - .db 154,120 + 4655 D2:4BD3 D0 12 00 B0 12 00 90 12 00 - - - .f 301,299,297 - 4656 D2:4BC0 00 - - - .db 0 - 4657 D2:4BC1 F7 8F - - .db 247,143 - 4658 D2:4BC3 F0 8F - - .db 240,143 - 4659 D2:4BC5 F0 88 - - .db 240,136 - 4660 D2:4BC7 10 16 00 00 + 4656 D2:4BDC 00 - - - .db 0 + 4657 D2:4BDD F7 8F - - .db 247,143 + 4658 D2:4BDF F0 8F - - .db 240,143 + 4659 D2:4BE1 F0 88 - - .db 240,136 + 4660 D2:4BE3 10 16 00 00 16 00 A0 15 00 - - - .f 353,352,346 - 4661 D2:4BD0 00 - - - .db 0 - 4662 D2:4BD1 8C 3E - - .db 140,62 - 4663 D2:4BD3 9A 3E - - .db 154,62 - 4664 D2:4BD5 9A 2C - - .db 154,44 - 4665 D2:4BD7 40 14 00 50 + 4661 D2:4BEC 00 - - - .db 0 + 4662 D2:4BED 8C 3E - - .db 140,62 + 4663 D2:4BEF 9A 3E - - .db 154,62 + 4664 D2:4BF1 9A 2C - - .db 154,44 + 4665 D2:4BF3 40 14 00 50 14 00 F0 15 00 - - - .f 324,325,351 - 4666 D2:4BE0 00 - - - .db 0 - 4667 D2:4BE1 80 7F - - .db 128,127 - 4668 D2:4BE3 80 78 - - .db 128,120 - 4669 D2:4BE5 9A 78 - - .db 154,120 - 4670 D2:4BE7 F0 15 00 50 + 4666 D2:4BFC 00 - - - .db 0 + 4667 D2:4BFD 80 7F - - .db 128,127 + 4668 D2:4BFF 80 78 - - .db 128,120 + 4669 D2:4C01 9A 78 - - .db 154,120 + 4670 D2:4C03 F0 15 00 50 14 00 60 14 00 - - - .f 351,325,326 - 4671 D2:4BF0 00 - - - .db 0 - 4672 D2:4BF1 E7 67 - - .db 231,103 - 4673 D2:4BF3 DC 67 - - .db 220,103 - 4674 D2:4BF5 DC 5C - - .db 220,92 - 4675 D2:4BF7 60 14 00 50 + 4671 D2:4C0C 00 - - - .db 0 + 4672 D2:4C0D E7 67 - - .db 231,103 + 4673 D2:4C0F DC 67 - - .db 220,103 + 4674 D2:4C11 DC 5C - - .db 220,92 + 4675 D2:4C13 60 14 00 50 14 00 C0 12 00 - - - .f 326,325,300 - 4676 D2:4C00 00 - - - .db 0 - 4677 D2:4C01 DC 5C - - .db 220,92 - 4678 D2:4C03 DC 67 - - .db 220,103 - 4679 D2:4C05 E7 67 - - .db 231,103 - 4680 D2:4C07 C0 15 00 B0 + 4676 D2:4C1C 00 - - - .db 0 + 4677 D2:4C1D DC 5C - - .db 220,92 + 4678 D2:4C1F DC 67 - - .db 220,103 + 4679 D2:4C21 E7 67 - - .db 231,103 + 4680 D2:4C23 C0 15 00 B0 15 00 70 15 00 - - - .f 348,347,343 - 4681 D2:4C10 00 - - - .db 0 - 4682 D2:4C11 8A 6C - - .db 138,108 - 4683 D2:4C13 80 6C - - .db 128,108 - 4684 D2:4C15 80 77 - - .db 128,119 - 4685 D2:4C17 A0 15 00 A0 + 4681 D2:4C2C 00 - - - .db 0 + 4682 D2:4C2D 8A 6C - - .db 138,108 + 4683 D2:4C2F 80 6C - - .db 128,108 + 4684 D2:4C31 80 77 - - .db 128,119 + 4685 D2:4C33 A0 15 00 A0 14 00 10 15 00 - - - .f 346,330,337 - 4686 D2:4C20 00 - - - .db 0 - 4687 D2:4C21 9A 2C - - .db 154,44 - 4688 D2:4C23 8C 2C - - .db 140,44 - 4689 D2:4C25 8C 3E - - .db 140,62 - 4690 D2:4C27 00 15 00 D0 + 4686 D2:4C3C 00 - - - .db 0 + 4687 D2:4C3D 9A 2C - - .db 154,44 + 4688 D2:4C3F 8C 2C - - .db 140,44 + 4689 D2:4C41 8C 3E - - .db 140,62 + 4690 D2:4C43 00 15 00 D0 15 00 30 15 00 - - - .f 336,349,339 - 4691 D2:4C30 00 - - - .db 0 - 4692 D2:4C31 9A 2C - - .db 154,44 - 4693 D2:4C33 8C 2C - - .db 140,44 - 4694 D2:4C35 8C 3E - - .db 140,62 - 4695 D2:4C37 80 14 00 70 + 4691 D2:4C4C 00 - - - .db 0 + 4692 D2:4C4D 9A 2C - - .db 154,44 + 4693 D2:4C4F 8C 2C - - .db 140,44 + 4694 D2:4C51 8C 3E - - .db 140,62 + 4695 D2:4C53 80 14 00 70 13 00 F0 12 00 - - - .f 328,311,303 - 4696 D2:4C40 00 - - - .db 0 - 4697 D2:4C41 9A 3E - - .db 154,62 - 4698 D2:4C43 8C 3E - - .db 140,62 - 4699 D2:4C45 8C 2C - - .db 140,44 - 4700 D2:4C47 10 13 00 C0 + 4696 D2:4C5C 00 - - - .db 0 + 4697 D2:4C5D 9A 3E - - .db 154,62 + 4698 D2:4C5F 8C 3E - - .db 140,62 + 4699 D2:4C61 8C 2C - - .db 140,44 + 4700 D2:4C63 10 13 00 C0 12 00 D0 12 00 - - - .f 305,300,301 - 4701 D2:4C50 00 - - - .db 0 - 4702 D2:4C51 C7 4C - - .db 199,76 - 4703 D2:4C53 C7 5A - - .db 199,90 - 4704 D2:4C55 B8 5A - - .db 184,90 - 4705 D2:4C57 D0 12 00 00 + 4701 D2:4C6C 00 - - - .db 0 + 4702 D2:4C6D C7 4C - - .db 199,76 + 4703 D2:4C6F C7 5A - - .db 199,90 + 4704 D2:4C71 B8 5A - - .db 184,90 + 4705 D2:4C73 D0 12 00 00 13 00 50 13 00 - - - .f 301,304,309 - 4706 D2:4C60 00 - - - .db 0 - 4707 D2:4C61 B7 4C - - .db 183,76 - 4708 D2:4C63 B7 5A - - .db 183,90 - 4709 D2:4C65 A8 5A - - .db 168,90 - 4710 D2:4C67 00 13 00 D0 + 4706 D2:4C7C 00 - - - .db 0 + 4707 D2:4C7D B7 4C - - .db 183,76 + 4708 D2:4C7F B7 5A - - .db 183,90 + 4709 D2:4C81 A8 5A - - .db 168,90 + 4710 D2:4C83 00 13 00 D0 12 00 90 12 00 - - - .f 304,301,297 - 4711 D2:4C70 00 - - - .db 0 - 4712 D2:4C71 80 77 - - .db 128,119 - 4713 D2:4C73 80 6C - - .db 128,108 - 4714 D2:4C75 8A 6C - - .db 138,108 - 4715 D2:4C77 00 15 00 70 + 4711 D2:4C8C 00 - - - .db 0 + 4712 D2:4C8D 80 77 - - .db 128,119 + 4713 D2:4C8F 80 6C - - .db 128,108 + 4714 D2:4C91 8A 6C - - .db 138,108 + 4715 D2:4C93 00 15 00 70 15 00 B0 15 00 - - - .f 336,343,347 - 4716 D2:4C80 00 - - - .db 0 - 4717 D2:4C81 A8 5A - - .db 168,90 - 4718 D2:4C83 B7 5A - - .db 183,90 - 4719 D2:4C85 B7 4C - - .db 183,76 - 4720 D2:4C87 E0 15 00 F0 + 4716 D2:4C9C 00 - - - .db 0 + 4717 D2:4C9D A8 5A - - .db 168,90 + 4718 D2:4C9F B7 5A - - .db 183,90 + 4719 D2:4CA1 B7 4C - - .db 183,76 + 4720 D2:4CA3 E0 15 00 F0 15 00 B0 15 00 - - - .f 350,351,347 - 4721 D2:4C90 00 - - - .db 0 - 4722 D2:4C91 F0 88 - - .db 240,136 - 4723 D2:4C93 F0 8F - - .db 240,143 - 4724 D2:4C95 F7 8F - - .db 247,143 - 4725 D2:4C97 80 14 00 A0 + 4721 D2:4CAC 00 - - - .db 0 + 4722 D2:4CAD F0 88 - - .db 240,136 + 4723 D2:4CAF F0 8F - - .db 240,143 + 4724 D2:4CB1 F7 8F - - .db 247,143 + 4725 D2:4CB3 80 14 00 A0 15 00 60 15 00 - - - .f 328,346,342 - 4726 D2:4CA0 00 - - - .db 0 - 4727 D2:4CA1 8C 3E - - .db 140,62 - 4728 D2:4CA3 9A 3E - - .db 154,62 - 4729 D2:4CA5 9A 2C - - .db 154,44 - 4730 D2:4CA7 F0 12 00 70 + 4726 D2:4CBC 00 - - - .db 0 + 4727 D2:4CBD 8C 3E - - .db 140,62 + 4728 D2:4CBF 9A 3E - - .db 154,62 + 4729 D2:4CC1 9A 2C - - .db 154,44 + 4730 D2:4CC3 F0 12 00 70 13 00 80 12 00 - - - .f 303,311,296 - 4731 D2:4CB0 00 - - - .db 0 - 4732 D2:4CB1 8C 2C - - .db 140,44 - 4733 D2:4CB3 8C 3E - - .db 140,62 - 4734 D2:4CB5 9A 3E - - .db 154,62 - 4735 D2:4CB7 70 13 00 80 + 4731 D2:4CCC 00 - - - .db 0 + 4732 D2:4CCD 8C 2C - - .db 140,44 + 4733 D2:4CCF 8C 3E - - .db 140,62 + 4734 D2:4CD1 9A 3E - - .db 154,62 + 4735 D2:4CD3 70 13 00 80 14 00 70 14 00 - - - .f 311,328,327 - 4736 D2:4CC0 00 - - - .db 0 - 4737 D2:4CC1 8C 3E - - .db 140,62 - 4738 D2:4CC3 9A 3E - - .db 154,62 - 4739 D2:4CC5 9A 2C - - .db 154,44 - 4740 D2:4CC7 00 16 00 60 + 4736 D2:4CDC 00 - - - .db 0 + 4737 D2:4CDD 8C 3E - - .db 140,62 + 4738 D2:4CDF 9A 3E - - .db 154,62 + 4739 D2:4CE1 9A 2C - - .db 154,44 + 4740 D2:4CE3 00 16 00 60 15 00 A0 15 00 - - - .f 352,342,346 - 4741 D2:4CD0 00 - - - .db 0 - 4742 D2:4CD1 9A 3E - - .db 154,62 - 4743 D2:4CD3 8C 3E - - .db 140,62 - 4744 D2:4CD5 8C 2C - - .db 140,44 - 4745 D2:4CD7 F0 12 00 80 + 4741 D2:4CEC 00 - - - .db 0 + 4742 D2:4CED 9A 3E - - .db 154,62 + 4743 D2:4CEF 8C 3E - - .db 140,62 + 4744 D2:4CF1 8C 2C - - .db 140,44 + 4745 D2:4CF3 F0 12 00 80 12 00 70 12 00 - - - .f 303,296,295 - 4746 D2:4CE0 00 - - - .db 0 - 4747 D2:4CE1 8C 3E - - .db 140,62 - 4748 D2:4CE3 9A 3E - - .db 154,62 - 4749 D2:4CE5 9A 2C - - .db 154,44 - 4750 D2:4CE7 50 13 00 A0 + 4746 D2:4CFC 00 - - - .db 0 + 4747 D2:4CFD 8C 3E - - .db 140,62 + 4748 D2:4CFF 9A 3E - - .db 154,62 + 4749 D2:4D01 9A 2C - - .db 154,44 + 4750 D2:4D03 50 13 00 A0 12 00 D0 12 00 - - - .f 309,298,301 - 4751 D2:4CF0 00 - - - .db 0 - 4752 D2:4CF1 A8 5A - - .db 168,90 - 4753 D2:4CF3 A8 4C - - .db 168,76 - 4754 D2:4CF5 B7 4C - - .db 183,76 - 4755 D2:4CF7 30 14 00 C0 + 4751 D2:4D0C 00 - - - .db 0 + 4752 D2:4D0D A8 5A - - .db 168,90 + 4753 D2:4D0F A8 4C - - .db 168,76 + 4754 D2:4D11 B7 4C - - .db 183,76 + 4755 D2:4D13 30 14 00 C0 15 00 90 15 00 - - - .f 323,348,345 - 4756 D2:4D00 00 - - - .db 0 - 4757 D2:4D01 B8 78 - - .db 184,120 - 4758 D2:4D03 D3 78 - - .db 211,120 - 4759 D2:4D05 D3 7F - - .db 211,127 - 4760 D2:4D07 90 15 00 D0 + 4756 D2:4D1C 00 - - - .db 0 + 4757 D2:4D1D B8 78 - - .db 184,120 + 4758 D2:4D1F D3 78 - - .db 211,120 + 4759 D2:4D21 D3 7F - - .db 211,127 + 4760 D2:4D23 90 15 00 D0 14 00 F0 14 00 - - - .f 345,333,335 - 4761 D2:4D10 00 - - - .db 0 - 4762 D2:4D11 AE 90 - - .db 174,144 - 4763 D2:4D13 A8 90 - - .db 168,144 - 4764 D2:4D15 A8 97 - - .db 168,151 - 4765 D2:4D17 30 14 00 40 + 4761 D2:4D2C 00 - - - .db 0 + 4762 D2:4D2D AE 90 - - .db 174,144 + 4763 D2:4D2F A8 90 - - .db 168,144 + 4764 D2:4D31 A8 97 - - .db 168,151 + 4765 D2:4D33 30 14 00 40 14 00 E0 15 00 - - - .f 323,324,350 - 4766 D2:4D20 00 - - - .db 0 - 4767 D2:4D21 BC 73 - - .db 188,115 - 4768 D2:4D23 BC 6C - - .db 188,108 - 4769 D2:4D25 D7 6C - - .db 215,108 - 4770 D2:4D27 C0 15 00 E0 + 4766 D2:4D3C 00 - - - .db 0 + 4767 D2:4D3D BC 73 - - .db 188,115 + 4768 D2:4D3F BC 6C - - .db 188,108 + 4769 D2:4D41 D7 6C - - .db 215,108 + 4770 D2:4D43 C0 15 00 E0 15 00 B0 15 00 - - - .f 348,350,347 - 4771 D2:4D30 00 - - - .db 0 - 4772 D2:4D31 F0 88 - - .db 240,136 - 4773 D2:4D33 F0 8F - - .db 240,143 - 4774 D2:4D35 F7 8F - - .db 247,143 - 4775 D2:4D37 30 14 00 90 + 4771 D2:4D4C 00 - - - .db 0 + 4772 D2:4D4D F0 88 - - .db 240,136 + 4773 D2:4D4F F0 8F - - .db 240,143 + 4774 D2:4D51 F7 8F - - .db 247,143 + 4775 D2:4D53 30 14 00 90 12 00 B0 12 00 - - - .f 323,297,299 - 4776 D2:4D40 00 - - - .db 0 - 4777 D2:4D41 BC 73 - - .db 188,115 - 4778 D2:4D43 D7 73 - - .db 215,115 - 4779 D2:4D45 D7 6C - - .db 215,108 - 4780 D2:4D47 D0 12 00 C0 + 4776 D2:4D5C 00 - - - .db 0 + 4777 D2:4D5D BC 73 - - .db 188,115 + 4778 D2:4D5F D7 73 - - .db 215,115 + 4779 D2:4D61 D7 6C - - .db 215,108 + 4780 D2:4D63 D0 12 00 C0 12 00 B0 12 00 - - - .f 301,300,299 - 4781 D2:4D50 00 - - - .db 0 - 4782 D2:4D51 F7 8F - - .db 247,143 - 4783 D2:4D53 F0 8F - - .db 240,143 - 4784 D2:4D55 F0 88 - - .db 240,136 - 4785 D2:4D57 E0 12 00 30 + 4781 D2:4D6C 00 - - - .db 0 + 4782 D2:4D6D F7 8F - - .db 247,143 + 4783 D2:4D6F F0 8F - - .db 240,143 + 4784 D2:4D71 F0 88 - - .db 240,136 + 4785 D2:4D73 E0 12 00 30 14 00 90 13 00 - - - .f 302,323,313 - 4786 D2:4D60 00 - - - .db 0 - 4787 D2:4D61 AE 90 - - .db 174,144 - 4788 D2:4D63 A8 90 - - .db 168,144 - 4789 D2:4D65 A8 97 - - .db 168,151 - 4790 D2:4D67 E0 12 00 B0 + 4786 D2:4D7C 00 - - - .db 0 + 4787 D2:4D7D AE 90 - - .db 174,144 + 4788 D2:4D7F A8 90 - - .db 168,144 + 4789 D2:4D81 A8 97 - - .db 168,151 + 4790 D2:4D83 E0 12 00 B0 13 00 00 13 00 - - - .f 302,315,304 - 4791 D2:4D70 00 - - - .db 0 - 4792 D2:4D71 8A 6C - - .db 138,108 - 4793 D2:4D73 8A 77 - - .db 138,119 - 4794 D2:4D75 80 77 - - .db 128,119 - 4795 D2:4D77 60 15 00 70 + 4791 D2:4D8C 00 - - - .db 0 + 4792 D2:4D8D 8A 6C - - .db 138,108 + 4793 D2:4D8F 8A 77 - - .db 138,119 + 4794 D2:4D91 80 77 - - .db 128,119 + 4795 D2:4D93 60 15 00 70 14 00 80 14 00 - - - .f 342,327,328 - 4796 D2:4D80 00 - - - .db 0 - 4797 D2:4D81 8C 3E - - .db 140,62 - 4798 D2:4D83 9A 3E - - .db 154,62 - 4799 D2:4D85 9A 2C - - .db 154,44 - 4800 D2:4D87 80 15 00 60 + 4796 D2:4D9C 00 - - - .db 0 + 4797 D2:4D9D 8C 3E - - .db 140,62 + 4798 D2:4D9F 9A 3E - - .db 154,62 + 4799 D2:4DA1 9A 2C - - .db 154,44 + 4800 D2:4DA3 80 15 00 60 14 00 70 14 00 - - - .f 344,326,327 - 4801 D2:4D90 00 - - - .db 0 - 4802 D2:4D91 9A 2C - - .db 154,44 - 4803 D2:4D93 8C 2C - - .db 140,44 - 4804 D2:4D95 8C 3E - - .db 140,62 - 4805 D2:4D97 80 12 00 70 + 4801 D2:4DAC 00 - - - .db 0 + 4802 D2:4DAD 9A 2C - - .db 154,44 + 4803 D2:4DAF 8C 2C - - .db 140,44 + 4804 D2:4DB1 8C 3E - - .db 140,62 + 4805 D2:4DB3 80 12 00 70 13 00 10 13 00 - - - .f 296,311,305 - 4806 D2:4DA0 00 - - - .db 0 - 4807 D2:4DA1 9A 2C - - .db 154,44 - 4808 D2:4DA3 8C 2C - - .db 140,44 - 4809 D2:4DA5 8C 3E - - .db 140,62 - 4810 D2:4DA7 80 15 00 70 + 4806 D2:4DBC 00 - - - .db 0 + 4807 D2:4DBD 9A 2C - - .db 154,44 + 4808 D2:4DBF 8C 2C - - .db 140,44 + 4809 D2:4DC1 8C 3E - - .db 140,62 + 4810 D2:4DC3 80 15 00 70 14 00 60 15 00 - - - .f 344,327,342 - 4811 D2:4DB0 00 - - - .db 0 - 4812 D2:4DB1 9A 2C - - .db 154,44 - 4813 D2:4DB3 8C 2C - - .db 140,44 - 4814 D2:4DB5 8C 3E - - .db 140,62 - 4815 D2:4DB7 20 16 00 B0 + 4811 D2:4DCC 00 - - - .db 0 + 4812 D2:4DCD 9A 2C - - .db 154,44 + 4813 D2:4DCF 8C 2C - - .db 140,44 + 4814 D2:4DD1 8C 3E - - .db 140,62 + 4815 D2:4DD3 20 16 00 B0 15 00 80 15 00 - - - .f 354,347,344 - 4816 D2:4DC0 00 - - - .db 0 - 4817 D2:4DC1 9A 2C - - .db 154,44 - 4818 D2:4DC3 8C 2C - - .db 140,44 - 4819 D2:4DC5 8C 3E - - .db 140,62 - 4820 D2:4DC7 A0 13 00 50 + 4816 D2:4DDC 00 - - - .db 0 + 4817 D2:4DDD 9A 2C - - .db 154,44 + 4818 D2:4DDF 8C 2C - - .db 140,44 + 4819 D2:4DE1 8C 3E - - .db 140,62 + 4820 D2:4DE3 A0 13 00 50 13 00 00 13 00 - - - .f 314,309,304 - 4821 D2:4DD0 00 - - - .db 0 - 4822 D2:4DD1 88 9F - - .db 136,159 - 4823 D2:4DD3 8A 9F - - .db 138,159 - 4824 D2:4DD5 8A 9C - - .db 138,156 - 4825 D2:4DD7 70 15 00 00 + 4821 D2:4DEC 00 - - - .db 0 + 4822 D2:4DED 88 9F - - .db 136,159 + 4823 D2:4DEF 8A 9F - - .db 138,159 + 4824 D2:4DF1 8A 9C - - .db 138,156 + 4825 D2:4DF3 70 15 00 00 15 00 E0 14 00 - - - .f 343,336,334 - 4826 D2:4DE0 00 - - - .db 0 - 4827 D2:4DE1 88 9F - - .db 136,159 - 4828 D2:4DE3 8A 9F - - .db 138,159 - 4829 D2:4DE5 8A 9C - - .db 138,156 - 4830 D2:4DE7 00 15 00 50 + 4826 D2:4DFC 00 - - - .db 0 + 4827 D2:4DFD 88 9F - - .db 136,159 + 4828 D2:4DFF 8A 9F - - .db 138,159 + 4829 D2:4E01 8A 9C - - .db 138,156 + 4830 D2:4E03 00 15 00 50 13 00 A0 13 00 - - - .f 336,309,314 - 4831 D2:4DF0 00 - - - .db 0 - 4832 D2:4DF1 D7 88 - - .db 215,136 - 4833 D2:4DF3 D0 88 - - .db 208,136 - 4834 D2:4DF5 D0 8F - - .db 208,143 - 4835 D2:4DF7 70 15 00 E0 + 4831 D2:4E0C 00 - - - .db 0 + 4832 D2:4E0D D7 88 - - .db 215,136 + 4833 D2:4E0F D0 88 - - .db 208,136 + 4834 D2:4E11 D0 8F - - .db 208,143 + 4835 D2:4E13 70 15 00 E0 14 00 D0 14 00 - - - .f 343,334,333 - 4836 D2:4E00 00 - - - .db 0 - 4837 D2:4E01 88 9F - - .db 136,159 - 4838 D2:4E03 8A 9F - - .db 138,159 - 4839 D2:4E05 8A 9C - - .db 138,156 - 4840 D2:4E07 A0 13 00 E0 + 4836 D2:4E1C 00 - - - .db 0 + 4837 D2:4E1D 88 9F - - .db 136,159 + 4838 D2:4E1F 8A 9F - - .db 138,159 + 4839 D2:4E21 8A 9C - - .db 138,156 + 4840 D2:4E23 A0 13 00 E0 14 00 00 15 00 - - - .f 314,334,336 - 4841 D2:4E10 00 - - - .db 0 - 4842 D2:4E11 D0 8F - - .db 208,143 - 4843 D2:4E13 D7 8F - - .db 215,143 - 4844 D2:4E15 D7 88 - - .db 215,136 - 4845 D2:4E17 50 13 00 00 + 4841 D2:4E2C 00 - - - .db 0 + 4842 D2:4E2D D0 8F - - .db 208,143 + 4843 D2:4E2F D7 8F - - .db 215,143 + 4844 D2:4E31 D7 88 - - .db 215,136 + 4845 D2:4E33 50 13 00 00 15 00 30 13 00 - - - .f 309,336,307 - 4846 D2:4E20 00 - - - .db 0 - 4847 D2:4E21 9A 2C - - .db 154,44 - 4848 D2:4E23 8C 2C - - .db 140,44 - 4849 D2:4E25 8C 3E - - .db 140,62 - 4850 D2:4E27 80 13 00 10 + 4846 D2:4E3C 00 - - - .db 0 + 4847 D2:4E3D 9A 2C - - .db 154,44 + 4848 D2:4E3F 8C 2C - - .db 140,44 + 4849 D2:4E41 8C 3E - - .db 140,62 + 4850 D2:4E43 80 13 00 10 15 00 A0 14 00 - - - .f 312,337,330 - 4851 D2:4E30 00 - - - .db 0 - 4852 D2:4E31 9A 2C - - .db 154,44 - 4853 D2:4E33 8C 2C - - .db 140,44 - 4854 D2:4E35 8C 3E - - .db 140,62 - 4855 D2:4E37 A0 15 00 80 + 4851 D2:4E4C 00 - - - .db 0 + 4852 D2:4E4D 9A 2C - - .db 154,44 + 4853 D2:4E4F 8C 2C - - .db 140,44 + 4854 D2:4E51 8C 3E - - .db 140,62 + 4855 D2:4E53 A0 15 00 80 14 00 A0 14 00 - - - .f 346,328,330 - 4856 D2:4E40 00 - - - .db 0 - 4857 D2:4E41 8C 3E - - .db 140,62 - 4858 D2:4E43 9A 3E - - .db 154,62 - 4859 D2:4E45 9A 2C - - .db 154,44 - 4860 D2:4E47 F0 12 00 80 + 4856 D2:4E5C 00 - - - .db 0 + 4857 D2:4E5D 8C 3E - - .db 140,62 + 4858 D2:4E5F 9A 3E - - .db 154,62 + 4859 D2:4E61 9A 2C - - .db 154,44 + 4860 D2:4E63 F0 12 00 80 13 00 F0 13 00 - - - .f 303,312,319 - 4861 D2:4E50 00 - - - .db 0 - 4862 D2:4E51 8C 2C - - .db 140,44 - 4863 D2:4E53 9A 2C - - .db 154,44 - 4864 D2:4E55 9A 3E - - .db 154,62 - 4865 D2:4E57 A0 14 00 80 + 4861 D2:4E6C 00 - - - .db 0 + 4862 D2:4E6D 8C 2C - - .db 140,44 + 4863 D2:4E6F 9A 2C - - .db 154,44 + 4864 D2:4E71 9A 3E - - .db 154,62 + 4865 D2:4E73 A0 14 00 80 14 00 F0 13 00 - - - .f 330,328,319 - 4866 D2:4E60 00 - - - .db 0 - 4867 D2:4E61 9A 2C - - .db 154,44 - 4868 D2:4E63 8C 2C - - .db 140,44 - 4869 D2:4E65 8C 3E - - .db 140,62 - 4870 D2:4E67 C0 12 00 50 + 4866 D2:4E7C 00 - - - .db 0 + 4867 D2:4E7D 9A 2C - - .db 154,44 + 4868 D2:4E7F 8C 2C - - .db 140,44 + 4869 D2:4E81 8C 3E - - .db 140,62 + 4870 D2:4E83 C0 12 00 50 14 00 40 14 00 - - - .f 300,325,324 - 4871 D2:4E70 00 - - - .db 0 - 4872 D2:4E71 9A 78 - - .db 154,120 - 4873 D2:4E73 80 78 - - .db 128,120 - 4874 D2:4E75 80 7F - - .db 128,127 - 4875 D2:4E77 F0 15 00 E0 + 4871 D2:4E8C 00 - - - .db 0 + 4872 D2:4E8D 9A 78 - - .db 154,120 + 4873 D2:4E8F 80 78 - - .db 128,120 + 4874 D2:4E91 80 7F - - .db 128,127 + 4875 D2:4E93 F0 15 00 E0 15 00 40 14 00 - - - .f 351,350,324 - 4876 D2:4E80 00 - - - .db 0 - 4877 D2:4E81 9A 78 - - .db 154,120 - 4878 D2:4E83 9A 7F - - .db 154,127 - 4879 D2:4E85 80 7F - - .db 128,127 - 4880 D2:4E87 00 15 00 30 + 4876 D2:4E9C 00 - - - .db 0 + 4877 D2:4E9D 9A 78 - - .db 154,120 + 4878 D2:4E9F 9A 7F - - .db 154,127 + 4879 D2:4EA1 80 7F - - .db 128,127 + 4880 D2:4EA3 00 15 00 30 15 00 30 13 00 - - - .f 336,339,307 - 4881 D2:4E90 00 - - - .db 0 - 4882 D2:4E91 9A 2C - - .db 154,44 - 4883 D2:4E93 8C 2C - - .db 140,44 - 4884 D2:4E95 8C 3E - - .db 140,62 - 4885 D2:4E97 A0 12 00 30 + 4881 D2:4EAC 00 - - - .db 0 + 4882 D2:4EAD 9A 2C - - .db 154,44 + 4883 D2:4EAF 8C 2C - - .db 140,44 + 4884 D2:4EB1 8C 3E - - .db 140,62 + 4885 D2:4EB3 A0 12 00 30 13 00 70 12 00 - - - .f 298,307,295 - 4886 D2:4EA0 00 - - - .db 0 - 4887 D2:4EA1 8C 2C - - .db 140,44 - 4888 D2:4EA3 8C 3E - - .db 140,62 - 4889 D2:4EA5 9A 3E - - .db 154,62 - 4890 D2:4EA7 10 15 00 40 + 4886 D2:4EBC 00 - - - .db 0 + 4887 D2:4EBD 8C 2C - - .db 140,44 + 4888 D2:4EBF 8C 3E - - .db 140,62 + 4889 D2:4EC1 9A 3E - - .db 154,62 + 4890 D2:4EC3 10 15 00 40 15 00 A0 15 00 - - - .f 337,340,346 - 4891 D2:4EB0 00 - - - .db 0 - 4892 D2:4EB1 8C 3E - - .db 140,62 - 4893 D2:4EB3 8C 2C - - .db 140,44 - 4894 D2:4EB5 9A 2C - - .db 154,44 - 4895 D2:4EB7 80 13 00 40 + 4891 D2:4ECC 00 - - - .db 0 + 4892 D2:4ECD 8C 3E - - .db 140,62 + 4893 D2:4ECF 8C 2C - - .db 140,44 + 4894 D2:4ED1 9A 2C - - .db 154,44 + 4895 D2:4ED3 80 13 00 40 13 00 40 15 00 - - - .f 312,308,340 - 4896 D2:4EC0 00 - - - .db 0 - 4897 D2:4EC1 9A 2C - - .db 154,44 - 4898 D2:4EC3 9A 3E - - .db 154,62 - 4899 D2:4EC5 8C 3E - - .db 140,62 - 4900 D2:4EC7 40 15 00 10 + 4896 D2:4EDC 00 - - - .db 0 + 4897 D2:4EDD 9A 2C - - .db 154,44 + 4898 D2:4EDF 9A 3E - - .db 154,62 + 4899 D2:4EE1 8C 3E - - .db 140,62 + 4900 D2:4EE3 40 15 00 10 15 00 80 13 00 - - - .f 340,337,312 - 4901 D2:4ED0 00 - - - .db 0 - 4902 D2:4ED1 8C 3E - - .db 140,62 - 4903 D2:4ED3 8C 2C - - .db 140,44 - 4904 D2:4ED5 9A 2C - - .db 154,44 - 4905 D2:4ED7 A0 15 00 40 + 4901 D2:4EEC 00 - - - .db 0 + 4902 D2:4EED 8C 3E - - .db 140,62 + 4903 D2:4EEF 8C 2C - - .db 140,44 + 4904 D2:4EF1 9A 2C - - .db 154,44 + 4905 D2:4EF3 A0 15 00 40 15 00 10 16 00 - - - .f 346,340,353 - 4906 D2:4EE0 00 - - - .db 0 - 4907 D2:4EE1 9A 2C - - .db 154,44 - 4908 D2:4EE3 9A 3E - - .db 154,62 - 4909 D2:4EE5 8C 3E - - .db 140,62 - 4910 D2:4EE7 30 15 00 10 + 4906 D2:4EFC 00 - - - .db 0 + 4907 D2:4EFD 9A 2C - - .db 154,44 + 4908 D2:4EFF 9A 3E - - .db 154,62 + 4909 D2:4F01 8C 3E - - .db 140,62 + 4910 D2:4F03 30 15 00 10 16 00 40 15 00 - - - .f 339,353,340 - 4911 D2:4EF0 00 - - - .db 0 - 4912 D2:4EF1 9A 2C - - .db 154,44 - 4913 D2:4EF3 9A 3E - - .db 154,62 - 4914 D2:4EF5 8C 3E - - .db 140,62 - 4915 D2:4EF7 70 12 00 30 + 4911 D2:4F0C 00 - - - .db 0 + 4912 D2:4F0D 9A 2C - - .db 154,44 + 4913 D2:4F0F 9A 3E - - .db 154,62 + 4914 D2:4F11 8C 3E - - .db 140,62 + 4915 D2:4F13 70 12 00 30 13 00 40 13 00 - - - .f 295,307,308 - 4916 D2:4F00 00 - - - .db 0 - 4917 D2:4F01 8C 2C - - .db 140,44 - 4918 D2:4F03 8C 3E - - .db 140,62 - 4919 D2:4F05 9A 3E - - .db 154,62 - 4920 D2:4F07 70 12 00 40 + 4916 D2:4F1C 00 - - - .db 0 + 4917 D2:4F1D 8C 2C - - .db 140,44 + 4918 D2:4F1F 8C 3E - - .db 140,62 + 4919 D2:4F21 9A 3E - - .db 154,62 + 4920 D2:4F23 70 12 00 40 13 00 F0 12 00 - - - .f 295,308,303 - 4921 D2:4F10 00 - - - .db 0 - 4922 D2:4F11 8C 2C - - .db 140,44 - 4923 D2:4F13 9A 2C - - .db 154,44 - 4924 D2:4F15 9A 3E - - .db 154,62 - 4925 D2:4F17 20 13 00 40 + 4921 D2:4F2C 00 - - - .db 0 + 4922 D2:4F2D 8C 2C - - .db 140,44 + 4923 D2:4F2F 9A 2C - - .db 154,44 + 4924 D2:4F31 9A 3E - - .db 154,62 + 4925 D2:4F33 20 13 00 40 13 00 30 13 00 - - - .f 306,308,307 - 4926 D2:4F20 00 - - - .db 0 - 4927 D2:4F21 A0 97 - - .db 160,151 - 4928 D2:4F23 A0 90 - - .db 160,144 - 4929 D2:4F25 A6 90 - - .db 166,144 - 4930 D2:4F27 20 13 00 E0 + 4926 D2:4F3C 00 - - - .db 0 + 4927 D2:4F3D A0 97 - - .db 160,151 + 4928 D2:4F3F A0 90 - - .db 160,144 + 4929 D2:4F41 A6 90 - - .db 166,144 + 4930 D2:4F43 20 13 00 E0 13 00 40 13 00 - - - .f 306,318,308 - 4931 D2:4F30 00 - - - .db 0 - 4932 D2:4F31 A0 90 - - .db 160,144 - 4933 D2:4F33 A6 90 - - .db 166,144 - 4934 D2:4F35 A6 97 - - .db 166,151 - 4935 D2:4F37 60 13 00 30 + 4931 D2:4F4C 00 - - - .db 0 + 4932 D2:4F4D A0 90 - - .db 160,144 + 4933 D2:4F4F A6 90 - - .db 166,144 + 4934 D2:4F51 A6 97 - - .db 166,151 + 4935 D2:4F53 60 13 00 30 13 00 30 15 00 - - - .f 310,307,339 - 4936 D2:4F40 00 - - - .db 0 - 4937 D2:4F41 A0 97 - - .db 160,151 - 4938 D2:4F43 A0 90 - - .db 160,144 - 4939 D2:4F45 A6 90 - - .db 166,144 - 4940 D2:4F47 30 15 00 20 + 4936 D2:4F5C 00 - - - .db 0 + 4937 D2:4F5D A0 97 - - .db 160,151 + 4938 D2:4F5F A0 90 - - .db 160,144 + 4939 D2:4F61 A6 90 - - .db 166,144 + 4940 D2:4F63 30 15 00 20 15 00 60 13 00 - - - .f 339,338,310 - 4941 D2:4F50 00 - - - .db 0 - 4942 D2:4F51 A6 90 - - .db 166,144 - 4943 D2:4F53 A6 97 - - .db 166,151 - 4944 D2:4F55 A0 97 - - .db 160,151 - 4945 D2:4F57 50 15 00 30 + 4941 D2:4F6C 00 - - - .db 0 + 4942 D2:4F6D A6 90 - - .db 166,144 + 4943 D2:4F6F A6 97 - - .db 166,151 + 4944 D2:4F71 A0 97 - - .db 160,151 + 4945 D2:4F73 50 15 00 30 15 00 40 15 00 - - - .f 341,339,340 - 4946 D2:4F60 00 - - - .db 0 - 4947 D2:4F61 A0 97 - - .db 160,151 - 4948 D2:4F63 A0 90 - - .db 160,144 - 4949 D2:4F65 A6 90 - - .db 166,144 - 4950 D2:4F67 50 15 00 20 + 4946 D2:4F7C 00 - - - .db 0 + 4947 D2:4F7D A0 97 - - .db 160,151 + 4948 D2:4F7F A0 90 - - .db 160,144 + 4949 D2:4F81 A6 90 - - .db 166,144 + 4950 D2:4F83 50 15 00 20 15 00 30 15 00 - - - .f 341,338,339 - 4951 D2:4F70 00 - - - .db 0 - 4952 D2:4F71 A6 97 - - .db 166,151 - 4953 D2:4F73 A0 97 - - .db 160,151 - 4954 D2:4F75 A0 90 - - .db 160,144 - 4955 D2:4F77 90 14 00 40 + 4951 D2:4F8C 00 - - - .db 0 + 4952 D2:4F8D A6 97 - - .db 166,151 + 4953 D2:4F8F A0 97 - - .db 160,151 + 4954 D2:4F91 A0 90 - - .db 160,144 + 4955 D2:4F93 90 14 00 40 15 00 40 13 00 - - - .f 329,340,308 - 4956 D2:4F80 00 - - - .db 0 - 4957 D2:4F81 A0 97 - - .db 160,151 - 4958 D2:4F83 A0 90 - - .db 160,144 - 4959 D2:4F85 A6 90 - - .db 166,144 - 4960 D2:4F87 40 13 00 E0 + 4956 D2:4F9C 00 - - - .db 0 + 4957 D2:4F9D A0 97 - - .db 160,151 + 4958 D2:4F9F A0 90 - - .db 160,144 + 4959 D2:4FA1 A6 90 - - .db 166,144 + 4960 D2:4FA3 40 13 00 E0 13 00 90 14 00 - - - .f 308,318,329 - 4961 D2:4F90 00 - - - .db 0 - 4962 D2:4F91 A6 90 - - .db 166,144 - 4963 D2:4F93 A6 97 - - .db 166,151 - 4964 D2:4F95 A0 97 - - .db 160,151 - 4965 D2:4F97 40 15 00 90 + 4961 D2:4FAC 00 - - - .db 0 + 4962 D2:4FAD A6 90 - - .db 166,144 + 4963 D2:4FAF A6 97 - - .db 166,151 + 4964 D2:4FB1 A0 97 - - .db 160,151 + 4965 D2:4FB3 40 15 00 90 14 00 50 15 00 - - - .f 340,329,341 - 4966 D2:4FA0 00 - - - .db 0 - 4967 D2:4FA1 A6 90 - - .db 166,144 - 4968 D2:4FA3 A6 97 - - .db 166,151 - 4969 D2:4FA5 A0 97 - - .db 160,151 - 4970 D2:4FA7 30 13 00 60 + 4966 D2:4FBC 00 - - - .db 0 + 4967 D2:4FBD A6 90 - - .db 166,144 + 4968 D2:4FBF A6 97 - - .db 166,151 + 4969 D2:4FC1 A0 97 - - .db 160,151 + 4970 D2:4FC3 30 13 00 60 13 00 20 13 00 - - - .f 307,310,306 - 4971 D2:4FB0 00 - - - .db 0 - 4972 D2:4FB1 A6 90 - - .db 166,144 - 4973 D2:4FB3 A6 97 - - .db 166,151 - 4974 D2:4FB5 A0 97 - - .db 160,151 - 4975 D2:4FB7 90 14 00 C0 + 4971 D2:4FCC 00 - - - .db 0 + 4972 D2:4FCD A6 90 - - .db 166,144 + 4973 D2:4FCF A6 97 - - .db 166,151 + 4974 D2:4FD1 A0 97 - - .db 160,151 + 4975 D2:4FD3 90 14 00 C0 14 00 50 15 00 - - - .f 329,332,341 - 4976 D2:4FC0 00 - - - .db 0 - 4977 D2:4FC1 9A 2C - - .db 154,44 - 4978 D2:4FC3 8C 2C - - .db 140,44 - 4979 D2:4FC5 8C 3E - - .db 140,62 - 4980 D2:4FC7 B0 14 00 20 + 4976 D2:4FDC 00 - - - .db 0 + 4977 D2:4FDD 9A 2C - - .db 154,44 + 4978 D2:4FDF 8C 2C - - .db 140,44 + 4979 D2:4FE1 8C 3E - - .db 140,62 + 4980 D2:4FE3 B0 14 00 20 15 00 50 15 00 - - - .f 331,338,341 - 4981 D2:4FD0 00 - - - .db 0 - 4982 D2:4FD1 9A 2C - - .db 154,44 - 4983 D2:4FD3 8C 2C - - .db 140,44 - 4984 D2:4FD5 8C 3E - - .db 140,62 - 4985 D2:4FD7 C0 14 00 B0 + 4981 D2:4FEC 00 - - - .db 0 + 4982 D2:4FED 9A 2C - - .db 154,44 + 4983 D2:4FEF 8C 2C - - .db 140,44 + 4984 D2:4FF1 8C 3E - - .db 140,62 + 4985 D2:4FF3 C0 14 00 B0 14 00 50 15 00 - - - .f 332,331,341 - 4986 D2:4FE0 00 - - - .db 0 - 4987 D2:4FE1 9A 2C - - .db 154,44 - 4988 D2:4FE3 8C 2C - - .db 140,44 - 4989 D2:4FE5 8C 3E - - .db 140,62 - 4990 D2:4FE7 E0 13 00 D0 + 4986 D2:4FFC 00 - - - .db 0 + 4987 D2:4FFD 9A 2C - - .db 154,44 + 4988 D2:4FFF 8C 2C - - .db 140,44 + 4989 D2:5001 8C 3E - - .db 140,62 + 4990 D2:5003 E0 13 00 D0 13 00 C0 14 00 - - - .f 318,317,332 - 4991 D2:4FF0 00 - - - .db 0 - 4992 D2:4FF1 9A 2C - - .db 154,44 - 4993 D2:4FF3 8C 2C - - .db 140,44 - 4994 D2:4FF5 8C 3E - - .db 140,62 - 4995 D2:4FF7 90 14 00 E0 + 4991 D2:500C 00 - - - .db 0 + 4992 D2:500D 9A 2C - - .db 154,44 + 4993 D2:500F 8C 2C - - .db 140,44 + 4994 D2:5011 8C 3E - - .db 140,62 + 4995 D2:5013 90 14 00 E0 13 00 C0 14 00 - - - .f 329,318,332 - 4996 D2:5000 00 - - - .db 0 - 4997 D2:5001 9A 2C - - .db 154,44 - 4998 D2:5003 8C 2C - - .db 140,44 - 4999 D2:5005 8C 3E - - .db 140,62 - 5000 D2:5007 C0 13 00 60 + 4996 D2:501C 00 - - - .db 0 + 4997 D2:501D 9A 2C - - .db 154,44 + 4998 D2:501F 8C 2C - - .db 140,44 + 4999 D2:5021 8C 3E - - .db 140,62 + 5000 D2:5023 C0 13 00 60 13 00 20 15 00 - - - .f 316,310,338 - 5001 D2:5010 00 - - - .db 0 - 5002 D2:5011 9A 2C - - .db 154,44 - 5003 D2:5013 8C 2C - - .db 140,44 - 5004 D2:5015 8C 3E - - .db 140,62 - 5005 D2:5017 B0 14 00 C0 + 5001 D2:502C 00 - - - .db 0 + 5002 D2:502D 9A 2C - - .db 154,44 + 5003 D2:502F 8C 2C - - .db 140,44 + 5004 D2:5031 8C 3E - - .db 140,62 + 5005 D2:5033 B0 14 00 C0 13 00 20 15 00 - - - .f 331,316,338 - 5006 D2:5020 00 - - - .db 0 - 5007 D2:5021 9A 2C - - .db 154,44 - 5008 D2:5023 8C 2C - - .db 140,44 - 5009 D2:5025 8C 3E - - .db 140,62 - 5010 D2:5027 D0 13 00 C0 + 5006 D2:503C 00 - - - .db 0 + 5007 D2:503D 9A 2C - - .db 154,44 + 5008 D2:503F 8C 2C - - .db 140,44 + 5009 D2:5041 8C 3E - - .db 140,62 + 5010 D2:5043 D0 13 00 C0 13 00 B0 14 00 - - - .f 317,316,331 - 5011 D2:5030 00 - - - .db 0 - 5012 D2:5031 9A 2C - - .db 154,44 - 5013 D2:5033 8C 2C - - .db 140,44 - 5014 D2:5035 8C 3E - - .db 140,62 - 5015 D2:5037 C0 14 00 D0 + 5011 D2:504C 00 - - - .db 0 + 5012 D2:504D 9A 2C - - .db 154,44 + 5013 D2:504F 8C 2C - - .db 140,44 + 5014 D2:5051 8C 3E - - .db 140,62 + 5015 D2:5053 C0 14 00 D0 13 00 B0 14 00 - - - .f 332,317,331 - 5016 D2:5040 00 - - - .db 0 - 5017 D2:5041 9A 2C - - .db 154,44 - 5018 D2:5043 8C 2C - - .db 140,44 - 5019 D2:5045 8C 3E - - .db 140,62 - 5020 D2:5047 60 13 00 C0 + 5016 D2:505C 00 - - - .db 0 + 5017 D2:505D 9A 2C - - .db 154,44 + 5018 D2:505F 8C 2C - - .db 140,44 + 5019 D2:5061 8C 3E - - .db 140,62 + 5020 D2:5063 60 13 00 C0 13 00 20 13 00 - - - .f 310,316,306 - 5021 D2:5050 00 - - - .db 0 - 5022 D2:5051 9A 2C - - .db 154,44 - 5023 D2:5053 8C 2C - - .db 140,44 - 5024 D2:5055 8C 3E - - .db 140,62 - 5025 D2:5057 D0 13 00 E0 + 5021 D2:506C 00 - - - .db 0 + 5022 D2:506D 9A 2C - - .db 154,44 + 5023 D2:506F 8C 2C - - .db 140,44 + 5024 D2:5071 8C 3E - - .db 140,62 + 5025 D2:5073 D0 13 00 E0 13 00 20 13 00 - - - .f 317,318,306 - 5026 D2:5060 00 - - - .db 0 - 5027 D2:5061 9A 2C - - .db 154,44 - 5028 D2:5063 8C 2C - - .db 140,44 - 5029 D2:5065 8C 3E - - .db 140,62 - 5030 D2:5067 C0 13 00 D0 + 5026 D2:507C 00 - - - .db 0 + 5027 D2:507D 9A 2C - - .db 154,44 + 5028 D2:507F 8C 2C - - .db 140,44 + 5029 D2:5081 8C 3E - - .db 140,62 + 5030 D2:5083 C0 13 00 D0 13 00 20 13 00 - - - .f 316,317,306 - 5031 D2:5070 00 - - - .db 0 - 5032 D2:5071 9A 2C - - .db 154,44 - 5033 D2:5073 8C 2C - - .db 140,44 - 5034 D2:5075 8C 3E - - .db 140,62 - 5035 D2:5077 B0 15 00 D0 + 5031 D2:508C 00 - - - .db 0 + 5032 D2:508D 9A 2C - - .db 154,44 + 5033 D2:508F 8C 2C - - .db 140,44 + 5034 D2:5091 8C 3E - - .db 140,62 + 5035 D2:5093 B0 15 00 D0 15 00 00 15 00 - - - .f 347,349,336 - 5036 D2:5080 00 - - - .db 0 - 5037 D2:5081 B7 4C - - .db 183,76 - 5038 D2:5083 A8 4C - - .db 168,76 - 5039 D2:5085 A8 5A - - .db 168,90 - 5040 D2:5087 50 13 00 30 + 5036 D2:509C 00 - - - .db 0 + 5037 D2:509D B7 4C - - .db 183,76 + 5038 D2:509F A8 4C - - .db 168,76 + 5039 D2:50A1 A8 5A - - .db 168,90 + 5040 D2:50A3 50 13 00 30 13 00 A0 12 00 - - - .f 309,307,298 - 5041 D2:5090 00 - - - .db 0 - 5042 D2:5091 9A 2C - - .db 154,44 - 5043 D2:5093 8C 2C - - .db 140,44 - 5044 D2:5095 8C 3E - - .db 140,62 - 5045 D2:5097 20 16 00 D0 + 5041 D2:50AC 00 - - - .db 0 + 5042 D2:50AD 9A 2C - - .db 154,44 + 5043 D2:50AF 8C 2C - - .db 140,44 + 5044 D2:50B1 8C 3E - - .db 140,62 + 5045 D2:50B3 20 16 00 D0 15 00 B0 15 00 - - - .f 354,349,347 - 5046 D2:50A0 00 - - - .db 0 - 5047 D2:50A1 9A 2C - - .db 154,44 - 5048 D2:50A3 8C 2C - - .db 140,44 - 5049 D2:50A5 8C 3E - - .db 140,62 - 5050 D2:50A7 00 16 00 10 + 5046 D2:50BC 00 - - - .db 0 + 5047 D2:50BD 9A 2C - - .db 154,44 + 5048 D2:50BF 8C 2C - - .db 140,44 + 5049 D2:50C1 8C 3E - - .db 140,62 + 5050 D2:50C3 00 16 00 10 16 00 20 16 00 - - - .f 352,353,354 - 5051 D2:50B0 00 - - - .db 0 - 5052 D2:50B1 9A 3E - - .db 154,62 - 5053 D2:50B3 8C 3E - - .db 140,62 - 5054 D2:50B5 8C 2C - - .db 140,44 - 5055 D2:50B7 70 12 00 80 + 5051 D2:50CC 00 - - - .db 0 + 5052 D2:50CD 9A 3E - - .db 154,62 + 5053 D2:50CF 8C 3E - - .db 140,62 + 5054 D2:50D1 8C 2C - - .db 140,44 + 5055 D2:50D3 70 12 00 80 12 00 60 12 00 - - - .f 295,296,294 - 5056 D2:50C0 00 - - - .db 0 - 5057 D2:50C1 8C 2C - - .db 140,44 - 5058 D2:50C3 8C 3E - - .db 140,62 - 5059 D2:50C5 9A 3E - - .db 154,62 - 5060 D2:50C7 60 12 00 A0 + 5056 D2:50DC 00 - - - .db 0 + 5057 D2:50DD 8C 2C - - .db 140,44 + 5058 D2:50DF 8C 3E - - .db 140,62 + 5059 D2:50E1 9A 3E - - .db 154,62 + 5060 D2:50E3 60 12 00 A0 12 00 70 12 00 - - - .f 294,298,295 - 5061 D2:50D0 00 - - - .db 0 - 5062 D2:50D1 8C 2C - - .db 140,44 - 5063 D2:50D3 8C 3E - - .db 140,62 - 5064 D2:50D5 9A 3E - - .db 154,62 - 5065 D2:50D7 10 13 00 70 + 5061 D2:50EC 00 - - - .db 0 + 5062 D2:50ED 8C 2C - - .db 140,44 + 5063 D2:50EF 8C 3E - - .db 140,62 + 5064 D2:50F1 9A 3E - - .db 154,62 + 5065 D2:50F3 10 13 00 70 13 00 70 14 00 - - - .f 305,311,327 - 5066 D2:50E0 00 - - - .db 0 - 5067 D2:50E1 9A 2C - - .db 154,44 - 5068 D2:50E3 8C 2C - - .db 140,44 - 5069 D2:50E5 8C 3E - - .db 140,62 - 5070 D2:50E7 20 16 00 80 + 5066 D2:50FC 00 - - - .db 0 + 5067 D2:50FD 9A 2C - - .db 154,44 + 5068 D2:50FF 8C 2C - - .db 140,44 + 5069 D2:5101 8C 3E - - .db 140,62 + 5070 D2:5103 20 16 00 80 15 00 00 16 00 - - - .f 354,344,352 - 5071 D2:50F0 00 - - - .db 0 - 5072 D2:50F1 9A 2C - - .db 154,44 - 5073 D2:50F3 8C 2C - - .db 140,44 - 5074 D2:50F5 8C 3E - - .db 140,62 - 5075 D2:50F7 60 12 00 80 + 5071 D2:510C 00 - - - .db 0 + 5072 D2:510D 9A 2C - - .db 154,44 + 5073 D2:510F 8C 2C - - .db 140,44 + 5074 D2:5111 8C 3E - - .db 140,62 + 5075 D2:5113 60 12 00 80 12 00 10 13 00 - - - .f 294,296,305 - 5076 D2:5100 00 - - - .db 0 - 5077 D2:5101 9A 2C - - .db 154,44 - 5078 D2:5103 8C 2C - - .db 140,44 - 5079 D2:5105 8C 3E - - .db 140,62 - 5080 D2:5107 00 16 00 80 + 5076 D2:511C 00 - - - .db 0 + 5077 D2:511D 9A 2C - - .db 154,44 + 5078 D2:511F 8C 2C - - .db 140,44 + 5079 D2:5121 8C 3E - - .db 140,62 + 5080 D2:5123 00 16 00 80 15 00 60 15 00 - - - .f 352,344,342 - 5081 D2:5110 00 - - - .db 0 - 5082 D2:5111 9A 2C - - .db 154,44 - 5083 D2:5113 8C 2C - - .db 140,44 - 5084 D2:5115 8C 3E - - .db 140,62 - 5085 D2:5117 D0 15 00 20 + 5081 D2:512C 00 - - - .db 0 + 5082 D2:512D 9A 2C - - .db 154,44 + 5083 D2:512F 8C 2C - - .db 140,44 + 5084 D2:5131 8C 3E - - .db 140,62 + 5085 D2:5133 D0 15 00 20 16 00 10 16 00 - - - .f 349,354,353 - 5086 D2:5120 00 - - - .db 0 - 5087 D2:5121 8C 3E - - .db 140,62 - 5088 D2:5123 9A 3E - - .db 154,62 - 5089 D2:5125 9A 2C - - .db 154,44 - 5090 D2:5127 D0 12 00 A0 + 5086 D2:513C 00 - - - .db 0 + 5087 D2:513D 8C 3E - - .db 140,62 + 5088 D2:513F 9A 3E - - .db 154,62 + 5089 D2:5141 9A 2C - - .db 154,44 + 5090 D2:5143 D0 12 00 A0 12 00 60 12 00 - - - .f 301,298,294 - 5091 D2:5130 00 - - - .db 0 - 5092 D2:5131 9A 2C - - .db 154,44 - 5093 D2:5133 8C 2C - - .db 140,44 - 5094 D2:5135 8C 3E - - .db 140,62 + 5091 D2:514C 00 - - - .db 0 + 5092 D2:514D 9A 2C - - .db 154,44 + 5093 D2:514F 8C 2C - - .db 140,44 + 5094 D2:5151 8C 3E - - .db 140,62 Listing for file "example.ez80" diff --git a/bin/TEST1.8xp b/bin/TEST1.8xp new file mode 100644 index 0000000000000000000000000000000000000000..ea938f84d46137d7c513b4ab0b2ccd51e3c1f377 GIT binary patch literal 25155 zcmeHv349b))^AmHr#l@IxJiKI7D&2NfowpUfDkY=5W*%Q(SV?U5D*fONLWpRp;<&g zMG-{Y1!u+;{Q#B4@k0|J8G1r16%FD@Yhp}rY>Q1sFp3(@4B>{(ESzpHm_B>@yeSK&PqR-gwU3)Jb?VFoqh}V( z<}N!zriO7pPqB;{GI~r8mhtnHb5l+{;4R{7jyNnKHQs{#@{!oqAvKP0BS9enqOtdd z)c71(AvH=Y=k5HK3_RYK(#9M5rkn&>s-rvRcZO0Ox64e>JA0d~+`;)A9iav&=>6a= z*%iXFRL7){8lGEvC<&TUCO{M3lOM@R5ATs<=e;3&*H*}_Iq%Ew%3kgxnGe`FWkOr7 zVV5$MM)u~EZLB-%gc=u@x=E<->IthpxK%yG4iUeQz| z*C#=N@L-Okv2cPlw9NFr`z``H(_7g3pex0~8)j0_^#6}T&`1wG9F~_xFGRClk zu%tUdfFn>joG|8OgLyK*m`M{LBLeCimJq}ws|)Z1b1|nQ=+f!puIz*C>ME97y%PCKlq5-R&m>8SZ@*cY=uf0!2qPSuh9ro6X$hb%>!#EogZ zKV+lR(g*`?s}MIjF?qlTjRsWw@f9hVsjqF3#ni{Q$Q#e7nB2WZcAu$~6ssTl6FYf} zoRH{>+@)kVt!IP%%2XvccH0&?^@A<463J0u3{Y~byH?-iSEs78>aoa#EwW3xtiUEH z@Fo<9xU7J0s&7_(_svRSqD{jKmC;lCU)mz~gD&OtgO02_aH&s?&|i*+FVyUcyjo}4 zUsgMIr#siBW%c!^u)NRawDDXZ04Hg`AVak|TQP0aZ4C)3inI z1N~}Lw$-;DXtw!n{q662ki!q;IhK6WLwj?6B{y>vO$e?<%T~6@k|DgtGZ5M^zHkbM z-x2wi%tvtG0Dk^>AYk(}dN*&E%Y4OFCDT_NRPWscj<>+#`h(qiit9f}jPef{HH53Mgy&RhHFj*6M{ygFxKl=Q$HsX)#s$@;P-j zx3#(~fq$xcaRR?VDfA8H)ofFBNdmvFx-@}*LdmlEh6-x7`FxDXHiD{5b|w>1p%sds|j|o~y?g!rM5`7H;Wv$gga}f$-ZrzHF1v4QNfi zxx6pi;&U@Ja|K_v)#t{3`sN0C{Lsr<@2Bs`GHVW6svyUqnOZg8tVUUPDY^9t&gA6e zMr^E}w?Zraq|jc65)=JOOmeb6$=2c=nrD2~Z7PN`9@WbE;%z=R=g%ur3Y(Xv2}(wF z$*=@d%9?^i{Q&$Fx~W=)YYGXf)qMM8Wg@*y^0L}!EcC$_9|{036S`WP=Idz_!UcED zHen2W@oju=%Qf4yUQe6Bfb$wP#exbv%oj9207r=3D)XV5Bm9IG;(?)8qio)??Q)|p z-UN|PKeeb)7X6e{qc}X3LC?k)gn?}cLpde^T&T?`2UW0&Ss5x*t&EWiWsGJ)utjlJ zsZ6y}S{XwS${59=jL|wY`D_269bbyA-j`y5uL-^!K;*oSY4~(%(Wwn7GzA}zFUkZ_ zTgin|z9@@+YVk$c^ivoskBabETZxS-juz`pB6iicfTz^Az@)|-XmkFVmFwR66wSrlm zxa!Qs31%fTp;L91gR>v9hZJSU4TZeCnVwveey(JAsWrX<6-LYWRAL5DTHtcTFb3oge1cdEFB5)A}0fX1}j;^Eu78cXAxD{ zs!YWQx(tKrQpkr0s${Up%5QC%0hL_}uD*Q12+t2;cwV6t>cu!UTlk$~5Y?epi0W4q zgU}AqzC|}KwdS7(@lcx%%Az*CGI?>-rawKX6i#NH=S!kCy*#coYSZTB(DQMu*Oxc1 z!5OS%WWbPmK>rZ2VN5b*=s(t%gY_-TQ3}h}L1fK>kh?A-G7oxr)l6Q?6t0>ntcw6$ z2@MwRwvwju>V7ekT``;AEtcjZi?QK2ZD7lrvR%Qq|!jXscxI6ap>fdCTjsyvcV~&q!-NEw2Rf1 z0JC-hU7e*%M6Y-UMCw4Ku7yZh)12x|O(Ldg&Wh^zcj`TQ z+`U1rV+7RLF*{||@%4MM8pA=jQrlS67@H$zha9_khiow^)0QTLopCMoIcj&w-U&P9 zQ_8e~$QkH!e0PasM~>a+`1ultAcy!Iw%uB(l4jG9GiswUhO6}T;8Zu)#P9!Uw_E|M z8ltH6r}jZ#@tgYePC0cGeE05@x2A5|A(!kr;ETO;r)+L*QnD0@3*YpftZW;mI)M7H z-<5Fj0FhICwTavN&MsNp*~Hl+VFrSl`$741tYjZ#xP6V@aXV!{{xorC;A$Zk60>*9 zY7dxu!qgtHAPV!w@0Me??a+8u#sIq@j@8y?HzJBbQ#M}G9!PidC`;TB2H7; z69uC?akMP;HLcvFAeJBW5Baa}02F`RA$vc2Up@;fLhh8We(%~{GJpaMn4?SpMfhS& zJi!%&G8$4!ss*7{35YFPY9Ym4CiUw8z%>+HLOr%q#&R%tsBhMShYy2wqY|I&VGBsb z3Rh`xDDe;;uVmRgd~ z#W$7%f)k8ytZ)}&@Ia6OYlK`=qLb8WQux~r!`hU|?O#?V zE>fmKLq*}6!J5Xa3k7w7X{%a{>$MPHl+|Yq+X_IMz!>eY2D|n2NjM{ZVEqgyOBu`b zXZh?vAB@F;v%y!5wdK%DJd}J}EiC0=#=GV<#;%0e>sfwZ&t*oVFACQC!Pjc?x|aKv z>$t>#_TZYvbglNT>yjqu+Lsqw;d<0JG=g2A;&Nu4lC@NY%f_LRSFnP8L)%`)I=#)- zu(c|**`6l2Vk%%`MJ zr7VB)#&Hld_$N_W>y?Si$GN3!++(^V&~T+dJx#7|dsWxd9Ph^Ozjp+1TTxbHSMGsL z*bn8{H9%uNgS9{~tiR2;;k)E>Ih=6y{6IEkkA!_ zYK88>`CPn`YDOoKNp+b0fHDCJ1AZJ`yvPI>!LNdYXu}coR5m(V{ki36uiqnkJH4%O z*nT4}6aTbF-+Y9GwhQTV>;%CUs?torUu3*haKh0H!$Lx?@fz-ST*%Dj{&0>SF&*(TA2+)4O zeHF7R$hQ@{4)pO<@&TT61bQ9{Z|->rZaD0&V50@5#thYmSA#kL*kER62YR%E&G{NN zi;IWlFPd9a7}bm|Dr^@7w&N8nu;G3VL^F(Ksn*2~F7;56%c=!A+?_X9kXOU(f5cW| zgZ9a>C-;IX=D@v$HGAdQ;=MBVY;5OA-Cz&GZ}ZRVJinX$r%UHb>d(2RjFGIv(8rug zI7%xm97fVnzS-QQxUv3RB?F703&CD|EUto6f9`KTT0suOfWe0OmGDc459?(0&E_9~ zPMYF+b%t(}lVNtHdjP8I{F@!AXwfkLzumCeH(U6p8}15)pvBw{Z~#=MHR?T zW?R&Sa5)2zzaXD`A|qktP8Dmi8y$>I6PcrM=1Sg(YY->y$*`SVxCSxyW?<_ACO4y$ z$tcwUYxvz#6@8S94xUj&3}ImIKAK2`Y2cscST9xvZS&`pTi_%O0=YBzQxE zgd^T(Vg!Fea5!wF(@7NKkB41@Kn$T8igxeey``K*{xXU5!dv3ohDcg|z=#rKD2KI12Gs2r&={ls`=NjPcR4Kb$ z?6*JrO~+pc&mHRhN^doFdf%_3lVhtm_(^+W`f1cwi_Z<~Du+4N3Jp`h# z1p_G;q~JE9o*DqDPqmcCwMOY1*V?S4S+*;EEs8B+glDVLHv!VsPXoiX8nQ=tTuYVB ztL!GX6y-cy3#B<8inrA{=k~o?DQoA|;ngIqcRTwj(gbHs*%4Q#1Jd}m)g2ld zVa#D@oG*HKt}Bo3tZc7qtPKCKIY7fJ;OE1H$m}y$Yzq~i3Ln68zmX+1YtR1dhZ@C47haoiYz8zXRI1a6GLjS;vp0yjqB z#t7UPfg2;Bjez!q=KiDCctTTk#2k<-Yn8}4-hvx(^{p-XkLqqxv+LHWQT4eUaw9F9 zl`Omtve{@O9|!~z?ou*y^!tH+pTnWd@KLy%c`P?MS8^r8C5zK?JQy~La{Z~V!LHf- zUBL}K%9{hFeUzz1+J>T%Nu5DH4xWTmVOy)O(lfNbUFiXxcLW`f!&@DIXLthvF?(GC zJSr;HDpA;r+L<}*IZOSqRqb}x8D#IriYN3e`h9_$gi!{Yvlblhu^7^405y$7(Ls|M!2WAFH@vRB=&_{|S=06t||~M$lQ+dNJ3AiN&dHS~Zk8 z;Bs7@-SAKm+n-e3-!AtR_-3hAD0J?W>awUQHlIxy-#>w@9!<+(!L3;8aVM~vRT|rHi?_aOX5r9Me#-Qg7^Y?UVNTBCq74>6`v)~ zh|iFx#iz+eaU*$3e2Q!kH;^aAC&_woJy|ENBTtA=khS7k^0@doc}#qatP$6cN5x0U zBjO|EVew(IT3k(5iL1y;aV2?3e2Ah~muXrz+Db6G_#2KVOEFk$}KAA2~C)31fUd@ggAl>7l)H!;xIB)97=|WLrA8WNd}99 zNrsp~28n~nKye@$APyid(M9@;{Yko*PHquzA^pUDq_5bQq={*ykJyLw7JHMM#hXbl zu@~tn_9UrdD(NBiAWqRqQp6O}UF=S}iQPz7u`5XylSz`8L=weBk{~9Kcrl)I5xbDi zVrLR3#t})BNURu39HN8RMLUTRV@M~l6S+yeiF6b@k`7`AB8noRA|=scG>H72(gJa5-bK2t7s(_ z(L#d6AYvBH#3Y)CAPR&R`7S)=C4mZ(iJBxcHA_J>NU~6iWTjRqmy6h_0O*0iPU=iMOI>IeDW1kl2{b`Uq=`}z zO_GvnvecD!mAcVxQg_;2N}(x|lRBjyw1<>RQ>C7?r__t~l5VCqOTB4tsSoWVrO`C0 zFYPP!qy3~?=q*w@O_%!9{*sHjqycn*G>{II2GK!M2F;KL)4@_E&6I}FA<|GfR2oKy zNyF)IX#^c1-AZqjM$(Z|7R{1I(NR)1&6aX#j&vKnO}d@lF6Gi(X*3-zjiFAkCmNq?vT4bT7SEnnheJwhLm9;J^;Yv>y3G5VPFIDK4N zOV>(I&?lsIbe*)Gu9u#qPf8o;2I(pKl(dm3RCR^a6cB zdXc^;y+mJRRX8FNQqKx)r7lGeoq zV&-&whGs^MX}2wMIJiTgP3ty&T9<@Xho*$S+{)hSjga(^&uxorlC36qRq&wTfVJGZ z(wbxKVEx|mfn}{_x~0D*%JO5-p`finYlG$njR{H%x+%yUX@O~m>26c5X_zV9lxj*abuzUzwK55& zpM{gcG2v_BbKw)=FTzK{Zeg47hVTdBd0~U_xUfoCCOjZ46pDnI!ac&>!kt2{FiIFM zWC;C*G@+-EA|wf&1&7d4h!!G+HbN`GDwu=-{|kSP|B*kz`}yzqZ}~dj$A7^e=0D{> z;Scg2zKY+=f5iVc|31Hyf0y6R{};c7f1Q7Y|0BPdf02Kle}>=4KgqA-ALrNb5A&<| zhxq0EQr^v%@uhq*zmT8L&*h8w`}kS>Oum4h&fmjN;V1KV^Aq^H_;LJLehi<>-^Sxueq-{AAF8-Uvhtg&llVg_d8TToCYB(7_hqzDR^D*3t z_i_hYPTx1q|8qwG)`IN#|Bl+V!|_{GLk*sY2YTfHFv|MvaA^JiH&7ie!wvBNuT#Va zuo%Ao7ZmUVY5|_Ry_^OI2it765O|8`a=wwi-h2&SZ0waZAt3=Cph!x(l5eE1H-F&3 zfrADO%E-8q4j(>z#E22M-g+h9NE`VKk05CHTTq5CM91HPZ^&P7KEo5M<8MJ3z9b!g z3%((5NOcuS9>di8hnEqe1kIUjg6HIs;f2Gpa$Qd z2H&6t-=GHHpt^bo8&p^8NP`-DgBpB;=H*S90{{Phk3nb5m^pLiz4y*CDB=Ds+3?EX& z1@IU?q}R&V@xedGvvDx%_(Kh9@C|D44XWddGpLTgt3eIEK@Gk^b$poy)$wN;)ZiP` z;2TuOH_f0r{z8K;UAk=9^5qY%FzD*l4?q0KBaf~zDBwc1BYs8!7pgs!kno6z$jG(^ z-=J6K11?lM;%5|aq1wATojp=hd-m)F{YJGSK1QM6sMf68Zo54@#JctCpL}wIhRdwuH>3Um zf2fYXt&ab<^EKRYI{vsg4S!c1e=i+>rj9=|Q^S{~;~%5r|LuGY*EAjfv}qc?LLL8t z1sc8;s9#j`3Ju>H9p8ox2H&7p<|BSke~>{DKd3(p^$+TAXYdVrWj^8u^>;QX;s^D2 zL;ZvLZ$`a>`iB@4@q_wDq5eVrcOX7c?{tGAK2Yy{s9#X;LW6J6EAtT-sP`d*B0f;> zW2j$H?^ByMzx;9@1Xvn7}i1U*#^DscF_NrJH}%82KDD-*ao%F zHt3wWp#KF6@5k^3>RpLp3)K3!L7!L$`rYu<#?3E-e*g5!tFONSdVTBd|1#*d?V#WH zcI+&#sMx!2e`VDHkLRz|2fZH~^pGsqeEM1KVHWlnesue=)-3D+ZiBM0#_&T}1N)Y>^^!}~^=-vQ-7`ipU&q22a_~Y)pYy5qTY$F~-4@_I{miq^J^#XsFKt5i1@*p$ZVT$&if#*P-L?DuKY#Gw zdp`UK@S%GDazIn>Cx8pp`uUMB{`Tcj-&bGP)qm6QZDZ51@BaS1{|DvxiIb;J|M=6H zv**tLeBqaiYIEQQ{u}x?TdbP>w{D}^fBPuS{yW8J_TMF5v;XcXn*I0gquIY}fM)+g zhiUeoouk?R*m0WuPnxXRe|~{x|FerU`@g?fvw!yz&Hh)e((M27wVM5Jd|I>rmo{x; z_FeTC&AvbWM6>V1pKJF0)z_MRHyzXL`}hgXzR#Z1>>IY0nf?DxKH5LHKf@31&+vo$ zGyLHG3_rL(!w>Gy@Pqp^{NVl!Ke#``5AM(KgZnf5;QkChxIe=W?$7Xp`!oFD{!7rm z!M&M(gL^ao2KQ$E4erhS8{C`W_v-k;y%~ORZ-yV-o8brdX86Iq8GdkYhX42S0Y8R6 z#E;<*@niTy{22ZaKZZZVkKqsTWB5b-82%7HhCjrQ;Scd+_(S{{{w70w!|;as#qfsu z#qfsu#qfsl4Z|Da$MA;uF}xvu3~z`Z!yDp<*^B8P!yDqq@P_y?ydi!JZ-^hm8{)_C zhWLLspW(Oa_}l3CqjdZ+I{tVae~OO3kB)zUj(?brKS#$uPRBo4$G=L)zgEZpw2pt1 zj{h|s|5hFUE*<|zAAQ97e@w@BLdSPb#|IBH{HysK57QsR57QsukESr~0d9lZ9Webd z{4o6i{$-rZ0vcrZ2#M{%4rB0JlN^)qKPc<`4GYDiqA0;Rmy4 z_>m%hFn_TBBxHZF%6!C-kgZ)3c2F#z~2eW7Rk(O8N z+Yjaq_Fa7t%=?ogUwnBK%=&ACB0ey0uy6klVBQQrm^H(X^k2=tfuDtc)IWwl)IWwj z)IX!3e++-9e++-9e++x5e?~$77~WC;7~WC;7}in$jDme*c!T)11;ZQKH-L1k4^bhK1`Umwh{Ub&FfqI#KLA^}B zpkAh5r2p=G)c=1pepvn?ei9Mc4yOI6Xt4uMe=!Cfm@#+=Oz*>P%N>0OOzY$B96#Z1 znARs7G;gY=|2gyKFD!yew zWgRSQo_+?Fbug`MGU#Sl-f8&X)A6(E9q?Ke5lP2+!Nvob}wXo0okoPT%&+khMn~_r7ys(CSaxjo`Q*z=V<~w|W{bw(B-z;=I)_Zm&GzSKHW~19R@4Rr1if7hc=` z!Ty7veOZ6(hf`^lNq-8f-Gz@(C+==MrbJP1-5RDGb8MX!k!r06mJU~ zgYDYGRYFvBbTm8-CW`Q{)g3!_yy>Q!I(1^JCfF9l`y#Ot?2X33wqWNjU2qnSH*V|U z9(i(CIJ$M~)*TKEtxh<4z>x|^PdIwvaWfpf@qjfqth(9J7mt40af^1OYe)Y}hpWYb zar!rof!^W4f_H(5`w?Ed+i=#L3cs%S)M$8x8^?VXi?4Fyy4K=*-L!ujZ~0ydcrOXQ zGr{}ue%VpFS`H7lc;MZjy_Lqc-jdaFy`$)B_+Nee4`n;P385$eDLbU_C34;}c*pPw zzNX>t_&?Fm)S0ctU3<6bs{Oix;WfXiV<~sY)vaY$yz!N?Hv#(F7QX4C;LQvce%W`M zDB$~yJ^kSQ$DVq*w$X7&sBzENP7nWjdW4-i;7(WHaFACvE1M-ZzBJi`&^Wa(yuQ@e z*f`n6?Xrg`Q)ek72L#pF+&tvLv&y~#8@??0(hG4%;zQ&9#rPC+VxlrK14LOhSUSPi zJvdvX@Oocgri-iQoq{XS%q8#q6fK%SF)-Rxi2`|3Tu?!=Jm2b~5@Z%=|L zA`+y(H>AHnX``F)EN-^N6};|9jwM*hDoyQes)=sqm(DEk&NtQY<$F#tnpfJ)=*c4i zMx!rk^o4*%&*~Intt%znmUdCe*tb}KcUL1`6AnkV1t0sZ4ss{7u57G;=dCkb-Mk=D zu`eE9BHdVvL*w3+U~BXqG}Y8g(LYw|oz%*^;cWp^i~21WYIfOMD-&QesT&x!#tIJ- z4^~0pfo{9m(HK+{3q#nFH3V2tgsJg?RH(!QqV#l}x#l~6ogWka(>)+T>!>HG(N=>m zxD?Gb@ZfopA5%7OJf`5uYLmCvTyrGpJLFn48B5Y}OoeJPp}>dw66*$d@by=*P~LHp z<6=RkI~NOe$3j_;A6_*HuNZpOT+>*Q4#BSE&lPfBrj$C-Btx|~ZwOmn9al0}RY>6Gz zql|=h8{x%66^Y+O1=S3QLR9cV%x~gY0y@+Odi;GVOF>5=5mk4b_rS2hV8Y$`Uk~Be zQ{xP-`S29tU9i<`g`2+C7CBbf4gT#TC>ZXMz-=<^fOGg`hhE5P`n}S+EEo$7TZ{IO^ z1$BCUMn--*7ufggo;}a*3$(GeS$y!|!IJd+{QUH2cl3as1Dwt|C+n8nv*ez83YyBF z9iM*eSo-*9m)4zcK3}(#6I#2PU9APIK04Z+9u39v^SOL($(LU~03n?lkXM$U@3LIP z&br-hCI?~xCLbNmLHNgF(5=wsP#~N$uQ|_&(&gpl%|PPv1Nm`4vHv*P1OiMP&e#D` z<>g#CcjU+smM$!8hEE|E?Jh5~T!ad%4n{lktGKknwEK@9yq|MA^O&4756VG9@C8;m z$K|I7((@t9>AZN+$vVJsd6)r@78*x+IcEut2Jxj_*~eds7bz3ZD2v_^&<*|0Ll{_a7$VJux zOkh7t0FINx@?U-RRk<5*RaG@tRdG-`{sA9wLA~b>R#jCUJP+-cpT~Y_w4CLC4Ec}? z#i}^a8ft*E;DP*uM@}9&SOwj|qnWEZ-rRf`=r0^)tUVB5>BC>aP($Nb z4%#ondIGH8Xlw@#s0WX-G)50M7XmHBu4B3^+F1wVf&<&kon-BvM7>0ZS_JMS4zKeh z*mGf(p$4D;Pf)m&c2b?ogdaXL#Njcm(BCJycA zadmllc_%pw8-XfN)4?M!c8rUBjynhga2P055As+a;%8~7MX%3-X&etoqv4?$LBBgf z8jE2+uvi+Sh#%5802&|q!*R`_X@I|@(^-e*urB;!0$AMrM?n-190(Xs?SNQ|UA)@S pZuA}F2W2xu)=u%CQ@By^&4=$m_-a3R^3NOtLD=}VEZ6?W{{_$I0>1zN literal 0 HcmV?d00001 diff --git a/bin/TEST1.lab b/bin/TEST1.lab new file mode 100644 index 0000000..89a2d86 --- /dev/null +++ b/bin/TEST1.lab @@ -0,0 +1,4676 @@ +__bldiy = $00FC +__BM_MSK_RGB = $FF00 +__BM_SHD = $0002 +__bshl = $0100 +__bshru = $0104 +__bstix = $010C +__bstiy = $0108 +__case = $0110 +__case16 = $0114 +__case16D = $0118 +__case24 = $011C +__case24D = $0120 +__case8 = $0124 +__case8D = $0128 +__DispStr = $0378 +__DoNothing = $00F8 +__EraseFlash = $02D8 +__EraseFlashPage = $02DC +__fadd = $0270 +__fcmp = $0274 +__fdiv = $0278 +__FLT_MAX = $0294 +__fmul = $0288 +__fneg = $028C +__fppack = $026C +__frameset = $012C +__frameset0 = $0130 +__frbtof = $029C +__frftob = $02A0 +__frftoi = $02A8 +__frftos = $02B0 +__frftoub = $02A4 +__frftoui = $02AC +__frftous = $02B4 +__fritof = $02B8 +__frstof = $02C0 +__frubtof = $02C4 +__fruitof = $02BC +__frustof = $02C8 +__fsqrt = $0298 +__fsub = $0290 +__ftol = $027C +__getBootVerBuild = $0090 +__getBootVerMajor = $0080 +__getBootVerMinor = $008C +__getHardwareVersion = $0084 +__getKeyID = $0088 +__iand = $0134 +__icmpzero = $0138 +__idivs = $013C +__idivs_ASM = $D20499 +__idivu = $0140 +__idvrmu = $0144 +__ildix = $0148 +__ildiy = $014C +__imul_b = $0150 +__imuls = $0154 +__imuls_ASM = $D204CD +__imulu = $0158 +__imulu_ASM = $D204CD +__indcall = $015C +__ineg = $0160 +__inot = $0164 +__ior = $0168 +__irems = $016C +__iremu = $0170 +__ishl = $0174 +__ishl_b = $0178 +__ishrs = $017C +__ishrs_b = $0180 +__ishru = $0184 +__ishru_b = $0188 +__istix = $018C +__istiy = $0190 +__itol = $0194 +__ixor = $0198 +__ladd = $019C +__ladd_b = $01A0 +__land = $01A4 +__lcmps = $01A8 +__lcmpu = $01AC +__lcmpzero = $01B0 +__ldivs = $01B4 +__ldivu = $01B8 +__ldvrmu = $01BC +__LINE = $0000 +__lldix = $01C0 +__lldiy = $01C4 +__lmuls = $01C8 +__lmulu = $01CC +__lneg = $01D0 +__lnot = $01D4 +__LogLoop = $D1C7F6 +__longjmp = $0098 +__lor = $01D8 +__lrems = $01DC +__lremu = $01E0 +__lshl = $01E4 +__lshrs = $01E8 +__lshru = $01EC +__lstix = $01F0 +__lstiy = $01F4 +__lsub = $01F8 +__ltof = $0284 +__lxor = $01FC +__memchr = $009C +__memclear = $00B0 +__memcmp = $00A0 +__memcpy = $00A4 +__memmove = $00A8 +__memset = $00AC +__NewLine_Boot = $0390 +__sand = $0200 +__scmp0 = $0204 +__sdivs = $0208 +__sdivu = $020C +__seqcase = $0210 +__seqcaseD = $0214 +__setflag = $0218 +__setjmp = $00B8 +__sldix = $021C +__sldiy = $0220 +__smuls = $0224 +__smulu = $0228 +__sneg = $022C +__snot = $0230 +__sor = $0234 +__sprintf = $00BC +__srems = $0238 +__sremu = $023C +__sshl = $0240 +__sshl_b = $0244 +__sshrs = $0248 +__sshrs_b = $024C +__sshru = $0250 +__sshru_b = $0254 +__sstix = $0258 +__sstiy = $025C +__stoi = $0260 +__stoiu = $0264 +__strcat = $00C0 +__strchr = $00C4 +__strcmp = $00C8 +__strcpy = $00CC +__strcspn = $00D0 +__strlen = $00D4 +__strncat = $00D8 +__strncmp = $00DC +__strncpy = $00E0 +__strpbrk = $00E4 +__strrchr = $00E8 +__strspn = $00EC +__strstr = $00F0 +__strtok = $00F4 +__sxor = $0268 +__ultof = $0280 +__WriteAByte = $02D4 +__WriteAByte2 = $02E4 +__WriteAByteA = $02E8 +__WriteFlash = $02E0 +__WriteFlashUnsafe = $0334 +_AbortPrgmode = $208F8 +_abso1o2cp = $20290 +_AbsO1PAbsO2 = $201A0 +_Acos = $20250 +_Acosh = $20268 +_AcosRad = $20240 +_Add14d = $203D0 +_Add16d = $203CC +_addhlanda = $21DB4 +_AddPrOP = $203C4 +_AddPrOPlP = $203C8 +_AddSquares = $2136C +_Adjm7 = $2057C +_Adjmath = $20578 +_Adjparser = $20574 +_AdjSymPtrs = $205A4 +_AdrLELE = $20934 +_AdrmeLE = $20904 +_AdrMRow = $20900 +_AHEADEQUAL = $20FE8 +_AllocFPS = $205F8 +_AllocFPS1 = $205FC +_Angle = $20280 +_AnsName = $20FF4 +_ApdSetup = $21144 +_AppInit = $20190 +_AppSetup = $2114C +_Arc_Unarc = $21448 +_Arc_Unarc_Duplicate = $2153C +_Asin = $20258 +_Asinh = $20264 +_AsinRad = $2024C +_AsmComp = $2133C +_Atan = $20254 +_Atan2 = $2025C +_Atan2Rad = $20248 +_Atanh = $20260 +_AtanRad = $20244 +_BinopExec = $2097C +_bit_FuncM = $20BF8 +_bit_grfSplitOverride_cmp = $20E28 +_bit_ParM = $20C04 +_bit_PolM = $20C00 +_bit_SeqM = $20BFC +_Bit_VertSplit = $2140C +_boot_ClearVRAM = $0374 +_BootOS = $20108 +_BRKINC = $21024 +_BufDelete = $20D0C +_BufInsert = $20D00 +_BufLeft = $20CF8 +_BufPeek = $20D10 +_BufPeek1 = $20D14 +_BufPeek2 = $20D18 +_BufPeek3 = $20D1C +_BufQueueChar = $20D04 +_BufReplace = $20D08 +_BufRight = $20CFC +_BufToBtm = $20D20 +_BufToTOP = $20D28 +_CAbs = $21368 +_CAdd = $21354 +_CallCommon = $20AC0 +_CallFontHook = $20130 +_CallLocalizeHook = $20134 +_CallMain = $20188 +_CanAlphIns = $21118 +_canIndic = $20D90 +_CDiv = $21364 +_Ceiling = $20C6C +_CEtoX = $21380 +_CheckTOP = $20B88 +_CheckXY = $20B8C +_Chk_HL_999 = $204CC +_ChkbcIs0 = $21D48 +_ChkdeIs0 = $21D4C +_ChkDel = $2056C +_ChkDela = $20570 +_ChkErrBreak = $204A8 +_ChkFindSym = $2050C +_ChkFindSymAsm = $2134C +_ChkhlIs0 = $21D50 +_ChkInRam = $21F98 +_ChkTempDirt = $2049C +_ChkTextCurs = $20C58 +_CkEndExp = $20FD4 +_CkEndLin = $20FD0 +_CKENDLINERR = $20F18 +_CkFetchVar = $20FC4 +_CkInt = $20418 +_CkOdd = $2041C +_CkOP1c0 = $20404 +_CkOP1Cplx = $20278 +_CkOP1fp0 = $20408 +_CkOP1M = $20420 +_CkOP1Pos = $20448 +_CkOP1Real = $2027C +_CkOP2fp0 = $2040C +_CkOP2Pos = $20444 +_ckOP2Real = $204F4 +_CkParsEnd = $20FD8 +_CkPosInt = $20414 +_CkValidNum = $20468 +_ClearRect = $21218 +_ClearRow = $21184 +_CLine = $20B18 +_CLines = $20B1C +_ClipRectangularRegion_ASM = $D20434 +_CLn = $21374 +_ClockOff = $215B4 +_ClockOn = $215B8 +_CLog = $21378 +_closeEditBuf = $20CB8 +_CloseEditEqu = $20D84 +_ClrAppChangeHook = $214A8 +_ClrCatalog1Hook = $214C8 +_ClrCatalog2Hook = $213EC +_ClrCursorHook = $213D0 +_ClrcxReDispHook = $214FC +_ClrFontHook = $21458 +_ClrGetKeyHook = $213E4 +_ClrGraphicsHook = $214B0 +_ClrGraphModeHook = $21424 +_CLRGRAPHXY = $210A8 +_ClrHelpHook = $214D0 +_ClrHomescreenHook = $21414 +_Clrlcd = $2080C +_ClrLCDAll = $21A10 +_Clrlcdfull = $20808 +_ClrLibraryHook = $213D4 +_ClrLocalizeHook = $213F4 +_ClrLP = $20394 +_ClrMenuHook = $2151C +_ClrOP1s = $20450 +_ClrOP2s = $2044C +_ClrParserHook = $214A0 +_ClrRawKeyHook = $213D8 +_ClrRegraphHook = $21460 +_Clrscrn = $20814 +_Clrscrnfull = $20810 +_ClrSilentLinkHook = $21548 +_ClrTokenHook = $213FC +_ClrTraceHook = $2146C +_Clrtxtshd = $20818 +_ClrWindow = $2081C +_ClrWindowHook = $2141C +_ClrYeditHook = $21444 +_CMatFun = $20928 +_Cmp_Num_Init = $20978 +_Cmp_StatPtr = $20F24 +_CmpMemneed = $20520 +_CmpPrgNamLen = $20504 +_CmpPrgNamLen1 = $20500 +_CMult = $2135C +_CommaErr = $20FAC +_CommaErrF = $20FA8 +_CommonKeys = $20AC4 +_commonKeys_2 = $21940 +_ComputeOutcode_ASM = $D20507 +_ConvDim = $20FE0 +_ConvDim00 = $20FE4 +_convOP1 = $20F70 +_COORDISP = $20BC0 +_CoorMon = $20150 +_COP1Set0 = $20284 +_COPYRNG = $20BD4 +_Cos = $20228 +_Cosh = $20238 +_cpHLDE = $2013C +_cphlde_2 = $21D98 +_cphlde_s = $21D94 +_cphldebc = $21DA4 +_CplxDiv = $21398 +_CplxFloor = $213A4 +_CplxFrac = $213A0 +_CplxMult = $21394 +_CplxTrunc = $2139C +_CPointS = $20B94 +_cpop1OP2 = $20294 +_Cpop4OP3 = $20288 +_CPTDELX = $20BF4 +_CPTDELY = $20BF0 +_Cpycto1FPS3 = $20678 +_CpyFPS1 = $206B8 +_CpyFPS2 = $206C4 +_CpyFPS3 = $20680 +_CpyFPSt = $206A4 +_CpyO1ToES1 = $20A48 +_CpyO1ToES10 = $20A90 +_CpyO1ToES11 = $20A94 +_CpyO1ToES12 = $20A98 +_CpyO1ToES13 = $20A9C +_CpyO1ToES14 = $20AA0 +_CpyO1ToES2 = $20A54 +_CpyO1ToES3 = $20A5C +_CpyO1ToES4 = $20A60 +_CpyO1ToES5 = $20A64 +_CpyO1ToES6 = $20A68 +_CpyO1ToES7 = $20A6C +_CpyO1ToES8 = $20A88 +_CpyO1ToES9 = $20A8C +_CpyO1ToESt = $20A44 +_Cpyo1toFPS1 = $206EC +_Cpyo1toFPS2 = $20700 +_Cpyo1toFPS3 = $20710 +_Cpyo1toFPS4 = $20728 +_Cpyo1toFPS5 = $20720 +_Cpyo1toFPS6 = $20718 +_Cpyo1toFPS7 = $2071C +_Cpyo1toFPSt = $206D4 +_CpyO2ToES2 = $20A58 +_CpyO2ToES4 = $20A70 +_CpyO2ToES5 = $20A74 +_CpyO2ToES6 = $20A78 +_CpyO2ToES7 = $20A7C +_CpyO2ToES8 = $20A80 +_CpyO2ToES9 = $20A84 +_Cpyo2toFPS1 = $206E8 +_Cpyo2toFPS2 = $206F4 +_Cpyo2toFPS3 = $2070C +_Cpyo2toFPS4 = $20724 +_Cpyo2toFPSt = $206CC +_Cpyo3toFPS1 = $206E0 +_Cpyo3toFPS2 = $206F8 +_Cpyo3toFPSt = $206C8 +_Cpyo5toFPS1 = $206E4 +_Cpyo5toFPS3 = $20708 +_CpyO6ToES1 = $20A4C +_CpyO6ToES3 = $20A50 +_Cpyo6toFPS2 = $206FC +_Cpyo6toFPSt = $206D0 +_Cpystack = $206A8 +_CpyTo1ES1 = $209AC +_CpyTo1ES10 = $20A10 +_CpyTo1ES11 = $20A18 +_CpyTo1ES12 = $20A20 +_CpyTo1ES13 = $20A28 +_CpyTo1ES14 = $20A2C +_CpyTo1ES15 = $20A3C +_CpyTo1ES16 = $20A30 +_CpyTo1ES17 = $20A34 +_CpyTo1ES18 = $20A38 +_CpyTo1ES2 = $209BC +_CpyTo1ES3 = $209C4 +_CpyTo1ES4 = $209D4 +_CpyTo1ES5 = $209DC +_CpyTo1ES6 = $209F0 +_CpyTo1ES7 = $209F8 +_CpyTo1ES8 = $20A00 +_CpyTo1ES9 = $20A04 +_CpyTo1ESt = $209E8 +_CpyTo1FPS1 = $206B4 +_CpyTo1FPS10 = $20660 +_CpyTo1FPS11 = $2063C +_CpyTo1FPS2 = $206C0 +_CpyTo1FPS3 = $2067C +_CpyTo1FPS4 = $20684 +_CpyTo1FPS5 = $20644 +_CpyTo1FPS6 = $2064C +_CpyTo1FPS7 = $20654 +_CpyTo1FPS8 = $20658 +_CpyTo1FPS9 = $20664 +_CpyTo1FPSt = $206A0 +_CpyTo2ES1 = $209A4 +_CpyTo2ES10 = $20A0C +_CpyTo2ES11 = $20A14 +_CpyTo2ES12 = $20A1C +_CpyTo2ES13 = $20A24 +_CpyTo2ES15 = $20A40 +_CpyTo2ES2 = $209B8 +_CpyTo2ES3 = $209C0 +_CpyTo2ES4 = $209D0 +_CpyTo2ES5 = $209D8 +_CpyTo2ES6 = $209EC +_CpyTo2ES7 = $209F4 +_CpyTo2ES8 = $209FC +_CpyTo2ES9 = $20A08 +_CpyTo2ESt = $209E4 +_CpyTo2FPS1 = $206B0 +_CpyTo2FPS2 = $206BC +_CpyTo2FPS3 = $20674 +_CpyTo2FPS4 = $20668 +_CpyTo2FPS5 = $20640 +_CpyTo2FPS6 = $20648 +_CpyTo2FPS7 = $20650 +_CpyTo2FPS8 = $2065C +_CpyTo2FPSt = $2069C +_CpyTo3ES1 = $209B0 +_CpyTo3ES2 = $209B4 +_CpyTo3ES4 = $209C8 +_CpyTo3FPS1 = $206AC +_CpyTo3FPS2 = $20688 +_CpyTo3FPSt = $20698 +_CpyTo4ESt = $209E0 +_CpyTo4FPSt = $20694 +_CpyTo5FPSt = $2068C +_CpyTo6ES1 = $209A8 +_CpyTo6ES3 = $209CC +_CpyTo6FPS2 = $20670 +_CpyTo6FPS3 = $2066C +_CpyTo6FPSt = $20690 +_CpyToFPS1 = $206F0 +_CpyToFPS2 = $20704 +_CpyToFPS3 = $20714 +_CpyToFPSt = $206D8 +_CpyTostack = $206DC +_create0Equ = $20558 +_CreateAppVar = $21330 +_createclIst = $20544 +_createcplx = $20530 +_createEqu = $20560 +_creategdb = $20564 +_CreateNumEditBuf = $20ABC +_CreatePair = $20F98 +_createProg = $20568 +_CreateProtProg = $21334 +_createpVar3 = $20528 +_createpVar4 = $20524 +_createReal = $20534 +_createrlIst = $2053C +_creatermat = $2054C +_createStrng = $20554 +_createtclIst = $20540 +_createtEqu = $2055C +_CreateTLIst = $2098C +_createtrlIst = $20538 +_createtrmat = $20548 +_createtStrng = $20550 +_CreateVar = $21338 +_createVar3 = $2052C +_CRecip = $21360 +_CSqaure = $21358 +_CSqroot = $21370 +_CTenX = $2137C +_Cube = $201CC +_CumSum = $20968 +_CurBlink = $208A4 +_CURFETCH = $2102C +_CurNameLength = $20CEC +_Cursoroff = $208A8 +_Cursoron = $208B0 +_CursortooffSet = $20D58 +_CXrootY = $21384 +_CYtoX = $2138C +_DarkLine = $20B74 +_DarkPnt = $20B90 +_datasize = $205AC +_datasizea = $205A8 +_DeallocFPS = $205F0 +_DeallocFPS1 = $205F4 +_DecO1exp = $2045C +_DeleteTempPrograms = $214C0 +_DelMem = $20590 +_DelMema = $20580 +_DelRes = $20E5C +_DelVar = $20588 +_DelVar3c = $20598 +_DelVar3d = $20594 +_DelVar3dc = $2059C +_DelVarArc = $21434 +_DelVario = $2058C +_DelVarNoArc = $21438 +_DimLCDSlow = $21AC0 +_DisableAPD = $21134 +_Disp = $213B0 +_DispCatalogEnd = $214D4 +_DispDone = $2089C +_DispEOL = $20888 +_DispEOW = $20D68 +_DispHead = $20D6C +_Disphl = $21EE0 +_Disphl_s = $207BC +_DispLAlphaName = $208F4 +_DisplayEditSysVar = $2142C +_DispListElementOffLA = $21408 +_DispLIstName = $208F0 +_DispLIstNameY = $20CE8 +_DispMenuTitle = $214F0 +_DispOP1A = $210D0 +_DispTail = $20D70 +_dispTblbody = $20CDC +_dispTblBot = $20CD4 +_DispTblTOP = $20CD8 +_DispVarVal = $20AB0 +_DivHLby10_s = $20140 +_Divhlbya = $21D90 +_DivHLbyA_s = $20144 +_Dorefflags02 = $20C60 +_DrawAxes = $210B8 +_DrawBatteryIndicator = $21A50 +_DrawCmd = $20CA0 +_DRAWCMD_INIT = $20C9C +_DrawRectBorder = $2123C +_DrawRectBorder_2 = $216DC +_DrawRectBorder_3 = $21BE0 +_DrawRectBorderClear = $21250 +_DrawRectBorderDouble = $21B04 +_DrawStatusBar = $21A3C +_DrawStatusBarInfo = $21AB4 +_DspCurTbl = $20CC4 +_DSPGRTBL = $20CC8 +_dsplsts = $20CB4 +_dsplstsnor = $20AE0 +_dspmattable = $20CB0 +_DToR = $201C4 +_EmptyHook = $21174 +_EnableAPD = $21138 +_EnoughMem = $2051C +_EOP1notReal = $20474 +_Equ_or_NewEqu = $204D0 +_eraseEOL = $20820 +_eraseEOW = $20824 +_EraseRectBorder = $21248 +_ErrAB_BLANK = $2120C +_ErrAC_BLANK = $21210 +_ErrArgument = $20758 +_ErrBadGuess = $20780 +_ErrBreak = $20770 +_Errd_OP1_0 = $204E4 +_Errd_OP1_le_0 = $204E0 +_Errd_OP1not_r = $204D8 +_Errd_OP1notpos = $204D4 +_Errd_OP1notposint = $204DC +_ErrDataType = $20754 +_Errdimension = $20760 +_ErrdimmIsmatch = $2075C +_ErrDivby0 = $2073C +_ErrDomain = $20744 +_ErrEnd = $20FA4 +_ErrIncrement = $20748 +_Errinvalid = $2076C +_ErrIterations = $2077C +_ErrLinkXmit = $2078C +_ErrMemory = $20768 +_Errnon_Real = $2074C +_ErrnotEnoughMem = $2072C +_ErrorEP = $20184 +_ErrOverflow = $20738 +_ErrSignchange = $20778 +_ErrSingularMat = $20740 +_ErrStat = $20774 +_ErrStatPlot = $20788 +_ErrSyntax = $20750 +_ErrTolTooSmall = $20784 +_Errundefined = $20764 +_EToX = $20218 +_EvalF3A = $20AA4 +_exch9 = $20638 +_ExecClass3Token = $21554 +_ExecClassCToken = $21550 +_ExecuteNewPrgm = $210E8 +_ExecutePrgm = $21348 +_ExLP = $20400 +_exmcplxo1 = $20634 +_ExMeanL = $20980 +_ExpToHex = $2043C +_fClear = $20AD0 +_fDel = $20ACC +_FDispBOL = $20D64 +_FDispBOL1 = $20D60 +_FDispEOL = $2088C +_FDiv10 = $20458 +_FDiv100 = $20454 +_FetchVar = $20FCC +_FetchVarA = $20FC8 +_FillRect = $21220 +_FillRectPattern = $2124C +_FIND_E_UNDEF = $21018 +_Find_parse_Formula = $20F74 +_FINDEOL = $21020 +_FindGroUpSym = $2148C +_FindProgSym = $20508 +_FindSym = $20510 +_FindSym_Get_size = $204E8 +_FinIshOutPut = $208A0 +_fInsDisp = $20AD4 +_fInsDisp02 = $20AD8 +_FiveExec = $209A0 +_FlashWriteDisable = $213AC +_FNDSELEQ = $210A4 +_forcecmd = $21140 +_ForceFullScreen = $21528 +_ForceSmallEditReturn2 = $21178 +_FourExec = $2099C +_FPAdd = $201C0 +_FPDiv = $201F4 +_FPMult = $201D8 +_fpopcplx = $205E4 +_fpopFPS = $205EC +_fpopReal = $205E8 +_FPRecip = $201F0 +_FPSminus9 = $20730 +_FPSquare = $201D4 +_FPSub = $201BC +_Frac = $201EC +_GDISPTOKEN = $20BB4 +_GeqNamea = $207AC +_Get_Form_Num = $20584 +_Get_NumKey = $21148 +_Get_Tok_Strng = $20870 +_Get_x_Indirect = $204F8 +_GetAsmSize = $21340 +_GetBaseVer = $21120 +_GetBCOffSetIX = $21520 +_GetBytePaged_Unpaged = $213B4 +_GetCatalogItem = $214DC +_GetCharWidth = $D203BF +_GetCharWidth_ASM = $D203CC +_GetColorValue = $21BAC +_GetCon = $20428 +_GetCon1 = $20424 +_GetCSC = $2014C +_GetCSC_HL = $21D3C +_GetCurloc = $2082C +_GETDEPTR = $20FFC +_GetExp = $2046C +_GetK = $20AA8 +_GetKey = $20D8C +_getKeyHook = $213E0 +_GetKeypress = $20868 +_GetKeyRetOff = $21488 +_Getl1ToOP1 = $20938 +_Getl1ToOP2 = $20944 +_Getl1TOP1A = $2093C +_Getl1TOP2A = $20948 +_Getl2TOP1A = $2094C +_GetLastEntry = $204B0 +_GetLastEntryPtr = $204B4 +_GetlToOP1 = $20940 +_Getm1toOP1 = $2090C +_Getm1tOP1A = $20910 +_GetmatOP1A = $20908 +_GetMenuKeypress = $214D8 +_GetmtoOP1 = $20914 +_GETPARSE = $20F0C +_GetPrevTok = $20D88 +_GetStatPtr = $20F20 +_GetStringInput = $21320 +_GetStringInput2 = $21324 +_GetStringWidth = $D203A7 +_GetSysInfo = $21558 +_GetTextX = $D20234 +_GetTextY = $D20239 +_GetTokLen = $2086C +_GetTokString = $20874 +_GrBufClr = $2109C +_GRBUFCPY_V = $210A0 +_GRDECODA = $20BB8 +_GRLABELS = $20BC8 +_GRPUTAWAY = $20BDC +_GrRedisp = $20BB0 +_GRReset = $20BE4 +_HideCursor = $208AC +_HLminus5 = $2152C +_HLminus9 = $20734 +_HLTimes9 = $20274 +_HomeUp = $20828 +_HorizCmd = $20C7C +_HorizontalLine = $2132C +_HtimesL = $20470 +_IBounds = $2110C +_ILine = $20B78 +_ILineNoGraphicsHook = $214B4 +_ILineNoHook = $214B8 +_IncCurPCErrEnd = $20FA0 +_Incexp = $20464 +_INCFETCH = $21028 +_IncO1exp = $20460 +_Initialize = $20194 +_INITNSEQ = $20C64 +_InitNumVec = $20B04 +_InitPFlgs = $20F14 +_initsmalleditline = $21154 +_InpArg = $20FB8 +_InsDisp = $20D5C +_InsertMem = $20514 +_InsertMema = $20518 +_Int = $20204 +_intErrUptHandler = $2010C +_Intgr = $201A4 +_InvCmd = $20CA8 +_InvertNonReal = $21390 +_InvertRect = $2121C +_InvOP1S = $201E4 +_InvOP1Sc = $201E0 +_InvOP2S = $201E8 +_InvSub = $201AC +_IOffset = $21110 +_IPoint = $20B7C +_Is_A_LstoRcLst = $204C8 +_Is_FullCntx = $208FC +_Isa2ByteTok = $204AC +_IsAtBtm = $20D38 +_IsAtTOP = $20D34 +_IsEditEmpty = $20D30 +_IsEditFull = $20D2C +_IsInSet = $207A8 +_IsO1nonTempLst = $204C4 +_IsO1nonTLstorProg = $204C0 +_JCursorFirst = $20D40 +_JCursorLast = $20D44 +_JCursorRight = $20D4C +_JCursorUp = $20D50 +_JError = $20790 +_JErrorNo = $2012C +_JForceCmd = $20164 +_JForceCmdNoChar = $20160 +_JForceGraphKey = $21480 +_JForceGraphNoKey = $2147C +_JForceWIndowSettings = $21430 +_JpromptCursor = $20CF4 +_JursorDown = $20D54 +_JursorLeft = $20D48 +_KBDscan = $20148 +_KeyToString = $208B8 +_kskip = $D1A9A4 +_kskip2 = $D1A9B9 +_kskip3 = $D1A9F4 +_kskip4 = $D1A9FD +_kskip5 = $D1A9CE +_kskip6 = $D1A9E3 +_LABCOOR = $20BBC +_LdHLInd_s = $20138 +_LeftMore = $20AC8 +_LHigh = $20960 +_LineCmd = $20C84 +_LjnoRnd = $20214 +_LjRnd = $201DC +_LLow = $2095C +_LnX = $2020C +_Load_Sfont = $20AFC +_LoadCurcat = $208C4 +_loaddeInd = $21DA0 +_loaddeInd_s = $21D9C +_LoadDEIndPaged_Unpaged = $21490 +_LoadMenuNum = $208CC +_LoadMenuNuml = $208D0 +_LoadPattern = $21164 +_LogX = $20210 +_LSum = $20964 +_MakeRowCmd = $20890 +_MantPa = $203C0 +_Mat_EL_Div = $20924 +_Max = $2019C +_Max_ASM = $D2041A +_MaxMinLst = $20958 +_MemChk = $204FC +_MemClear = $210DC +_MemSet = $210E0 +_MenCatRet = $208D8 +_Menucatcommon = $208C0 +_MenuEdKey = $208D4 +_Min = $20198 +_Min_ASM = $D20427 +_Minus1 = $201B8 +_Mon = $20154 +_MonErrHand = $2018C +_MonForceKey = $20158 +_Mov10b = $202F8 +_Mov11b = $202F4 +_mov11toOP1 = $22074 +_Mov18b = $20B70 +_Mov7b = $20308 +_Mov7b_duplicate = $2030C +_Mov8b = $20304 +_Mov9b = $202FC +_Mov9b_duplicate = $20300 +_mov9OP1OP2 = $20324 +_Mov9OP2cp = $2028C +_mov9toOP1 = $20320 +_mov9toOP2 = $20328 +_movcplx = $205B8 +_MoveDown = $207F4 +_MoveUp = $20800 +_movfrOP1 = $2032C +_NameToBuf = $20CF0 +_NameToOP1 = $20AEC +_Ncifprgmedmode = $208C8 +_NDeriv = $21474 +_NEDXT_Y_STYLE = $210AC +_negbc = $21DA8 +_negde = $21DAC +_NewContext = $2016C +_NewContext0 = $20170 +_NEWINDEP = $210B4 +_NewLine = $207F0 +_nmihandler = $220A8 +_noErrorEntry = $20794 +_NotAlphNum = $208DC +_NumError02 = $20AF8 +_NumError02_2 = $216A4 +_NumpPutAway = $20AF0 +_NumReDisp = $20AF4 +_NxtFetch = $20FC0 +_OP1exOP2 = $203FC +_OP1exOP3 = $203F4 +_OP1exOP4 = $203F8 +_OP1exOP5 = $203E4 +_OP1exOP6 = $203E8 +_OP1expmDE = $204A4 +_OP1expToDec = $20440 +_OP1mOP2exp = $204A0 +_OP1Set0 = $2037C +_OP1Set1 = $2034C +_OP1Set2 = $2035C +_OP1Set3 = $20354 +_OP1Set4 = $20350 +_OP1ToOP2 = $202BC +_OP1ToOP3 = $202AC +_OP1ToOP4 = $2029C +_OP1ToOP5 = $202EC +_OP1ToOP6 = $202E8 +_OP2exOP4 = $203EC +_OP2exOP5 = $203F0 +_OP2exOP6 = $203DC +_OP2Set0 = $20378 +_OP2Set1 = $20364 +_OP2Set2 = $20360 +_OP2Set3 = $20348 +_OP2Set4 = $20344 +_OP2Set5 = $2033C +_OP2Set60 = $20F1C +_OP2Set8 = $20338 +_OP2Seta = $20340 +_OP2ToOP1 = $202F0 +_OP2toOP3 = $20310 +_OP2ToOP4 = $202A0 +_OP2ToOP5 = $202E0 +_OP2ToOP6 = $202E4 +_OP3Set0 = $20374 +_OP3Set1 = $20334 +_OP3Set2 = $20358 +_OP3ToOP1 = $202D0 +_OP3ToOP2 = $202A8 +_OP3ToOP4 = $20298 +_OP3ToOP5 = $202DC +_OP4Set0 = $20370 +_OP4Set1 = $20330 +_OP4toOP1 = $202C8 +_OP4ToOP2 = $202A4 +_OP4toOP3 = $20314 +_OP4ToOP5 = $202D8 +_OP4toOP6 = $2031C +_OP5exOP6 = $203E0 +_OP5Set0 = $2036C +_OP5ToOP1 = $202CC +_OP5ToOP2 = $202B0 +_OP5toOP3 = $20318 +_OP5ToOP4 = $202B8 +_OP5ToOP6 = $202B4 +_OP6ToOP1 = $202C4 +_OP6ToOP2 = $202C0 +_OP6ToOP5 = $202D4 +_OSSize = $20104 +_PagedGet_Unpaged = $21498 +_PARSAHEAD = $20FF0 +_ParsaHeads = $20FEC +_parse_Formula = $20F78 +_ParseAndStoreSysVar = $21428 +_ParseCmd = $20F90 +_parseEditBuf = $20CBC +_ParseInp = $20F00 +_Parseoff = $20F04 +_ParseOn = $20F8C +_ParseOnc = $20F88 +_ParsePrgmName = $21350 +_PARSESCAN = $20F08 +_PdspGrph = $20C78 +_PICON = $20438 +_PIDiv2 = $2042C +_PIDiv4 = $20430 +_PixelCmd = $20C94 +_PixelTest = $20C90 +_PLOTPT = $210B0 +_Plus1 = $201B4 +_PointCmd = $20C8C +_PointOn = $210E4 +_PolarDerivative = $21478 +_POP2BOPER = $21008 +_POP3BOPER = $2100C +_popErrorhandler = $2079C +_popErrorhandler_2 = $21C7C +_popmcplx = $205B4 +_popmcplxo1 = $205B0 +_popOP1 = $205C4 +_popOP3 = $205C0 +_popOP5 = $205BC +_POPOPER = $21014 +_popReal = $205E0 +_popRealo1 = $205DC +_popRealo2 = $205D8 +_popRealo3 = $205D4 +_popRealo4 = $205D0 +_popRealo5 = $205CC +_popRealo6 = $205C8 +_PosNo0Int = $20410 +_PowerOff = $21484 +_PPutAway = $20178 +_PPutawayPrompt = $20174 +_Prgrdlp = $20F80 +_PrintChar = $D20273 +_PrintChar_ASM = $D2027D +_PrintInt = $D2037F +_PrintLargeFont_ASM = $D202EC +_PrintUInt = $D2031A +_PrintUInt_ASM = $D20327 +_PToR = $2026C +_PullDownChk = $208BC +_PUSH2BOPER = $21000 +_PUSH3BOPER = $21004 +_PushErrorhandler = $20798 +_Pushmcplx = $20630 +_Pushmcplxo1 = $2062C +_Pushmcplxo3 = $20624 +_PushNum = $20F9C +_PushOP1 = $20628 +_PushOP3 = $20620 +_PushOP5 = $2061C +_PUSHOPER = $21010 +_PushReal = $20618 +_PushRealo1 = $20614 +_PushRealo2 = $20610 +_PushRealo3 = $2060C +_PushRealo4 = $20608 +_PushRealo5 = $20604 +_PushRealo6 = $20600 +_PutAns = $210CC +_PutAway = $2017C +_Putbpat = $20880 +_Putbpatbuf = $2087C +_Putbpatbuf2 = $20878 +_Putbuf = $207D0 +_Putbuf1 = $207D4 +_Putc = $207B8 +_PutcChkScroll = $20884 +_PUTEQUNO = $20C74 +_Putmap = $207B4 +_Putps = $207C8 +_Putpsb = $207C4 +_Puts = $207C0 +_PutSM = $20CC0 +_PutTokString = $20D74 +_PutToL = $20954 +_PutTola1 = $20950 +_Puttom1a = $20918 +_Puttoma1 = $2091C +_PutToMat = $20920 +_PutXY = $20C70 +_RandInit = $21038 +_Random = $21030 +_Rcl_StatVar = $204F0 +_RclAns = $20F50 +_RclN = $20F58 +_RclsyStok = $20F64 +_RclVarSym = $20F60 +_RclX = $20F5C +_RclY = $20F54 +_RealName = $20494 +_RecallEd = $20AB4 +_RecName = $207B0 +_ReCurnName = $20484 +_RegEqName = $20480 +_RegRclrChng = $204B8 +_ReleaseBuffer = $20AE4 +_ReleaseSedit = $21150 +_ResetStacks = $2103C +_ResetWinTop = $204BC +_ReStoreErrNo = $20998 +_RestoreLCDBrightness = $21AB8 +_RestoreLCDBrightness_2 = $21ABC +_RestorePenCol = $2116C +_ret_1 = $20EB4 +_ret_2 = $211F0 +_ret_3 = $21214 +_ret_4 = $21C54 +_ret_5 = $2208C +_RName = $2047C +_RndGuard = $201FC +_Rnfx = $20200 +_Round = $20208 +_RowEch_Poly = $2092C +_RowEchelon = $20930 +_rst10Handler = $20110 +_rst18Handler = $20114 +_rst20Handler = $20118 +_rst28Handler = $2011C +_rst30Handler = $20120 +_RSTGFLAGS = $20BE0 +_RStrbotrow = $20864 +_RStrCurrow = $2085C +_RStrpartial = $20858 +_RStrShadow = $20854 +_RStrundermenu = $20860 +_RToD = $201C8 +_RTOP = $20270 +_RunCatalog1Hook = $214E4 +_RunCatalog2Hook = $214E0 +_RunCursorHook = $213B8 +_RunGraphingHook = $21464 +_RunIndicoff = $20848 +_RunIndicon = $20844 +_RunLibraryHook = $213BC +_RunLocalizeHook = $22098 +_RunRawkeyHook = $213C0 +_RunTraceHook = $21470 +_SaveCmdShadow = $2084C +_SAVEPARSE = $20F10 +_SaveShadow = $20850 +_ScrollDown = $20804 +_ScrollUp = $207F8 +_SendKPress = $2015C +_SeqSet = $20970 +_SeqSolve = $20974 +_set2IY34 = $2113C +_Set2MVLPtrs = $20984 +_SetAllPlots = $2143C +_SetAppChangeHook = $214A4 +_Setatobcu = $21D54 +_Setatodeu = $21D58 +_Setatohlu = $21D5C +_Setbcuto0 = $21D84 +_Setbcutoa = $21D60 +_Setbcutob = $21D64 +_SetCatalog1Hook = $214C4 +_SetCatalog2Hook = $213E8 +_SetCursorHook = $213C4 +_SetCustomFontData = $D203EA +_SetCustomFontSpacing = $D203FD +_SetcxReDispHook = $214F8 +_Setdeuto0 = $21D88 +_Setdeutoa = $21D68 +_Setdeutob = $21D6C +_SetEmptyeditEqu = $20D7C +_SetEmptyEditPtr = $20D80 +_SetEStoFPS = $20498 +_SetFontHook = $21454 +_SetFullScreenClipping_ASM = $D2047E +_SetFuncMode = $21C6C +_SetGetKeyHook = $213CC +_SetGraphicsHook = $214AC +_SetGraphModeHook = $21420 +_SetHelpHook = $214CC +_Sethluto0 = $21D8C +_Sethlutoa = $21D70 +_Sethlutob = $21D74 +_SetHomescreenHook = $21410 +_SetIgnoreKey = $2112C +_SetIndicator = $20ADC +_SetLibraryHook = $213C8 +_SetLocalizeHook = $213F0 +_SetLocDEtoFP0 = $21124 +_SetMat1 = $20988 +_SetMenuHook = $21518 +_SetMonospaceFont = $D20410 +_SetNum0 = $20380 +_SetNumWIndow = $207EC +_SetParserHook = $2149C +_setPenT = $210C4 +_setPenX = $210BC +_setPenY = $210C0 +_SetRegraphHook = $2145C +_SetSendThIsKeyBack = $21130 +_SetSilentLinkHook = $21544 +_SetTblGraphDraw = $210D8 +_settblrefs = $20CD0 +_SetTextBGcolor = $21AE8 +_SetTextBGColorC = $D2023E +_SetTextFGBGcolors = $21AE4 +_SetTextFGColorC = $D20249 +_SetTextTransparentColorC = $D20254 +_SetTextXY = $D2025F +_SetTitle = $20AAC +_SetTokenHook = $213F8 +_SetTraceHook = $21468 +_SetUpBuffer = $20AB8 +_SetUpEditCmd = $20D78 +_SetUpEditEqu = $20D24 +_SetUpPagedPtr_Unpaged = $21494 +_SETUZM = $20C18 +_SETVARNAME = $20898 +_SetWIndowHook = $21418 +_SetXMinMax = $20C28 +_SetxxOP1 = $20B08 +_SetxxOP2 = $20B0C +_SetxxxxOP2 = $20B10 +_SetYeditHook = $21440 +_Sfont_Len = $20B00 +_SGetTokString = $21160 +_ShadeCmd = $20CA4 +_Shl14 = $203B4 +_Shl16 = $203B0 +_ShlACC = $2039C +_ShowCursor = $208B4 +_Shr14 = $203AC +_Shr16 = $203A8 +_Shr18 = $203A0 +_Shr18a = $203A4 +_ShrACC = $20398 +_ShrdRnd = $203BC +_ShrinkWIndow = $207FC +_SignedCompare_ASM = $D20477 +_signextendbc = $21D78 +_signextendde_broken = $21D7C +_signextendhl_broken = $21D80 +_Sin = $20224 +_SinCosRad = $20220 +_Sinh = $2023C +_SinhCosh = $20230 +_SizeWInd = $20180 +_SqRoot = $201F8 +_SquishPrgm = $21344 +_Srdo1 = $203B8 +_SStringLength = $21168 +_startsmalledit = $21158 +_STATSHADE = $20CAC +_StEQArg = $20FB4 +_StEQArg2 = $20FB0 +_StEQArg3 = $20FBC +_StLstvecel = $20F6C +_StMatel = $20F68 +_Sto_StatVar = $204EC +_StoAns = $20F30 +_STOCMPREALS = $20FF8 +_StoN = $20F40 +_StoOther = $20F4C +_StoR = $20F38 +_StoRand = $21034 +_StoSyStok = $20F2C +_StoT = $20F44 +_StoTheta = $20F34 +_StoType = $20F94 +_StoTypeArg = $20FDC +_StoX = $20F48 +_StoY = $20F3C +_Strcat_ez80 = $207A4 +_StrCmpre = $21DB0 +_StrcOPy = $207A0 +_StrLength = $210EC +_StrngEnt1 = $20F7C +_STTMPEQ = $2101C +_Sub14d = $203D8 +_Sub16d = $203D4 +_swapHLendian = $21DC0 +_Sym_Prog_non_t_Lst = $205A0 +_SysErrHandler = $20168 +_Tan = $2022C +_TAN_EQU_DISP = $210C8 +_Tanh = $20234 +_TanLnF = $20C98 +_TBLTRACE = $20CE4 +_TenX = $2021C +_TenX_NoClr = $21560 +_ThetaName = $20478 +_ThreeExec = $20994 +_Times2String = $201B0 +_TimesPT5 = $201D0 +_TMPEQUNOSRC = $20BC4 +_TName = $20490 +_ToFrac = $2096C +_totoStrp = $20894 +_TraceOff = $20BAC +_TRunc = $201A8 +_TWOPI = $20434 +_uCLines = $20B14 +_Unknown = $21244 +_Unknown_2 = $21240 +_Unknown_3 = $21254 +_Unknown_4 = $21258 +_UnLineCmd = $20C88 +_UnopExec = $20990 +_VALCUR = $20BD8 +_VarEnt = $20F84 +_VarNameToOP1HL = $20AE8 +_VarSYSADR = $20F28 +_VertCmd = $20C80 +_VPutBlank = $20CE0 +_vPutmap = $20830 +_VPutMapRec = $210F0 +_vPuts = $20834 +_vPutsn = $20838 +_vPutsng = $2083C +_vPutsnt = $20840 +_VtoWHLDE = $20B9C +_WaitEnterKeyValue = $21328 +_wDispEOL = $207E4 +_wHomeUp = $207E8 +_wPutc = $207D8 +_wPutps = $207CC +_wPuts = $207DC +_wPutsEOL = $207E0 +_WTOV = $20B98 +_XftoI = $20BA8 +_Xitof = $20BA0 +_xmax = $D209EB +_xmin = $D209E5 +_XName = $20488 +_XPIXSET = $20BD0 +_XrootY = $20B20 +_XYCENT = $20BE8 +_XYRND = $20B84 +_XYRNDBOTH = $20B80 +_YftoI = $20BA4 +_ymax = $D209EE +_ymin = $D209E8 +_YName = $2048C +_YPIXSET = $20BCC +_YRes = $20C68 +_YtoX = $20B24 +_Zero16d = $20368 +_ZeroOP = $20390 +_ZeroOP1 = $20384 +_ZeroOP2 = $20388 +_ZeroOP3 = $2038C +_ZeroTemplate = $20CCC +_ZmDecml = $20C0C +_ZmFit = $20C1C +_ZmInt = $20C08 +_ZmPrev = $20C10 +_ZmSquare = $20C20 +_ZmTrig = $20C24 +_ZmUsr = $20C14 +_ZooDefault = $20C2C +_ZOOMXYCMD = $20BEC +allowProgTokens = $0001 +alt_Off = $0001 +alt_On = $0000 +ansFlags = $0001 +AnsScroll = $0003 +apdAble = $0002 +apdFlags = $0008 +apdFlagsLoc = $D00088 +apdRunning = $0003 +apdSubTimer = $D00590 +apdTimer = $D00591 +apdWarmStart = $0004 +APIFlg = $0028 +apiFlg2 = $0029 +apiFlg3 = $002A +apiFlg4 = $002B +appAllowContext = $0000 +appAutoScroll = $0002 +appAutoScrollF = $0004 +appChangeHookActive = $0002 +appChangeHookPtr = $D025FC +appCurGraphic = $0005 +appCurGraphicF = $0020 +appCurWord = $0006 +appCurWordF = $0040 +appData = $D00429 +append = $0059 +appExit = $0007 +appExitF = $0080 +appFlags = $000D +appLockMenus = $0004 +appLockMenusF = $0010 +appLwrCaseFlag = $0024 +appMenus = $0003 +appMenusF = $0008 +AppObj = $0014 +appRetKeyOff = $0007 +appRunning = $0004 +appStart = $0040 +appTextSave = $0001 +appTextSaveF = $0002 +AppVarObj = $0015 +appWantIntrpt = $0000 +appWantIntrptF = $0001 +arcFlag = $0024 +asm_Flag1 = $0021 +asm_Flag2 = $0022 +asm_Flag3 = $0023 +asm_prgm_size = $D0118C +autoCalc = $0005 +autoFill = $0004 +BackupObj = $0013 +batteriesGood = $0002 +batteryFlags = $0016 +begPC = $D02317 +bPLinkOn = $0004 +BRACKS = $0006 +brightness = $D0058F +bufferOnly = $0000 +cal_FV = $D01F9B +cal_I = $D01F80 +cal_N = $D01F77 +cal_PMT = $D01F92 +cal_PV = $D01F89 +cal_PY = $D01FA4 +CALL = $D1B658 +catalog1HookActive = $0003 +catalog1HookPtr = $D025FF +catalog2HookActive = $0006 +catalog2HookPtr = $D0260B +cellOverride = $0001 +Char000 = $D205E5 +Char001 = $D205ED +Char002 = $D205F5 +Char003 = $D205FD +Char004 = $D20605 +Char005 = $D2060D +Char006 = $D20615 +Char007 = $D2061D +Char008 = $D20625 +Char009 = $D2062D +Char010 = $D20635 +Char011 = $D2063D +Char012 = $D20645 +Char013 = $D2064D +Char014 = $D20655 +Char015 = $D2065D +Char016 = $D20665 +Char017 = $D2066D +Char018 = $D20675 +Char019 = $D2067D +Char020 = $D20685 +Char021 = $D2068D +Char022 = $D20695 +Char023 = $D2069D +Char024 = $D206A5 +Char025 = $D206AD +Char026 = $D206B5 +Char027 = $D206BD +Char028 = $D206C5 +Char029 = $D206CD +Char030 = $D206D5 +Char031 = $D206DD +Char032 = $D206E5 +Char033 = $D206ED +Char034 = $D206F5 +Char035 = $D206FD +Char036 = $D20705 +Char037 = $D2070D +Char038 = $D20715 +Char039 = $D2071D +Char040 = $D20725 +Char041 = $D2072D +Char042 = $D20735 +Char043 = $D2073D +Char044 = $D20745 +Char045 = $D2074D +Char046 = $D20755 +Char047 = $D2075D +Char048 = $D20765 +Char049 = $D2076D +Char050 = $D20775 +Char051 = $D2077D +Char052 = $D20785 +Char053 = $D2078D +Char054 = $D20795 +Char055 = $D2079D +Char056 = $D207A5 +Char057 = $D207AD +Char058 = $D207B5 +Char059 = $D207BD +Char060 = $D207C5 +Char061 = $D207CD +Char062 = $D207D5 +Char063 = $D207DD +Char064 = $D207E5 +Char065 = $D207ED +Char066 = $D207F5 +Char067 = $D207FD +Char068 = $D20805 +Char069 = $D2080D +Char070 = $D20815 +Char071 = $D2081D +Char072 = $D20825 +Char073 = $D2082D +Char074 = $D20835 +Char075 = $D2083D +Char076 = $D20845 +Char077 = $D2084D +Char078 = $D20855 +Char079 = $D2085D +Char080 = $D20865 +Char081 = $D2086D +Char082 = $D20875 +Char083 = $D2087D +Char084 = $D20885 +Char085 = $D2088D +Char086 = $D20895 +Char087 = $D2089D +Char088 = $D208A5 +Char089 = $D208AD +Char090 = $D208B5 +Char091 = $D208BD +Char092 = $D208C5 +Char093 = $D208CD +Char094 = $D208D5 +Char095 = $D208DD +Char096 = $D208E5 +Char097 = $D208ED +Char098 = $D208F5 +Char099 = $D208FD +Char100 = $D20905 +Char101 = $D2090D +Char102 = $D20915 +Char103 = $D2091D +Char104 = $D20925 +Char105 = $D2092D +Char106 = $D20935 +Char107 = $D2093D +Char108 = $D20945 +Char109 = $D2094D +Char110 = $D20955 +Char111 = $D2095D +Char112 = $D20965 +Char113 = $D2096D +Char114 = $D20975 +Char115 = $D2097D +Char116 = $D20985 +Char117 = $D2098D +Char118 = $D20995 +Char119 = $D2099D +Char120 = $D209A5 +Char121 = $D209AD +Char122 = $D209B5 +Char123 = $D209BD +Char124 = $D209C5 +Char125 = $D209CD +Char126 = $D209D5 +Char127 = $D209DD +CharSpacing_ASM = $D2053F +checkBatteryLevelFirst = $0000 +checkCatalog2HookVer = $0003 +ChiStat = $750A7C4 +CListObj = $000D +clockFlags = $003F +clockOn = $0006 +cmdFlags = $000C +cmdPixelShadow = $D07396 +cmdShadow = $D0232D +cmdVirgin = $0005 +cmp_mod_box = $0006 +CMPS = $006A +comFailed = $0001 +contextFlags = $0025 +Corr = $D01221 +CplxObj = $000C +CubeD = $D01260 +curAble = $0002 +curCol = $D00596 +curFlags = $000C +curLock = $0004 +curOffset = $D00597 +curOn = $0003 +curPC = $D0231A +currDrawBuffer = $E30014 +curRow = $D00595 +cursorHookActive = $0007 +cursorHookPtr = $D025D5 +curTime = $D00594 +curUnder = $D00598 +curXRow = $D0059C +curY = $D00599 +customFont = $0007 +cxCmd = $0040 +cxDefMem = $004F +cxEquEdit = $0049 +cxErase = $004D +cxError = $0052 +cxextapps = $0058 +cxFormat = $0057 +cxGraph = $0044 +cxGroup = $0059 +cxGrRange = $0048 +cxGrZfact = $0051 +cxInfStat = $0056 +cxLinkIO = $0041 +cxMatEdit = $0042 +cxMem = $004E +cxMode = $0045 +cxNewApps = $0059 +cxPrgmCreate = $0047 +cxPrgmEdit = $0046 +cxPrgmInput = $0050 +cxRAMApp = $004C +cxRedispHookActive = $0005 +cxRedispHookPtr = $D02605 +cxSolveRoot = $0054 +cxSolveTVM = $0053 +cxStatEdit = $0043 +cxStatPlot = $0055 +cxTableEditor = $004A +cxTableSet = $004B +cxUnGroup = $005A +dBKeyFlags = $003D +DCONV = $0001 +DefaultCharSpacing_ASM = $D20545 +DefaultTextData_ASM = $D205E5 +DELTA = $1000 +DELTAXt = $0026 +DELTAYt = $0027 +DF = $750A7D6 +DI_Cntrl = $F50004 +DI_Int = $F50008 +DI_IntMask = $F5000C +DI_Mode = $F50000 +displayClock = $0005 +doneFlags = $0000 +donePrgm = $0005 +drawBGColor = $D026AA +drawColorCode = $D026AE +drawFGColor = $D026AC +drawingHookActive = $0007 +dzx7t_copy_byte_loop = $D1C57A +dzx7t_exit = $D1C5DC +dzx7t_len_size_loop = $D1C58D +dzx7t_len_value_loop = $D1C59A +dzx7t_len_value_start = $D1C5A6 +dzx7t_main_loop = $D1C57C +dzx7t_offset_end = $D1C5D3 +E_AppErr1 = $00AB +E_AppErr2 = $00AC +E_Application = $00AA +E_ArchFull = $0031 +E_Archived = $00AF +E_Argument = $008A +E_BadAdd = $002E +E_BadGuess = $009A +E_Bound = $0091 +E_Break = $0086 +E_DataType = $0089 +E_DF = $001B +E_Dimension = $008C +E_DimMismatch = $008B +E_DivBy0 = $0082 +E_Domain = $0084 +E_Duplicate = $00B3 +E_EDIT = $0080 +E_EDITF = $0007 +E_ExpiredApp = $002D +E_GraphRange = $0092 +E_IdNotFound = $0026 +E_IllegalNest = $0090 +E_Increment = $0085 +E_Invalid = $008F +E_Iterations = $0099 +E_Label = $0014 +E_Length = $00A9 +E_LnkDupErr = $00A2 +E_LnkErr = $009F +E_LnkMemErr = $00A0 +E_LnkMemFull = $00A3 +E_LnkTransErr = $00A1 +E_Mask = $007F +E_Memory = $008E +E_Mode = $009E +E_MS = $002D +E_NoMode = $00A7 +E_NonReal = $0087 +E_Overflow = $0081 +E_Reserved = $009D +E_Scale = $00A5 +E_SignChange = $0098 +E_Singularity = $0097 +E_SingularMat = $0083 +E_Solver = $0096 +E_SS = $0024 +E_Stat = $0015 +E_StatPlo = $001B +E_Syntax = $0088 +E_TolTooSmall = $009C +E_Undefined = $008D +E_Unknown = $00A4 +E_Validation = $0028 +E_Variable = $00B2 +E_Version = $0030 +E_Zoom = $0093 +EchoStart = $007F +echoStart1 = $005A +echoStart2 = $0069 +editFlags = $0001 +editOpen = $0002 +enableKeyEcho = $0005 +enableQueue = $0007 +endPC = $D0231D +EOSSTART = $0000 +EquObj = $0003 +errNo = $D008DF +errSP = $D008E0 +EulerAngle = $D20A6D +extraHookFlags = $003E +extraIndic = $0000 +F_DF = $0000 +F_MS = $0012 +F_SS = $0009 +FALSE = $0000 +fin_CY = $D01F6E +fin_FV = $D01F5C +fin_I = $D01F41 +fin_N = $D01F38 +fin_PMT = $D01F53 +fin_PV = $D01F4A +fin_PY = $D01F65 +FINCYt = $0031 +FINFVt = $002F +FINIt = $002C +FINNt = $002B +FINPMTt = $002E +FINPVt = $002D +FINPYt = $0030 +flags = $D00080 +fmtBaseMask = $001C +fmtBaseShift = $0002 +fmtBin = $0004 +fmtEdit = $0000 +fmtEditFlags = $000C +fmtEng = $0001 +fmtExponent = $0000 +fmtFlags = $000A +fmtHex = $0002 +fmtOct = $0003 +fmtOverride = $000B +fmtPolar = $0007 +fmtReal = $0005 +fmtRect = $0006 +fontFlags = $0032 +fontHookActive = $0005 +fontHookPtr = $D025ED +FPLEN = $0009 +FPS = $D0258D +FPSbase = $D0258A +fracDrawLFont = $0002 +fracTallLFont = $0003 +FStat = $750A7CD +fullScrnDraw = $0002 +g_style_active = $0005 +GDBObj = $0008 +getCSCHookActive = $0000 +getKeyHookPtr = $D025DE +getSendFlg = $0024 +GFMT = $0000 +graphCursor = $0002 +graphDraw = $0000 +graphFlags = $0003 +graphFlags2 = $001F +graphHookActive = $0003 +graphHookPtr = $D025E7 +graphicsHookPtr = $D025F3 +GRCMDS = $0084 +grfDBFlags = $0004 +grfDot = $0000 +grfExpr = $0000 +grfFuncM = $0004 +grfGrid = $0002 +grfLabel = $0006 +grfModeFlags = $0002 +grfNoAxis = $0005 +grfNoCoord = $0004 +grfParamM = $0006 +grfPolar = $0003 +grfPolarM = $0005 +grfRecurM = $0007 +grfSChanged = $0002 +grfSimul = $0001 +grfSplit = $0000 +grfSplitOverride = $0003 +groupFlags = $0026 +GroupObj = $0017 +helpHookActive = $0004 +helpHookPtr = $D02602 +homescreenHookActive = $0004 +homescreenHookPtr = $D025E1 +hookflags1 = $0033 +hookflags2 = $0034 +hookflags3 = $0035 +hookflags4 = $0036 +IBACK_CULL = $0001 +IDeltaX0 = $D1AB9F +IDeltaX1 = $D1ABB0 +IDeltaY0 = $D1ABA7 +IDeltaY1 = $D1ABB8 +IDis03h = $0004 +IDis82h = $0002 +IDis83h = $0003 +IDis95h = $0001 +ignoreBPLink = $0003 +ILINE = $0002 +ILINE_FAN = $0082 +IMUN = $0012 +inAfternoon = $0003 +inDelete = $0000 +indicFlags = $0012 +indicInUse = $0001 +indicOnly = $0002 +indicRun = $0000 +inGroup = $0001 +interruptFlags = $0016 +ioDelFlag = $0000 +IPOINT = $0001 +IQUADRI = $0004 +IQuaternionDot = $D1B149 +IRasterContinue = $D1ABE6 +IRasterEdge0 = $D1AB14 +IRasterEdge1 = $D1AAE3 +IRasterEdge2 = $D1AB70 +IRasterInverted = $D1ABF5 +IRasterNoEdgeWrite = $D1AAFE +IRasterNoPixel = $D1ABE9 +IRasterRBG8 = $D1ABF7 +IRasterSize1 = $D1AC08 +IRasterSwap0 = $D1AA92 +IRasterSwap1 = $D1AA9C +IRasterSwap2 = $D1AAA1 +IRasterTriangleInner = $D1AB9E +is24Hour = $0002 +ISMC_Code0 = $D1ABAA +ISMC_Code1 = $D1ABBB +isYMDMode = $0001 +ITRIANGLE = $0003 +ITRIANGLE_FAN = $0083 +IValueX1 = $D1AB5F +IValueX2 = $D1AB5B +IValueY1 = $D1AB8E +IVERTEX_BUFFER = $D08000 +k0 = $008E +k1 = $008F +k1PropZInt = $00DA +k1PropZTest = $00D2 +k2 = $0090 +k2PropZInt = $00DB +k2PropZTest = $00D3 +k2SampFTest = $00D5 +k2SampTInt = $00D8 +k2SampTTest = $00D1 +k2SampZInt = $00D9 +k2SampZTest = $00D0 +k3 = $0091 +k4 = $0092 +k5 = $0093 +k6 = $0094 +k7 = $0095 +k8 = $0096 +k83_00End = $0099 +k9 = $0097 +kaAcute = $00A3 +kAbs = $0009 +kACalcOff = $005D +kACalcOn = $005C +kaCaret = $00A5 +kaccent = $00CB +kACos = $00BA +kACosH = $00EA +kAdd = $0080 +kaDier = $00A6 +kAFillOff = $005B +kAFillOn = $005A +kaGrave = $00A4 +kALog = $00C2 +kalpha = $00D0 +kAlphaDown = $0008 +kAlphaEnter = $0006 +kAlphaUp = $0007 +kAnd = $0010 +kAngle = $0039 +kANOVA = $00ED +kAns = $00C5 +kAPost = $0027 +kApp = $0027 +kAppsMenu = $002C +kArchive = $009A +kAreYouSure = $002B +kASin = $00B8 +kASinH = $00E9 +kAsm = $009C +kAsmComp = $009E +kAsmPrgm = $009D +kATan = $00BC +kATanH = $00EB +kAug = $0040 +kAxisOff = $0072 +kAxisOn = $0071 +kBackup = $0013 +kbd0 = $0001 +kbd1 = $0002 +kbd2 = $0002 +kbd2nd = $0020 +kbd3 = $0002 +kbd4 = $0004 +kbd5 = $0004 +kbd6 = $0004 +kbd7 = $0008 +kbd8 = $0008 +kbd9 = $0008 +kbdAdd = $0002 +kbdAlpha = $0080 +kbdApps = $0040 +kbdChs = $0001 +kbdClear = $0040 +kbdComma = $0010 +kbdCos = $0020 +kbdDebncCnt = $D0058B +kbdDecPnt = $0001 +kbdDel = $0080 +kbdDiv = $0010 +kbdDown = $0001 +kbdEnter = $0001 +kbdFlags = $0000 +kbdG1 = $F50012 +kbdG2 = $F50014 +kbdG3 = $F50016 +kbdG4 = $F50018 +kbdG5 = $F5001A +kbdG6 = $F5001C +kbdG7 = $F5001E +kbdGetKy = $D0058D +kbdGraph = $0001 +kbdGraphVar = $0080 +kbdKey = $D0058C +kbdKeyPress = $0004 +kbdLeft = $0002 +kbdLGSC = $D00588 +kbdLn = $0004 +kbdLog = $0008 +kbdLParen = $0010 +kbdMath = $0040 +kbdMode = $0040 +kbdMul = $0008 +kbdPgrm = $0040 +kbdPower = $0020 +kbdPSC = $D00589 +kbdRecip = $0020 +kbdRight = $0004 +kbdRParen = $0010 +kbdScanCode = $D00587 +kbdSCR = $0003 +kbdSin = $0020 +kbdSquare = $0010 +kbdStat = $0080 +kbdStore = $0002 +kbdSub = $0004 +kbdTan = $0020 +kbdTrace = $0002 +kbdUp = $0008 +kbdVars = $0040 +kbdWindow = $0008 +kbdWUR = $D0058A +kbdYequ = $0010 +kbdZoom = $0004 +kbeta = $00D1 +kBinCDF = $00E2 +kBinPDF = $00E1 +kbit0 = $0000 +kbit1 = $0001 +kbit2 = $0001 +kbit2nd = $0005 +kbit3 = $0001 +kbit4 = $0002 +kbit5 = $0002 +kbit6 = $0002 +kbit7 = $0003 +kbit8 = $0003 +kbit9 = $0003 +kbitAdd = $0001 +kbitAlpha = $0007 +kbitApps = $0006 +kbitChs = $0000 +kbitClear = $0006 +kbitComma = $0004 +kbitCos = $0005 +kbitDecPnt = $0000 +kbitDel = $0007 +kbitDiv = $0004 +kbitDown = $0000 +kbitEnter = $0000 +kbitGraph = $0000 +kbitGraphVar = $0007 +kbitLeft = $0001 +kbitLn = $0002 +kbitLog = $0003 +kbitLParen = $0004 +kbitMath = $0006 +kbitMode = $0006 +kbitMul = $0003 +kbitPgrm = $0006 +kbitPower = $0005 +kbitRecip = $0005 +kbitRight = $0002 +kbitRParen = $0004 +kbitSin = $0005 +kbitSquare = $0004 +kbitStat = $0007 +kbitStore = $0001 +kbitSub = $0002 +kbitTan = $0005 +kbitTrace = $0001 +kbitUp = $0003 +kbitVars = $0006 +kbitWindow = $0003 +kbitYequ = $0004 +kbitZoom = $0002 +kBOL = $000E +kBox = $005F +kBoxIcon = $0066 +kBoxPlot = $0065 +kBRSqr = $0095 +kCalc = $003B +kCapA = $009A +kcapAAcute = $009F +kcapACaret = $00A1 +kcapADier = $00A2 +kcapAGrave = $00A0 +kCapB = $009B +kCapC = $009C +kcapCCed = $00C7 +kCapD = $009D +kcapDelta = $00D3 +kCapE = $009E +kcapEAcute = $00A7 +kcapECaret = $00A9 +kcapEDier = $00AA +kcapEGrave = $00A8 +kCapF = $009F +kCapG = $00A0 +kCapH = $00A1 +kCapI = $00A2 +kcapIAcute = $00AF +kcapICaret = $00B1 +kcapIDier = $00B2 +kcapIGrave = $00B0 +kCapJ = $00A3 +kCapK = $00A4 +kCapL = $00A5 +kCapM = $00A6 +kCapN = $00A7 +kcapNTilde = $00C9 +kCapO = $00A8 +kcapOAcute = $00B7 +kcapOCaret = $00B9 +kcapODier = $00BA +kcapOGrave = $00B8 +kcapOmega = $00DE +kCapP = $00A9 +kCapQ = $00AA +kCapR = $00AB +kCapS = $00AC +kcapSigma = $00DA +kCapT = $00AD +kCapU = $00AE +kcapUAcute = $00BF +kcapUCaret = $00C1 +kcapUDier = $00C2 +kcapUGrave = $00C0 +kCapV = $00AF +kCapW = $00B0 +kCapX = $00B1 +kCapY = $00B2 +kCapZ = $00B3 +kCatalog = $003E +kCbRt = $0017 +kcCed = $00C8 +kChar = $0034 +kChi = $00DF +kchi2 = $00E0 +kChiPDF = $008E +kChiTest = $00D4 +kChkRAM = $004C +kChs = $008C +kCircl = $006A +kClDrw = $006B +kClear = $0009 +kClrAllLst = $00CC +kClrHome = $00E4 +kClrLst = $0049 +kClrTbl = $00C4 +kColon = $00C6 +kComma = $008B +kConj = $002F +kConstE = $00A6 +kCONSTeA = $00EF +kCont = $001A +kCoordOff = $006E +kCoordOn = $006D +kCorr = $00BA +kCos = $00B9 +kCosH = $00E7 +kCrossIcon = $0067 +kCube = $0016 +kCubicR = $0019 +kCumSum = $0046 +kDecml = $0060 +kDecPnt = $008D +kDegr = $0026 +kDel = $000A +kDelLast = $00A4 +kDelMem = $004D +kdelta = $00D4 +kDeltaLst = $0047 +kDeltaX = $0093 +kDeltaY = $0092 +kDelVar = $00AA +kDet = $003A +kDF = $00E0 +kDiagOff = $0097 +kDiagOn = $0096 +kdieresis = $00CD +kDim = $003C +kDisp = $00DF +kDispG = $00E0 +kDispT = $00E1 +kDist = $0038 +kDiv = $0083 +kDNormal = $00DC +kDotIcon = $0068 +kDoug = $0028 +kDown = $0004 +kDraw = $002F +kDrawDot = $0070 +kDrawF = $0001 +kDrawInv = $0000 +kDrawLine = $006F +kDRDo = $007C +kDSL = $00D8 +kDT = $00DE +kDXDT = $007B +kDYDT = $007A +kDYDX = $0077 +kE1BT = $0000 +kE2BT = $0069 +kE2BT2 = $0000 +kE2BT2_End = $00FC +kE2BT_End = $00FD +keAcute = $00AB +keCaret = $00AD +keDier = $00AE +kEE = $0098 +keGrave = $00AC +kElse = $00CF +kEnd = $00D3 +kEnter = $0005 +kEOL = $000F +kepsilon = $00D5 +kEquToStrng = $004B +kError = $0052 +kEval = $0075 +kexclamDown = $00CF +kExec = $00DA +kExp = $00C0 +kExpon = $0084 +kExpr = $004D +kExprOff = $00B6 +kExprOn = $00B5 +kExtApps = $0058 +kExtendEcho = $00FE +kExtendEcho2 = $00FC +KeyboardTest = $D1A985 +keyDefaultsF = $0006 +keyExtend = $D0058E +kFAngle = $0031 +kFill = $003D +kFin = $003C +kFinBAL = $0068 +kFinCY = $0060 +kFinDBD = $006F +kFinFFV = $0065 +kFinFI = $0062 +kFinFN = $0064 +kFinFPMT = $0061 +kFinFPV = $0063 +kFinFV = $005E +kFinI = $005B +kFinINT = $006A +kFinIRR = $0067 +kFinN = $005A +kFinNPV = $0066 +kFinPMT = $005D +kFinPMTbeg = $00B3 +kFinPMTend = $00B2 +kFinPRN = $0069 +kFinPV = $005C +kFinPY = $005F +kFinToEff = $006E +kFinToNom = $006D +kFix = $0053 +kFMax = $00F2 +kFMin = $00F1 +kFnInt = $00C8 +kFnIntg = $0078 +kFNOff = $005F +kFNOn = $005E +kFor = $00D0 +kFormat = $0057 +kFPart = $001F +kFPDF = $008F +kFullScreen = $0055 +kgamma = $00D2 +kGarbageC = $00FC +kGCD = $0033 +kGDB0 = $0028 +kGDB1 = $0000 +kGDB2 = $0001 +kGDB3 = $0002 +kGDB4 = $001F +kGDB5 = $0020 +kGDB6 = $0021 +kGDB7 = $0025 +kGDB8 = $0026 +kGDB9 = $0027 +kGeoCDF = $00F3 +kGeoPDF = $00F2 +kGetCalc = $00AB +kGetKey = $00E3 +KGFMax = $007E +KGFMin = $007D +kGoto = $00D6 +kGraph = $0044 +kGraphStyle = $00B4 +kgrave = $00CC +kGridOff = $0074 +kGridOn = $0073 +kHist = $004A +kHoriz = $0072 +kI = $00EE +kiAcute = $00B3 +kiCaret = $00B5 +kIdent = $003E +kiDier = $00B6 +kIf = $00CD +kiGrave = $00B4 +kImag = $0083 +kinfAlt1gt = $007F +kinfAlt1lt = $007E +kinfAlt1ne = $007D +kinfAlt2gt = $0082 +kinfAlt2lt = $0081 +kinfAlt2ne = $0080 +kinfAlt3gt = $0085 +kinfAlt3lt = $0084 +kinfAlt3ne = $0083 +kinfAlt4gt = $0088 +kinfAlt4lt = $0087 +kinfAlt4ne = $0086 +kinfAlt5gt = $008B +kinfAlt5lt = $008A +kinfAlt5ne = $0089 +kinfAlt6gt = $008E +kinfAlt6lt = $008D +kinfAlt6ne = $008C +kinfCalc = $007B +kinfData = $0077 +kinfDraw = $007C +kinfNo = $007A +kInfStat = $0056 +kinfStats = $0078 +kinfYes = $0079 +kInput = $00DD +kInputDone = $003F +kIns = $000B +kInStrng = $004F +kInt = $0020 +kInters = $0076 +kInv = $00B6 +kInvNorm = $00DD +kIPart = $001E +kISG = $00D7 +kKReset = $0026 +kL1 = $0077 +kL1A = $00F3 +kL2 = $0078 +kL2A = $00F4 +kL3 = $0079 +kL3A = $00F5 +kL4 = $007A +kL4A = $00F6 +kL5 = $007B +kL5A = $00F7 +kL6 = $007C +kL6A = $00F8 +kLa = $00E2 +klambda = $00D6 +kLastEnt = $000D +kLb = $00E3 +kLbl = $00D5 +kLblOff = $0076 +kLblOn = $0075 +kLBrace = $00EC +kLBrack = $0087 +kLc = $00E4 +kLCM = $0032 +kLd = $00E5 +kLe = $00E6 +kLeft = $0002 +kLength = $004A +kLf = $00E7 +kLg = $00E8 +kLh = $00E9 +kLi = $00EA +kLine = $006C +kLinkIO = $0041 +kLinRegtTest = $00FA +kList = $003A +kListflag = $0029 +kListName = $007F +kLj = $00EB +kLk = $00EC +kLl = $00ED +kLm = $00EE +kLn = $00BF +kLnkQuit = $0015 +kLo = $00F0 +kLog = $00C1 +kLogistic = $00CD +kLp = $00F1 +kLParen = $0085 +kLq = $00F2 +kLR = $0043 +kLR1 = $0014 +kLRExp = $0044 +kLRLn = $0045 +kLRPwr = $0046 +kLRSqr = $0094 +kLs = $00F4 +kLsmalln = $00EF +kLsmallr = $00F3 +kLstToMat = $0045 +kLt = $00F5 +kLtoTI82 = $0012 +kLu = $00F6 +kLv = $00F7 +kLw = $00F8 +kLx = $00F9 +kLy = $00FA +kLz = $00FB +kMatA = $007D +kMatB = $007E +kMatC = $007F +kMatD = $0080 +kMatE = $0081 +kMatF = $003C +kMatG = $003D +kMath = $0032 +kMatI = $003F +kMatJ = $0040 +kMatRH = $003E +kMatrix = $0037 +kMatrixEd = $0042 +kMatToLst = $0044 +kMax = $0035 +kMaxX = $00C2 +kMaxY = $00EE +kMD = $00C0 +kmDeg = $004E +kMean = $0036 +kMedian = $0037 +kMedMed = $0047 +kMem = $0036 +kmEng = $0051 +kMenu = $00D9 +kmFloat = $0052 +KMGT = $00FB +kMin = $0034 +kMinX = $00BE +kMinY = $0090 +kmNormF = $004F +kModBox = $008A +kMode = $0045 +kmRad = $004D +kmSci = $0050 +kmu = $00D7 +kMul = $0082 +kNCR = $0023 +kNDeriv = $00C7 +kNewApps = $0059 +knMax = $0091 +knMin = $0090 +kNo = $0025 +kNormalPDF = $008C +kNormProb = $008B +kNot = $0013 +kNoWay = $001E +kNPR = $0022 +knTilde = $00CA +koAcute = $00BB +koCaret = $00BD +koDier = $00BE +kOff = $003F +koGrave = $00BC +kOmax = $008C +kOmin = $008B +kOmit = $0019 +kOneVar = $0041 +kOr = $0011 +kOStep = $008D +kOutput = $00E2 +kOverw = $0018 +kOverWAll = $0020 +kParam = $0057 +kPause = $00D4 +kPen = $006D +kphat = $00DF +kphi = $00DD +kPi = $00B5 +kpi2 = $00D8 +kPic0 = $002C +kPic1 = $00A7 +kPic2 = $00A8 +kPic3 = $00A9 +kPic4 = $0022 +kPic5 = $0023 +kPic6 = $0024 +kPic7 = $0029 +kPic8 = $002A +kPic9 = $002B +kPixelChg = $0062 +kPixelOff = $0003 +kPixelOn = $0002 +kPlot1 = $001B +kPlot2 = $001C +kPlot3 = $00F0 +kPlotsOff = $0061 +kPlotsOn = $0060 +kPlotStart = $00E9 +kPlotStep = $00F8 +kPoiCDF = $00E4 +kPoiPDF = $00E3 +kPolar = $0058 +kPolarG = $006B +kPolarM = $00AD +kPrgm = $002D +kPrgmCr = $0047 +kPrgmEd = $0046 +kPrgmInput = $0050 +kProd = $0039 +kPrompt = $00DE +kPrtScr = $00E5 +kPtChg = $006E +kPtOff = $006F +kPtOn = $0070 +kPToRx = $002B +kPToRy = $002C +kPxlTest = $0004 +kQ1 = $00BF +kQ3 = $00C1 +kQuad = $0048 +kQuartR = $001A +kquesDown = $00CE +kQuest = $00CA +kQuit = $0040 +kQuote = $00CB +kR1 = $0019 +kR2 = $001A +kR3 = $001B +kR4 = $001C +kR5 = $001D +kR6 = $001E +kRad = $0025 +kRand = $0021 +kRandBin = $0091 +kRandInt = $0034 +kRandm = $003F +kRandNorm = $0035 +kRBrace = $00ED +kRBrack = $0088 +kRCGDB = $0005 +kRCPic = $0006 +kReal = $0030 +kRealM = $00AC +kRecall = $000C +kRecieve = $0014 +kRecn = $00E8 +kRectG = $006C +kRectM = $00AE +kRecvMBL = $0064 +kRef = $0092 +kRegEq = $00BD +kRename = $0017 +kRepeat = $00D2 +kResetDef = $004F +kResetMem = $004E +kReturn = $00DB +krho = $00D9 +kRight = $0001 +kRoot = $00C9 +kRootG = $0079 +kRound = $001D +kRowPlus = $002E +kRowSwap = $002D +kRParen = $0086 +kRRef = $0093 +kRToPo = $0029 +kRToPr = $002A +kScatter = $004C +kSelAll = $0010 +kSelect = $0069 +kSelectA = $00FC +kSendID = $001B +kSendMBL = $0063 +kSendSW = $001C +kSeq = $0033 +kSeqential = $0069 +kSeqG = $0059 +kSetupLst = $00CB +kSetZm = $0061 +kShade = $0089 +kShadeChi = $00F6 +kShadeF = $00F7 +kShadeNorm = $00F4 +kShadeT = $00F5 +ksigma = $00DB +kSimulG = $006A +kSin = $00B7 +kSinH = $00E6 +kSinReg = $00A5 +kSolveRoot = $0054 +kSolveTVM = $0053 +kSortA = $0031 +kSortD = $0032 +kSpace = $0099 +kSplitOn = $0054 +kSPlot = $0030 +kSqrt = $00BE +kSquar = $0062 +kSquare = $00BD +kStat = $0031 +kStat_s = $0086 +kStatA = $00B7 +kStatB = $00B8 +kStatC = $00B9 +kStatChi = $0073 +kStatD = $00BB +kStatDF = $0075 +kStatE = $00BC +kStatEd = $0043 +kStatF = $0074 +kstatF2 = $00E1 +kStatLower = $0080 +kStatMeanX1 = $0079 +kStatMeanX2 = $007A +kStatN = $002D +kStatN1 = $007E +kStatN2 = $007F +kStatP = $0055 +kStatPhat = $0076 +kStatPhat1 = $0077 +kStatPhat2 = $0078 +kStatStdX1 = $007B +kStatStdX2 = $007C +kStatStdXP = $007D +kStatT = $0072 +kStatUpper = $0081 +kStatVP = $0070 +kStatX1 = $00C3 +kStatX2 = $00C5 +kStatX3 = $00C7 +kStatY1 = $00C4 +kStatY2 = $00C6 +kStatY3 = $00C8 +kStatZ = $0071 +kStd = $0063 +kStdDev = $0048 +kStdX = $0039 +kStdX1 = $003A +kStdY = $0042 +kStdY1 = $0043 +kSTGDB = $0007 +kStndrd = $0056 +kStop = $00DC +kStore = $008A +kSTPic = $0008 +kStr0 = $0059 +kStr1 = $0050 +kStr2 = $0051 +kStr3 = $0052 +kStr4 = $0053 +kStr5 = $0054 +kStr6 = $0055 +kStr7 = $0056 +kStr8 = $0057 +kStr9 = $0058 +kStrngToequ = $004C +kSub = $0081 +kSubStrng = $004E +kSum = $0038 +kSumX = $006B +kSumX2 = $006C +kSumXY = $0088 +kSumY = $0084 +kSumY2 = $0087 +kTable = $004A +kTan = $00BB +kTanH = $00E8 +kTanLn = $0074 +ktau = $00DC +kTblInput = $00F1 +kTblMin = $00C9 +kTblSet = $004B +kTblStep = $00CA +kTequ = $000A +kTest = $0033 +kText = $0073 +kTGT = $000C +kTGTE = $000D +kThen = $00CE +kTheta = $00CC +kTimRow = $002F +kTIntVal = $00D7 +kTLT = $000E +kTLTE = $000F +kTmax = $0089 +kTmin = $0088 +kTNoteQ = $000B +kToABC = $00C3 +kToDec = $0018 +kToDMS = $0028 +kToPolar = $0036 +kToRect = $0037 +kTPDF = $008D +kTrace = $005A +kTrans = $0016 +kTransp = $003B +kTrig = $0064 +kTRowP = $0030 +kTStep = $008A +kTTest = $00CF +kTwoVar = $0042 +ku0 = $008E +kuAcute = $00C3 +kuCaret = $00C5 +kuDier = $00C6 +kuGrave = $00C4 +kun = $00E5 +kun1 = $0098 +kunA = $00F9 +kUnarchive = $009B +kUnselAll = $0011 +kUp = $0003 +kUsrZm = $0065 +kuv = $00AF +kuw = $00B1 +kuw0 = $0082 +kuXres = $0089 +kv0 = $008F +kVariance = $0049 +kVars = $0035 +kVarx = $00B4 +kVert = $0071 +kvn = $00E6 +kvn1 = $0099 +kvnA = $00FA +kvSendType = $001F +kvw = $00B0 +kw0 = $003B +kwait = $D1A98C +kWebOff = $00F0 +kWebOn = $00EF +kWhile = $00D1 +kWindow = $0048 +kwn = $00E7 +kwnA = $00FB +kX1T = $000D +kX2T = $000F +kX3T = $0011 +kX4T = $0013 +kX5T = $0015 +kX6T = $0017 +kXFact = $00EB +kXFactorial = $0024 +kXmax = $0083 +kXMean = $002E +kXmin = $0082 +kXor = $0012 +kXres = $0085 +kXRoot = $0015 +kXscl = $0084 +kxyLine = $004B +kY0 = $000C +kY1 = $0003 +kY1T = $000E +kY2 = $0004 +kY2T = $0010 +kY3 = $0005 +kY3T = $0012 +kY4 = $0006 +kY4T = $0014 +kY5 = $0007 +kY5T = $0016 +kY6 = $0008 +kY6T = $0018 +kY7 = $0009 +kY8 = $000A +kY9 = $000B +kYequ = $0049 +kYes = $001D +kYFact = $00EC +kYmax = $0086 +kYMean = $0038 +kYMean1 = $0041 +kYmin = $0085 +kYscl = $0087 +kZFactEd = $0051 +kZFit = $005B +kZFitA = $00FD +kZIn = $005C +kZInt = $0067 +kZIntVal = $00D6 +kZnMax = $00A3 +kZnMin = $00A2 +kZOmax = $009E +kZOmin = $009D +kZoom = $002E +kZOStep = $009F +kZOut = $005D +kZPlotStart = $00EA +kZPlotStep = $00F9 +kZPrev = $005E +kZStat = $0068 +kZSto = $0066 +kZTest = $00CE +kZTmax = $009B +kZTmin = $009A +kZTStep = $009C +kZu0 = $00A0 +kZv0 = $00A1 +kZXmax = $0095 +kZXmin = $0094 +kZXscl = $0096 +kZYmax = $0098 +kZYmin = $0097 +kZYscl = $0099 +L0 = $0030 +L1 = $0031 +L2 = $0032 +L2_r_paren = $00DE +L3 = $0033 +L4 = $0034 +L5 = $0035 +L6 = $0036 +L7 = $0037 +L8 = $0038 +L9 = $0039 +La = $0061 +LaAcute = $008E +LaCaret = $0090 +Laccent = $00B6 +LaDier = $0091 +LaGrave = $008F +Lalpha = $00BB +Lampersand = $0026 +Langle = $0013 +Lapostrophe = $0027 +Larea = $00D3 +Lasterisk = $002A +lastNewApp = $005A +lastOldApp = $0058 +LastToken = $00CE +LatSign = $0040 +Lb = $0062 +Lbackquote = $0060 +Lbackslash = $005C +Lbar = $007C +Lbeta = $00BC +Lblock = $00D0 +LblockArrow = $00DF +LboxIcon = $000A +Lc = $0063 +LcapA = $0041 +LcapAAcute = $008A +LcapACaret = $008C +LcapADier = $008D +LcapAGrave = $008B +LcapB = $0042 +LcapC = $0043 +LcapCCed = $00B2 +LcapD = $0044 +LcapDelta = $00BE +LcapE = $0045 +LcapEAcute = $0092 +LcapECaret = $0094 +LcapEDier = $0095 +LcapEGrave = $0093 +LcapF = $0046 +LcapG = $0047 +LcapH = $0048 +LcapI = $0049 +LcapIAcute = $009A +LcapICaret = $009C +LcapIDier = $009D +LcapIGrave = $009B +LcapJ = $004A +LcapK = $004B +LcapL = $004C +LcapM = $004D +LcapN = $004E +LcapNTilde = $00B4 +LcapO = $004F +LcapOAcute = $00A2 +LcapOCaret = $00A4 +LcapODier = $00A5 +LcapOGrave = $00A3 +LcapOmega = $00CA +LcapP = $0050 +LcapQ = $0051 +LcapR = $0052 +LcapS = $0053 +LcapSigma = $00C6 +LcapT = $0054 +LcapU = $0055 +LcapUAcute = $00AA +LcapUCaret = $00AC +LcapUDier = $00AD +LcapUGrave = $00AB +LcapV = $0056 +LcapW = $0057 +LcapX = $0058 +LcapY = $0059 +LcapZ = $005A +Lcaret = $005E +LcCed = $00B3 +lcdBgr = $0100 +lcdBigEndian = $0200 +lcdBigEndianPixels = $0400 +lcdBpp1 = $0021 +lcdBpp12 = $002F +lcdBpp16 = $002D +lcdBpp16Alt = $0029 +lcdBpp2 = $0023 +lcdBpp24 = $002B +lcdBpp4 = $0025 +lcdBpp8 = $0027 +lcdEn = $0001 +lcdHeight = $00F0 +lcdIntActiveVideo = $2000 +lcdIntBack = $1000 +lcdIntFront = $4000 +lcdIntVSync = $0000 +lcdNormalMode = $092D +LCDObj = $0012 +lcdPwr = $0800 +lcdSize = $12C00 +lcdTft = $0020 +lcdWatermark = $10000 +lcdWidth = $0140 +Lchi = $00D9 +Lcolon = $003A +Lcomma = $002C +Lconvert = $0005 +Lcross = $0009 +LcrossIcon = $000B +Lcube = $00D5 +LcubeR = $000E +LcurFull = $00F1 +LcurI = $00E4 +LcurI2 = $00E5 +LcurIa = $00E7 +LcurIcapA = $00E6 +LcurO = $00E0 +LcurO2 = $00E1 +LcurOa = $00E3 +LcurOcapA = $00E2 +Ld = $0064 +Ldash = $002D +Ldegree = $0014 +Ldelta = $00BF +Ldieresis = $00B8 +LDnBlk = $00F0 +LdotIcon = $000C +LdownArrow = $001F +Le = $0065 +LeAcute = $0096 +LeCaret = $0098 +LeDier = $0099 +LeGrave = $0097 +Lellipsis = $00CE +Lenter = $00D6 +Lepsilon = $00C0 +LEQ = $003D +LET = $0041 +Lexclam = $0021 +LexclamDown = $00BA +Lexponent = $001B +Lf = $0066 +LfinanN = $00DD +lFont_record = $D005A4 +Lfourth = $0024 +Lg = $0067 +LGabove = $00EA +Lgamma = $00BD +LGanimate = $00ED +LGbelow = $00EB +LGdot = $00EE +LGE = $0019 +LGline = $00E8 +LGpath = $00EC +Lgrave = $00B7 +LGT = $003E +LGthick = $00E9 +Lh = $0068 +LhexF = $000F +Lhyphen = $00D2 +Li = $0069 +LiAcute = $009E +libraryHookActive = $0001 +libraryHookPtr = $D025D8 +LiCaret = $00A0 +LiDier = $00A1 +LiGrave = $009F +LimagI = $00D7 +linkFlags = $001B +Lintegral = $0008 +LinvEQ = $007F +Linverse = $0011 +ListObj = $0001 +Lj = $006A +Lk = $006B +Ll = $006C +Llambda = $00C2 +LlBrace = $007B +LlBrack = $00C1 +LLE = $0017 +Lleft = $00CF +LlistL = $00DC +Llne = $00DB +LlParen = $0028 +LLT = $003C +Lm = $006D +Lmu = $00C3 +Ln = $006E +LNE = $0018 +Lneg = $001A +LnTilde = $00B5 +Lo = $006F +LoAcute = $00A6 +localizeHookActive = $0001 +localizeHookPtr = $D02611 +LoCaret = $00A8 +LoDier = $00A9 +LoGrave = $00A7 +Lp = $0070 +Lper = $00D1 +Lpercent = $0025 +Lperiod = $002E +Lphat = $00D8 +Lphi = $00C9 +Lpi = $00C4 +LplusSign = $002B +Lpound = $0023 +Lq = $0071 +LquesDown = $00B9 +Lquestion = $003F +Lquote = $0022 +Lr = $0072 +Lradian = $0015 +LrBrace = $007D +LrBrack = $005D +LrecurN = $0001 +LrecurU = $0002 +LrecurV = $0003 +LrecurW = $0004 +Lrho = $00C5 +Lroot = $0010 +LrParen = $0029 +Ls = $0073 +Lsemicolon = $003B +Lsigma = $00C7 +Lslash = $002F +Lspace = $0020 +LsqDown = $0007 +Lsquare = $0012 +LsqUp = $0006 +LstatF = $00DA +Lstore = $001C +Lsub0 = $0080 +Lsub1 = $0081 +Lsub2 = $0082 +Lsub3 = $0083 +Lsub4 = $0084 +Lsub5 = $0085 +Lsub6 = $0086 +Lsub7 = $0087 +Lsub8 = $0088 +Lsub9 = $0089 +LsubT = $000D +LsupX = $00CD +Lt = $0074 +Ltau = $00C8 +Ltemp = $00D4 +Lten = $001D +Ltheta = $005B +Ltilde = $007E +Ltranspose = $0016 +Lu = $0075 +LuAcute = $00AE +LuCaret = $00B0 +LuDier = $00B1 +LuGrave = $00AF +Lunderscore = $005F +LupArrow = $001E +LUpBlk = $00EF +Lv = $0076 +Lw = $0077 +lwrCaseActive = $0003 +Lx = $0078 +LxMean = $00CB +Ly = $0079 +LyMean = $00CC +Lz = $007A +MainLoop = $D1A8BB +mAngle = $000F +mApps = $0002 +MatObj = $0002 +MaxX = $D011D0 +MaxY = $D011E2 +mCalculate = $0011 +mCatalog = $0045 +mConfirmation = $0001 +mDistr = $000E +mDistr_Distr = $0000 +mDistr_Draw = $0001 +mDraw = $0005 +mDraw_Draw = $0000 +mDraw_Points = $0001 +mDraw_Store = $0002 +mDuplicateName = $0042 +MeanX1 = $750A7FA +MeanX2 = $750A815 +MedX = $D0122A +MedX1 = $D01272 +MedX2 = $D0127B +MedX3 = $D01284 +MedY1 = $D0128D +MedY2 = $D01296 +MedY3 = $D0129F +menuEnd = $003C +menuHookActive = $0006 +menuHookPtr = $D02608 +menuStart = $002B +mFinance = $0022 +mFinance_Calc = $0000 +mFinance_Vars = $0001 +mGarbageCollect = $003F +mGroup = $0028 +mGroup_New = $0000 +mGroup_Ungroup = $0001 +mGroupVars = $0029 +MinX = $D011C7 +MinY = $D011D9 +mLink = $0030 +mLink_Recieve = $0001 +mLink_Send = $0000 +mLinkTrasmit = $0031 +mLinkXmit_Xmit = $0001 +mList = $0010 +mList_Math = $0002 +mList_Names = $0000 +mList_Ops = $0001 +mMath = $0008 +mMath_Complex = $0002 +mMath_Math = $0000 +mMath_Number = $0001 +mMath_Prob = $0003 +mMatrix = $000D +mMatrix_Edit = $0002 +mMatrix_Math = $0001 +mMatrix_Name = $0000 +mMemMgmtDel = $0020 +mMemory = $000C +mMemReset = $001F +mMemReset_All = $0002 +mMemReset_RAM = $0000 +mMemReset_ROM = $0001 +mMemResetAll = $0027 +mMemResetDefaults = $0021 +mMemResetRAMAll = $0023 +mMemResetROMAll = $0026 +mMemResetROMApps = $0025 +mMemResetROMVars = $0024 +ModelMatrix = $D20A5E +MODES = $0073 +MODESA = $0064 +monAbandon = $0004 +monFlags = $0001 +MonoFlag_SMC = $D20282 +mouseFlag1 = $002C +mouseFlag2 = $002D +mpBlLevel = $F60024 +mpLcdBase = $E30010 +mpLcdCrsrClip = $E30C14 +mpLcdCrsrConfig = $E30C04 +mpLcdCrsrCtrl = $E30C00 +mpLcdCrsrPal0 = $E30C08 +mpLcdCrsrPal1 = $E30C0C +mpLcdCrsrXy = $E30C10 +mpLcdCtrl = $E30018 +mpLcdCtrlRange = $E30000 +mpLcdCursorImg = $E30800 +mpLcdPalette = $E30200 +mPrgm_Edit = $0001 +mPrgm_New = $0002 +mPrgm_Run = $0000 +mPrgmDraw = $002C +mPrgmDraw_Draw = $0000 +mPrgmDraw_Pt = $0001 +mPrgmDraw_Store = $0002 +mPrgmEd_Ctrl = $0000 +mPrgmEd_Exec = $0002 +mPrgmEd_IO = $0001 +mPrgmMath = $002F +mPrgmMath_Cplx = $0002 +mPrgmMath_Math = $0000 +mPrgmMath_Num = $0001 +mPrgmMath_Prob = $0003 +mPrgmSP_Mark = $0002 +mPrgmSP_Plots = $0000 +mPrgmSP_Type = $0001 +mPrgmStat = $002E +mPrgmStat_Calc = $0001 +mPrgmStat_Edit = $0000 +mPrgmStat_Tests = $0002 +mPrgmStatPlot = $002D +mPrgmZoom = $002B +mPrgmZoom_Mem = $0001 +mPrgmZoom_Zoom = $0000 +mProgramEdit = $002A +mProgramHome = $0003 +mpRtcRange = $F30000 +mSelectGroupVars = $0040 +mSelGrpVars_Grp = $0001 +mSelGrpVars_Sel = $0000 +mStat = $0007 +mStat_Calc = $0001 +mStat_Edit = $0000 +mStat_Tests = $0002 +mStatPlots = $0006 +mTest = $0009 +mTest_Logic = $0001 +mTest_Test = $0000 +mVars = $000A +mVars_Vars = $0000 +mVars_YVars = $0001 +mVarsFnOnOff = $001E +mVarsGDB = $0016 +mVarsParametric = $001C +mVarsPics = $0017 +mVarsPolar = $001D +mVarsStat = $0019 +mVarsStat_EQ = $0002 +mVarsStat_Pts = $0004 +mVarsStat_Sigma = $0001 +mVarsStat_Test = $0003 +mVarsStat_XY = $0000 +mVarsStrings = $0018 +mVarsTable = $001A +mVarsWin = $0014 +mVarsWin_TTh = $0001 +mVarsWin_UVW = $0002 +mVarsWin_XY = $0000 +mVarsYequ = $001B +mVarsZoom = $0015 +mVarsZoom_UVW = $0002 +mVarsZoom_ZT = $0001 +mVarsZoom_ZXY = $0000 +mZoom = $0004 +mZoom_Memory = $0001 +mZoom_Zoom = $0000 +newDispF = $0008 +NewEquObj = $000B +newIndicFlags = $0015 +nMax = $D01EA8 +NMAXt = $001D +nMin = $D01EC3 +NMINt = $001F +NOARG = $00AB +noCompletionByte = $0002 +nocxPutAway = $0005 +noDataWrite = $0003 +noTempDelete = $0006 +notMDYMode = $0000 +noUSBHostInit = $0003 +Num1 = $D20373 +Num2 = $D20375 +numMode = $000A +numOP1 = $0000 +NUMS = $0030 +Offset_SMC = $D20336 +old_location = $0000 +onFlags = $0009 +onInterrupt = $0004 +onRunning = $0003 +onSp = $D007FA +OP1 = $D005F8 +OP1M = $D005FA +OP2 = $D00603 +OP2EXT = $D0060C +OP2M = $D00605 +OP3 = $D0060E +OP3M = $D00610 +OP4 = $D00619 +OP4M = $D0061B +OP5 = $D00624 +OP5M = $D00626 +OP6 = $D0062F +OP6EXT = $D00638 +OP6M = $D00631 +OPBase = $D02590 +openLibActive = $0004 +OPS = $D02593 +OS__FLAGS = $D00080 +p1 = $D1C651 +p1x = $D1C60D +p2 = $D1C668 +p3 = $D1C6AC +p3x = $D1C683 +p5 = $D1C6D7 +p5x = $D1C6EE +p6 = $D1C709 +p7 = $D1C732 +p8 = $D1C749 +p8x = $D1C764 +pagedGetPtr = $D025A3 +parseInput = $0001 +parserHookActive = $0001 +parserHookPtr = $D025F9 +ParsFlag = $0006 +ParsFlag2 = $0007 +pBlLevel = $B024 +pCpuSpeed = $0001 +penCol = $D008D2 +penRow = $D008D5 +pHardwareId = $0003 +Phat = $750A7DF +Phat1 = $750A7E8 +Phat2 = $750A7F1 +PictObj = $0007 +pixelShadow = $D031F6 +pixelShadow2 = $D052C6 +pLcdBase = $4010 +pLcdCrsrClip = $4C14 +pLcdCrsrConfig = $4C04 +pLcdCrsrCtrl = $4C00 +pLcdCrsrPal0 = $4C08 +pLcdCrsrPal1 = $4C0C +pLcdCrsrXy = $4C10 +pLcdCtrl = $4018 +pLcdCtrlRange = $4000 +pLcdCursorImg = $4800 +pLcdPalette = $4200 +plotDisp = $0002 +plotFlag3 = $003C +plotFlags = $0002 +plotLoc = $0001 +plotSScreen = $D09466 +PlotStart = $D01E9F +PLOTSTARTt = $001B +PlotStep = $D01EE7 +PLOTSTEPt = $0034 +polarMode = $0007 +posX = $D209FA +posY = $D209FC +posZ = $D209FE +preClrForMode = $0000 +ProgObj = $0005 +progPtr = $D0259D +PROGTOK = $00CE +promptEdit = $0000 +promptFlags = $0011 +ProtProgObj = $0006 +pRtcRange = $8000 +PStat = $750A7A9 +pTemp = $D0259A +pUsbRange = $3000 +px = $D1C628 +Q1 = $D01233 +Q3 = $D0123C +QuadA = $D01245 +QuadB = $D0124E +QuadC = $D01257 +QuartE = $D01269 +Quaternion = $D20A2E +QuatMatrix = $D20A3A +rawKeyHookActive = $0005 +rawKeyHookPtr = $D025DB +rclFlag = $000E +realMode = $0005 +RealObj = $0000 +rectMode = $0006 +regraphHookActive = $0006 +regraphHookPtr = $D025F0 +resetOnPowerOn = $0002 +reTable = $0006 +RR = $D1C3B4 +RR2 = $D1C3EA +saIndic = $0001 +saveSScreen = $D0EA1F +ScaleMatrix = $D20A1C +scrapMem = $D02AD7 +secondTimerEnabled = $0000 +selfTestFlag = $0024 +seqFlags = $000F +sequv = $0002 +sequw = $0004 +seqvw = $0003 +sFont_record = $D005C5 +sGrFlags = $0014 +shift2nd = $0003 +shiftALock = $0006 +shiftAlpha = $0004 +shiftFlags = $0012 +shiftKeepAlph = $0007 +shiftLwrAlph = $0005 +silentLinkActive = $0000 +silentLinkFlags = $003E +silentLinkHookActive = $0007 +silentLinkHookPtr = $D02614 +sk0 = $0021 +sk1 = $0022 +sk2 = $001A +sk2nd = $0036 +sk3 = $0012 +sk4 = $0023 +sk5 = $001B +sk6 = $0013 +sk7 = $0024 +sk8 = $001C +sk9 = $0014 +skAdd = $000A +skAlpha = $0030 +skChs = $0011 +skClear = $000F +skComma = $0025 +skCos = $001E +skDecPnt = $0019 +skDel = $0038 +skDiv = $000D +skDown = $0001 +skEnter = $0009 +skGraph = $0031 +skGraphvar = $0028 +skLeft = $0002 +skLn = $002B +skLog = $002C +skLParen = $001D +skMath = $002F +skMatrix = $0027 +skMode = $0037 +skMul = $000C +skPower = $000E +skPrgm = $001F +skRecip = $002E +skRight = $0003 +skRParen = $0015 +skSin = $0026 +skSquare = $002D +skStat = $0020 +skStore = $002A +skSub = $000B +skTan = $0016 +skTrace = $0032 +skUp = $0004 +skVars = $0017 +skWindow = $0034 +skYequ = $0035 +skZoom = $0033 +SLower = $750A839 +smarter_mask = $0003 +smarter_test = $0001 +smartFlags = $0017 +smartGraph = $0000 +smartGraph_inv = $0001 +something = $D14099 +SPASM = $0001 +SPASMVER = $0002 +splitOverride = $0003 +SStat = $750A84B +STATCMD = $00F2 +statDiagnosticsOn = $0000 +statFlags = $0009 +statFlags2 = $001A +StatN = $D01191 +StatN1 = $750A80C +StatN2 = $750A827 +statPCmd = $00E9 +statsValid = $0006 +statVars = $D01191 +statVarsOffset = $D0117F +StdPX = $D011BE +StdPY = $D0120F +StdX = $D011B5 +StdX1 = $750A803 +StdX2 = $750A81E +StdXP2 = $750A830 +StdY = $D01206 +StrngObj = $0004 +SumX = $D011A3 +SumXSqr = $D011AC +SumXY = $D01218 +SumY = $D011F4 +SumYSqr = $D011FD +SUpper = $750A842 +symTable = $D3FFFF +t0 = $0030 +t1 = $0031 +t1PropZInt = $0043 +t1PropZTest = $003E +t2 = $0032 +t2ByteTok = $00BB +t2PropZInt = $0044 +t2PropZTest = $003F +t2SampFTest = $0047 +t2SampTInt = $0049 +t2SampTTest = $0046 +t2SampZInt = $0042 +t2SampZTest = $003D +t3 = $0033 +t4 = $0034 +t5 = $0035 +t6 = $0036 +t7 = $0037 +t8 = $0038 +t9 = $0039 +tA = $0041 +tAbs = $00B2 +tACalcOff = $007D +tACalcOn = $007C +tACos = $00C5 +tACosH = $00CB +tAdd = $0070 +tAFillOff = $007B +tAFillOn = $007A +tALog = $00C1 +tAnd = $0040 +tAngle = $0028 +tANOVA = $0059 +tAns = $0072 +tAPost = $00AE +tArchive = $0068 +tASin = $00C3 +tASinH = $00C9 +tasm = $006A +tAsm84CCmp = $0069 +tAsm84CeCmp = $007B +tAsm84CePrgm = $007A +tAsm84CPrgm = $0068 +tasmCmp = $006D +tasmComp = $006B +tasmPrgm = $006C +tATan = $00C7 +tATanH = $00CD +tAug = $0014 +tAutoAnswer = $003B +tAxisOff = $0009 +tAxisOn = $0008 +tB = $0042 +tBackgroundOff = $0064 +tBackgroundOn = $005B +tBINCDF = $0016 +tBINPDF = $0015 +tBlack = $0043 +tblFlags = $0013 +TBLMINt = $001A +TblRngObj = $0011 +TBLSTEPt = $0021 +tBlue = $0041 +tBorderColor = $006C +tBoxIcon = $007F +tBoxPlot = $0005 +tBrown = $0047 +tBRSqr = $0036 +tC = $0043 +tCheckTmr = $0002 +tChI = $0013 +tChiPDF = $001D +tChiSquaredGofTest = $0014 +tChiTest = $0040 +tChs = $00B0 +tCircl = $00A5 +tClassic = $0038 +tClDrw = $0085 +tClLCD = $00E1 +tClockOff = $000F +tClockOn = $0010 +tClrAllLst = $0052 +tClrLst = $00FA +tClrTbl = $00FB +tColon = $003E +tComma = $002B +tConj = $0025 +tConst = $00E2 +tConste = $0031 +tCoordOff = $0005 +tCoordOn = $0004 +tCorr = $0012 +tCos = $00C4 +tCoshH = $00CA +tCrossIcon = $0080 +tCube = $000F +tCubeD = $0019 +tCubicR = $002E +tCubRt = $00BD +tCumSum = $0029 +tD = $0044 +tDarkGray = $004F +tDayOfWk = $0006 +tDecAnswer = $003C +tDecPt = $003A +tDeg = $0065 +tDelLast = $0057 +tDeltaLst = $002C +tDeltaX = $0026 +tDeltaY = $0027 +tDelVar = $0054 +tDet = $00B3 +tDF = $0014 +tDiag_off = $0067 +tDiag_on = $0066 +tDim = $00B5 +tDisp = $00DE +tDispG = $00DF +tDispTab = $00E5 +tDiv = $0083 +tDNormal = $0010 +tDotIcon = $0081 +tDrawDot = $0007 +tDrawF = $00A9 +tDrawLine = $0006 +tDrInv = $00A8 +tDSL = $00DB +tDT = $0012 +tDWP = $D1B7F9 +tE = $0045 +tE_DF = $003A +tE_MS = $003C +tE_SS = $003B +tee = $003B +tElse = $00D0 +Temp = $D20A00 +tempMem = $D02587 +TempProgObj = $0016 +tEnd = $00D4 +tEng = $0068 +tEnter = $003F +tEOSEL = $0029 +tEQ = $006A +tEquToStrng = $0055 +tEvalF = $0026 +tExecLib = $0012 +tExp = $00BF +tExpr = $002A +tExprOff = $0051 +tExprOn = $0050 +textBGcolor = $D02688 +TextBGColor_SMC = $D202D0 +TextData_ASM = $D20542 +textEraseBelow = $0001 +textFGcolor = $D0268A +TextFGColor_SMC = $D202D6 +textFlags = $0005 +textInsMode = $0004 +textInverse = $0003 +textScrolled = $0002 +textShadow = $D006C0 +tExtTok = $00EF +TextTransColor_SMC = $D202D8 +textWrite = $0007 +TextXPos_SMC = $D20291 +TextYPos_SMC = $D2029F +tF = $0046 +tF_DF = $0037 +tF_MS = $0039 +tF_SS = $0038 +tFact = $002D +tFinBAL = $0002 +tFinCY = $0031 +tFinDBD = $0007 +tFinFFV = $0024 +tFinFI = $0021 +tFinFN = $0023 +tFinFPMT = $0020 +tFinFPV = $0022 +tFinFV = $002F +tFinI = $002C +tFinINT = $0004 +tFinIRR = $0001 +tFinN = $002B +tFinNPV = $0000 +tFinPMT = $002E +tFinPMTbeg = $004C +tFinPMTend = $004B +tFinPRN = $0003 +tFinPV = $002D +tFinPY = $0030 +tFinToEff = $0006 +tFinToNom = $0005 +tFix = $0073 +tFloat = $0069 +tFmax = $0028 +tFmin = $0027 +tFnInt = $0024 +tFor = $00D3 +tFPart = $00BA +tFPDF = $001E +tFracAnswer = $003D +tFracMixedNum = $002F +tFracSlash = $002E +tFromDeg = $000B +tFromRad = $000A +tFullScreen = $0075 +tG = $0047 +tGarbagec = $00CE +tGCD = $0009 +tGDB0 = $0009 +tGDB1 = $0000 +tGDB2 = $0001 +tGDB3 = $0002 +tGDB4 = $0003 +tGDB5 = $0004 +tGDB6 = $0005 +tGDB7 = $0006 +tGDB8 = $0007 +tGDB9 = $0008 +tGE = $006E +tGEOCDF = $001A +tGEOPDF = $0019 +tGetCalc = $0053 +tGetDate = $0009 +tGetDtStr = $0007 +tGetKey = $00AD +tGetMBL = $00E8 +tGetTime = $000A +tGetTmFmt = $000D +tGetTmStr = $0008 +tGFormat = $007E +tGoto = $00D7 +tGraphColor = $0065 +tGraphStyle = $0045 +tGray = $004E +tGreen = $0045 +tGridOff = $000B +tGridOn = $000A +tGT = $006C +tGtDtFmt = $000C +tH = $0048 +ThetaMax = $D01E72 +ThetaMin = $D01E69 +ThetaStep = $D01E7B +THETMAXt = $0011 +THETMINt = $0010 +THETSTEPt = $0023 +tHist = $00FC +tHorz = $00A6 +tI = $0049 +TI84PCE = $0001 +tIdent = $00B4 +tIf = $00CE +tii = $002C +tImag = $0027 +tInput = $00DC +tInStrng = $000F +tInt = $00B1 +tInvNorm = $0011 +tInvT = $0013 +tIPart = $00B9 +tIsClockOn = $000E +tISG = $00DA +tJ = $004A +tK = $004B +tL = $004C +tL1 = $0000 +tL2 = $0001 +tL3 = $0002 +tL4 = $0003 +tL5 = $0004 +tL6 = $0005 +tLa = $00B0 +tLaAcute = $0072 +tLaCaret = $0074 +tLaccent = $009A +tLaDier = $0075 +tLaGrave = $0073 +tLalpha = $009F +tLb = $00B1 +tLbeta = $00A0 +tLbl = $00D6 +tLblOff = $000D +tLblOn = $000C +tLBrace = $0008 +tLBrack = $0006 +tLc = $00B2 +tLcapAAcute = $006E +tLcapACaret = $0070 +tLcapADier = $0071 +tLcapAGrave = $006F +tLcapCCed = $0096 +tLcapDelta = $00A2 +tLcapEAcute = $0076 +tLcapECaret = $0078 +tLcapEDier = $0079 +tLcapEGrave = $0077 +tLcapIAcute = $00CD +tLcapICaret = $0080 +tLcapIDier = $0081 +tLcapIGrave = $007F +tLcapNTilde = $0098 +tLcapOAcute = $0086 +tLcapOCaret = $0088 +tLcapODier = $0089 +tLcapOGrave = $0087 +tLcapOmega = $00AC +tLcapSigma = $00A9 +tLcapUAcute = $008E +tLcapUCaret = $0090 +tLcapUDier = $0091 +tLcapUGrave = $008F +tLcCed = $0097 +tLchi = $00AE +tLCM = $0008 +tLd = $00B3 +tLdelta = $00A3 +tLdieresis = $009C +tLE = $006D +tLeAcute = $007A +tLeCaret = $007C +tLeDier = $007D +tLeGrave = $007B +tLength = $002B +tLepsilon = $00A4 +tLexclamDown = $009E +tLf = $00B5 +tLgamma = $00A1 +tLgrave = $009B +tLh = $00B7 +tLi = $00B8 +tLiAcute = $0082 +tLiCaret = $0084 +tLiDier = $0085 +tLiGrave = $0083 +tLine = $009C +tLinRegTInt = $0015 +tLinRegTTest = $0034 +tListName = $00EB +tLj = $00B9 +tLk = $00BA +tLl = $00BC +tLlambda = $00A5 +tLm = $00BD +tLmu = $00A6 +tLn = $00BE +tLnTilde = $0099 +tLo = $00BF +tLoAcute = $008A +tLoCaret = $008C +tLoDier = $008D +tLog = $00C0 +tLogBase = $0034 +tLogistic = $0033 +tLoGrave = $008B +tLp = $00C0 +tLParen = $0010 +tLphat = $00AD +tLphi = $00AB +tLpi = $00A7 +tLq = $00C1 +tLquesDown = $009D +tLR = $00F4 +tLR1 = $00FF +tLRExp = $00F5 +tLrho = $00A8 +tLRLn = $00F6 +tLRPwr = $00F7 +tLRSqr = $0035 +tLs = $00C3 +tLsigma = $00CB +tLsmalle = $00B4 +tLsmallg = $00B6 +tLsmalln = $00BE +tLsmallr = $00C2 +tLsmallt = $00C4 +tLstatF = $00AF +tLstToMat = $003A +tLT = $006B +tLtau = $00CC +tLtBlue = $0049 +tLtGray = $004C +tLu = $00C5 +tLuAcute = $0092 +tLuCaret = $0094 +tLuDier = $0095 +tLuGrave = $0093 +tLv = $00C6 +tLw = $00C7 +tLx = $00C8 +tLy = $00C9 +tLz = $00CA +tM = $004D +tMagenta = $0044 +tManualFit = $0016 +tMatA = $0000 +tMatB = $0001 +tMatC = $0002 +tMatD = $0003 +tMatE = $0004 +tMatF = $0005 +tMatG = $0006 +tMatH = $0007 +tMathPrint = $0037 +tMatI = $0008 +tMatJ = $0009 +tMatToLst = $0039 +tMax = $0019 +TmaxPar = $D01E8D +TMAXt = $000F +tMaxX = $0009 +tMaxY = $000B +tMean = $0021 +tMedGray = $004D +tMedian = $001F +tMedMed = $00F8 +tMedX = $0013 +tMedX1 = $001B +tMedX2 = $001C +tMedX3 = $001D +tMedY1 = $001E +tMedY2 = $001F +tMedY3 = $0020 +tMenu = $00E6 +tMGT = $0064 +tMin = $001A +TminPar = $D01E84 +TMINt = $000E +tMinX = $0008 +tMinY = $000A +tModBox = $005A +tmpWidth = $D209F1 +tmRow = $0017 +tmRowPlus = $0018 +tMul = $0082 +tN = $004E +tNavy = $0048 +tnCr = $0095 +tNDeriv = $0025 +tNE = $006F +tnMax = $001D +tnMin = $001F +tNormalPDF = $001B +tNormF = $0066 +tNormProb = $005B +tNot = $00B8 +tnPr = $0094 +tO = $004F +tOkEnd2v0 = $0067 +tokenHookActive = $0000 +tokenHookPtr = $D0260E +tokVarPtr = $D005E9 +tOneVar = $00F2 +tOpenLib = $0011 +tOr = $003C +tOrange = $0046 +tOutput = $00E0 +tP = $0050 +tParam = $0077 +tPause = $00D8 +tPi = $00AC +tPic0 = $0009 +tPic1 = $0000 +tPic2 = $0001 +tPic3 = $0002 +tPic4 = $0003 +tPic5 = $0004 +tPic6 = $0005 +tPic7 = $0006 +tPic8 = $0007 +tPic9 = $0008 +tPlot1 = $00EC +tPlot2 = $00ED +tPlot3 = $00EE +tPlotOff = $00EA +tPlotOn = $00E9 +tPlotStart = $001B +tPlotStep = $0034 +tPOICDF = $0018 +tPOIPDF = $0017 +tPolar = $0078 +tPolarG = $0002 +tPolarM = $004E +tPost = $002D +tPOST1 = $000A +tPower = $00F0 +tProd = $00B7 +tProg = $005F +tPrompt = $00DD +tPrtScrn = $0091 +tPtChg = $00A0 +tPtOff = $009F +tPtOn = $009E +tPToRx = $001D +tPToRy = $001E +tPXChg = $00A3 +tPXOff = $00A2 +tPXOn = $00A1 +tPxTst = $0013 +tQ = $0051 +tQ1 = $0014 +tQ3 = $0015 +tQuad = $00F9 +tQuadA = $0016 +tQuadB = $0017 +tQuadC = $0018 +tQuartE = $001A +tQuartR = $002F +tQuest = $00AF +tR = $0052 +tR1 = $0040 +tR2 = $0041 +tR3 = $0042 +tR4 = $0043 +tR5 = $0044 +tR6 = $0045 +traceFlags = $0018 +traceHookActive = $0000 +traceHookPtr = $D025E6 +tRad = $0064 +tRand = $00AB +tRandBin = $000B +tRandInt = $000A +tRandIntNoRep = $0035 +tRandM = $0020 +tRandNorm = $001F +tRBrace = $0009 +tRBrack = $0007 +tRclDB = $009B +tRcPic = $0099 +tReal = $0026 +tRealM = $004D +tRecip = $000C +tRectG = $0003 +tRectM = $004F +tRecurn = $0021 +tRecuru0 = $0004 +tRecuru02 = $0038 +tRecurv0 = $0005 +tRecurv02 = $003C +tRecurw0 = $0032 +tRecurw02 = $003E +tRed = $0042 +tRef = $002D +tRegEq = $0001 +tRemainder = $0032 +tRepeat = $00D2 +tReturn = $00D5 +Triangle = $D20A19 +triangle_count = $D1A972 +TriangleName = $D20A11 +trigDeg = $0002 +trigFlags = $0000 +tRoot = $0022 +tRound = $0012 +tRowPlus = $0016 +tRowSwap = $0015 +tRParen = $0011 +tRRef = $002E +tRT = $D1B7D5 +tRToPo = $001C +tRToPr = $001B +TRUE = $0001 +tS = $0053 +tScatter = $00FE +tSci = $0067 +tSelect = $0058 +tSendMBL = $00E7 +tSeq = $0000 +tSeqG = $0079 +tSeries = $0023 +tSetDate = $0000 +tSetDtFmt = $0003 +tSetTime = $0001 +tSetTmFmt = $0004 +tSetupLst = $004A +tShade = $00A4 +tShadeChi = $0037 +tShadeF = $0038 +tShadeNorm = $0035 +tShadeT = $0036 +tSimulG = $0001 +tSin = $00C2 +tSinH = $00C8 +tSinReg = $0032 +tSortA = $00E3 +tSortD = $00E4 +tSpace = $0029 +tSplitOn = $0074 +tSqr = $000D +tSqrt = $00BC +tStartTmr = $000B +TStat = $750A7BB +tStat_s = $0034 +tStatChi = $0025 +tStatDF = $0027 +tStatF = $0026 +tStatLower = $0032 +tStatMeanX1 = $002B +tStatMeanX2 = $002E +tStatN = $0002 +tStatN1 = $002D +tStatN2 = $0030 +tStatP = $0022 +tStatPhat = $0028 +tStatPhat1 = $0029 +tStatPhat2 = $002A +tStatStdX1 = $002C +tStatStdX2 = $002F +tStatStdXP = $0031 +tStatT = $0024 +tStatUpper = $0033 +tStatZ = $0023 +tStdDev = $000D +tStdPX = $0007 +tStdPY = $0010 +tStdX = $0006 +tStdY = $000F +Tstep = $D01E96 +TSTEPt = $0022 +tStndrd = $0076 +tStoDB = $009A +tStop = $00D9 +tStore = $0004 +tStPic = $0098 +tStr0 = $0009 +tStr1 = $0000 +tStr2 = $0001 +tStr3 = $0002 +tStr4 = $0003 +tStr5 = $0004 +tStr6 = $0005 +tStr7 = $0006 +tStr8 = $0007 +tStr9 = $0008 +tString = $002A +tStrngToequ = $0056 +tSub = $0071 +tSubStrng = $000C +tSum = $00B6 +tSummationSigma = $0033 +tSumX = $0004 +tSumXSqr = $0005 +tSumXY = $0011 +tSumY = $000D +tSumYSqr = $000E +tSwapFracDec = $0031 +tSwapImProper = $0030 +tT = $0054 +tTan = $00C6 +tTanH = $00CC +tTanLn = $00A7 +tTblInput = $002A +tTblMin = $001A +tTblStep = $0021 +tText = $0093 +tTextColor = $0067 +tThen = $00CF +tTheta = $005B +tThetaMax = $0011 +tThetaMin = $0010 +tThetaStep = $0023 +tThin = $0074 +tTimeCnv = $0005 +tTIntVal = $0048 +ttLT = $D1B7E8 +tTmax = $000F +tTmin = $000E +tToAbc = $0003 +tToDEC = $0002 +tToDMS = $0001 +tToPolar = $0030 +tToRect = $002F +tTPDF = $001C +tTrace = $0084 +tTrnspos = $000E +tTStep = $0022 +tTTest = $003C +tTwoVar = $00F3 +tU = $0055 +tun = $0080 +tun1 = $0006 +tUnarchive = $0069 +tunMax = $001E +tunMin = $0020 +tUnused01 = $00EF +tuPlotStart = $001C +tuPlotStep = $0035 +tUPP = $D1B809 +tuRecuru0 = $0008 +tuRecuru02 = $0039 +tuRecurv0 = $0009 +tuRecurv02 = $003D +tuRecurw0 = $0033 +tuRecurw02 = $003F +tUsrZm = $0090 +tuThetMax = $0017 +tuThetMin = $0016 +tuThetStep = $0025 +tuTmax = $0019 +tuTmin = $0018 +tuTStep = $0024 +tuv = $0010 +tuw = $0012 +tuXmax = $0013 +tuXmin = $0012 +tuXres = $0037 +tuXscl = $0000 +tuYmax = $0015 +tuYmin = $0014 +tuYscl = $0001 +tV = $0056 +tVarequ = $005E +tVarGDB = $0061 +tVariance = $000E +tVarLst = $005D +tVarMat = $005C +tVarOut = $0062 +tVarPict = $0060 +tVarStrng = $00AA +tVarSys = $0063 +tVert = $009D +tvn = $0081 +tvn1 = $0007 +tvw = $0011 +tW = $0057 +tWebOff = $000F +tWebOn = $000E +tWhile = $00D1 +tWhite = $004B +twn = $0082 +tX = $0058 +tX1T = $0020 +tX2T = $0022 +tX3T = $0024 +tX4T = $0026 +tX5T = $0028 +tX6T = $002A +tXFact = $0028 +tXmax = $000B +tXMean = $0003 +tXmin = $000A +tXor = $003D +tXres = $0036 +tXRoot = $00F1 +tXscl = $0002 +txyLine = $00FD +tY = $0059 +tY0 = $0019 +tY1 = $0010 +tY1T = $0021 +tY2 = $0011 +tY2T = $0023 +tY3 = $0012 +tY3T = $0025 +tY4 = $0013 +tY4T = $0027 +tY5 = $0014 +tY5T = $0029 +tY6 = $0015 +tY6T = $002B +tY7 = $0016 +tY8 = $0017 +tY9 = $0018 +tYellow = $004A +tYFact = $0029 +tYmax = $000D +tYmean = $000C +tYmin = $000C +tYOff = $0097 +tYOn = $0096 +tYscl = $0003 +tZ = $005A +tZFit = $0065 +tZFracEighth = $001C +tZFracFifth = $001B +tZFracFourth = $001A +tZFracHalf = $0018 +tZFracTenth = $001D +tZFracThird = $0019 +tZIntVal = $0041 +tZoomBox = $0088 +tZoomDec = $008E +tZoomIn = $0089 +tZoomInt = $008C +tZoomOut = $008A +tZoomPrev = $008D +tZoomSqr = $008B +tZoomStat = $008F +tZoomStd = $0086 +tZoomSto = $0092 +tZoomtrg = $0087 +tZQuadrant = $0017 +tZTest = $003B +u0 = $D01EB1 +u02 = $D01ECC +un1 = $D01F02 +un2 = $D01F0B +UNARY = $00B0 +UNARYLR = $00BC +UndefObj = $000E +UnitVector = $D20A25 +UnknownEquObj = $000A +UnknownObj = $0009 +unMax = $D01DD6 +unMin = $D01DF1 +uPlotStart = $D01DCD +uPlotStep = $D01E15 +usbActivityHookActive = $0000 +USBActivityHookPtr = $D02617 +usbDataWaiting = $0005 +USBenabled = $0005 +USBFlag1 = $0040 +USBFlag2 = $0041 +USBFlag3 = $0042 +USBFlag4 = $0043 +usbReceiveZone1 = $0002 +usbTimeoutError = $0000 +useFastCirc = $0004 +UseLargeFont_SMC = $D202C0 +useRclQueueEnd = $0002 +userMem = $D1A881 +useTokensInString = $0004 +uThetMax = $D01DA0 +uThetMin = $D01D97 +uThetStep = $D01DA9 +uTmax = $D01DBB +uTmin = $D01DB2 +uTStep = $D01DC4 +uu0 = $D01DDF +uu02 = $D01DFA +uv0 = $D01DE8 +uv02 = $D01E03 +uw0 = $D01E0C +uw02 = $D01E27 +uXmax = $D01D6A +uXmin = $D01D61 +uXres = $D01E1E +uXscl = $D01D73 +uYmax = $D01D85 +uYmin = $D01D7C +uYscl = $D01D8E +v0 = $D01EBA +v02 = $D01ED5 +varGraphRef = $0006 +varTypeMask = $001F +Vertex = $D20A0E +VertexName = $D20A06 +vertSplit = $0001 +vn1 = $D01F14 +vn2 = $D01F1D +vRam = $D40000 +vRamEnd = $D65800 +vToks = $005C +VX_3D_GUARD = $0001 +VX_ANIMATION_BONE = $8000 +VX_ANIMATION_MATRIX_SIZE = $000F +VX_BATCH_DATA = $D1BE00 +VX_BLUE_BITS = $0018 +VX_BPP16 = $002D +VX_BPP8 = $0027 +VX_CALL0_NEG = $0010 +VX_CALL0_POS = $0023 +VX_CALL1_NEG = $001A +VX_CALL1_POS = $0019 +VX_CALL_EXIT = $004C +VX_CALL_NULL = $0026 +VX_CLIP_VERTEX0 = $D1B5A3 +VX_CLIP_VERTEX1 = $D1B5B5 +VX_COLOR_LOW_BIT = $0029 +VX_COLOR_LUT = $D00000 +VX_COLOR_LUT_DATA = $D1DF6F +VX_DATA_VERTEX_SIZE = $0009 +VX_DEPTH_BITS = $0018 +VX_DEPTH_BUCKET = $D03200 +VX_DEPTH_MAX = $FFFFFF +VX_DEPTH_MIN = $0000 +VX_DEPTH_OFFSET = $800000 +VX_DEPTH_TEST = $0001 +VX_ERROR_NOT_FOUND = $00FF +VX_ERROR_RAM_FULL = $00FE +VX_FALSE = $0000 +VX_FDUDX = $FFFFFFFC +VX_FDUDY = $FFFFFFF6 +VX_FDVDX = $FFFFFFFA +VX_FDVDY = $FFFFFFF4 +VX_FRAMEBUFFER_AUX0 = $D40000 +VX_FRAMEBUFFER_AUX1 = $D52C00 +VX_FRAMEBUFFER_SIZE = $12C00 +VX_GEOMETRY_CI9 = $000A +VX_GEOMETRY_COLOR = $000A +VX_GEOMETRY_DEPTH = $0000 +VX_GEOMETRY_ID = $0006 +VX_GEOMETRY_INDEX = $0003 +VX_GEOMETRY_N3CI9 = $000D +VX_GEOMETRY_N3TI9 = $0013 +VX_GEOMETRY_QUEUE = $D10000 +VX_GEOMETRY_SHADER_CODE = $E30800 +VX_GEOMETRY_SHADER_DATA = $E30800 +VX_GEOMETRY_TEXTURE = $0010 +VX_GEOMETRY_TI9 = $0010 +VX_GREEN_BITS = $0007 +VX_INDEX0 = $0000 +VX_INDEX1 = $0003 +VX_INDEX2 = $0006 +VX_INVERSE_TABLE = $D1DCEF +VX_LCD_BUFFER = $E30010 +VX_LCD_CTRL = $E30018 +VX_LCD_ICR = $E30028 +VX_LCD_IMSC = $E3001C +VX_LCD_ISR = $E30020 +VX_LCD_PALETTE = $E30200 +VX_LCD_TIMING2 = $E30008 +VX_LIGHT0_AMBIANT = $0015 +VX_LIGHT0_POSITION = $0016 +VX_LIGHT0_VECTOR = $0012 +VX_LIGHT_AMBIANT = $0003 +VX_LIGHT_POSITION = $0004 +VX_LIGHT_SIZE = $000A +VX_LIGHT_VECTOR = $0000 +VX_MATRIX0 = $0000 +VX_MATRIX0_C0 = $0000 +VX_MATRIX0_C1 = $0001 +VX_MATRIX0_C2 = $0002 +VX_MATRIX0_C3 = $0003 +VX_MATRIX0_C4 = $0004 +VX_MATRIX0_C5 = $0005 +VX_MATRIX0_C6 = $0006 +VX_MATRIX0_C7 = $0007 +VX_MATRIX0_C8 = $0008 +VX_MATRIX0_TX = $0009 +VX_MATRIX0_TY = $000C +VX_MATRIX0_TZ = $000F +VX_MATRIX_C0 = $0000 +VX_MATRIX_C1 = $0001 +VX_MATRIX_C2 = $0002 +VX_MATRIX_C3 = $0003 +VX_MATRIX_C4 = $0004 +VX_MATRIX_C5 = $0005 +VX_MATRIX_C6 = $0006 +VX_MATRIX_C7 = $0007 +VX_MATRIX_C8 = $0008 +VX_MATRIX_SIZE = $0012 +VX_MATRIX_TX = $0009 +VX_MATRIX_TY = $000C +VX_MATRIX_TZ = $000F +VX_MAX_BATCH = $0040 +VX_MAX_PATCH_SIZE = $0010 +VX_MAX_RLE = $D1C49B +VX_MAX_TMP_VERTEX = $0008 +VX_MAX_TRIANGLE = $1000 +VX_MAX_VERTEX = $0800 +VX_MODELGUARD = $0001 +VX_PATCH_INPUT = $D1B49F +VX_PATCH_OUTPUT = $D1B4DF +VX_PIXEL_SHADER_CODE = $E10010 +VX_PIXEL_SHADER_CONSTANT = $D00000 +VX_PIXEL_SHADER_COPY = $D1D77F +VX_PIXEL_SHADER_DATA = $D1C81F +VX_PIXEL_SHADER_SIZE = $0040 +VX_PIXEL_SHADER_SUBSIZE = $000A +VX_PS_1.0 = $0001 +VX_QUATERNION_SIZE = $000C +VX_QW = $0000 +VX_QX = $0003 +VX_QY = $0006 +VX_QZ = $0009 +VX_RED_BITS = $00E0 +VX_REGISTER0 = $0000 +VX_REGISTER1 = $0003 +VX_REGISTER2 = $0006 +VX_REGISTER3 = $0009 +VX_REGISTER_C0 = $FFFFFFE5 +VX_REGISTER_C1 = $FFFFFFEB +VX_REGISTER_C2 = $FFFFFFF1 +VX_REGISTER_SIZE = $000C +VX_REGISTER_U0 = $FFFFFFE3 +VX_REGISTER_U1 = $FFFFFFE9 +VX_REGISTER_U2 = $FFFFFFEF +VX_REGISTER_V0 = $FFFFFFE4 +VX_REGISTER_V1 = $FFFFFFEA +VX_REGISTER_V2 = $FFFFFFF0 +VX_REGISTER_X0 = $FFFFFFE1 +VX_REGISTER_X1 = $FFFFFFE7 +VX_REGISTER_X2 = $FFFFFFED +VX_REGISTER_Y0 = $FFFFFFE0 +VX_REGISTER_Y1 = $FFFFFFE6 +VX_REGISTER_Y2 = $FFFFFFEC +VX_RLE_COMPRESSED = $0040 +VX_SCREEN_HCENTER = $0078 +VX_SCREEN_HEIGHT = $00F0 +VX_SCREEN_WCENTER = $00A0 +VX_SCREEN_WIDTH = $0140 +VX_SHADER_INTERPOLATION_CODE = $E30800 +VX_SHADER_INTERPOLATION_COPY = $D1D41F +VX_SHADER_VERTEX_SIZE = $0010 +VX_SIN_LUT_DATA = $D1FF6F +VX_SIN_TABLE = $D02000 +VX_SIN_TABLE_SIZE = $0200 +VX_TIMER_COUNT = $F20000 +VX_TIMER_CTRL = $F20030 +VX_TRUE = $0001 +VX_VERSION = $0010 +VX_VERTEX_BASE = $0000 +VX_VERTEX_BOX = $0008 +VX_VERTEX_BUFFER = $D08000 +VX_VERTEX_CODE = $0000 +VX_VERTEX_GPR0 = $0004 +VX_VERTEX_GPR1 = $0005 +VX_VERTEX_NORMAL = $0006 +VX_VERTEX_NX = $0006 +VX_VERTEX_NY = $0007 +VX_VERTEX_NZ = $0008 +VX_VERTEX_POOL = $D1B51F +VX_VERTEX_POSITION = $0000 +VX_VERTEX_RX = $0007 +VX_VERTEX_RY = $000A +VX_VERTEX_RZ = $000D +VX_VERTEX_SHADER_CODE = $E30800 +VX_VERTEX_SHADER_COPY = $D1BA0B +VX_VERTEX_SHADER_DATA = $E30800 +VX_VERTEX_SHADER_SIZE = $0400 +VX_VERTEX_SX = $0002 +VX_VERTEX_SY = $0001 +VX_VERTEX_UNIFORM = $0006 +VX_VERTEX_VX = $0000 +VX_VERTEX_VY = $0002 +VX_VERTEX_VZ = $0004 +VX_VRAM = $E30800 +VX_VS_1.x = $0001 +vxBatchData = $D1BD8C +vxBatchOffset = $D1BD29 +vxBatchOffset0 = $D1C048 +vxBlendRBG = $D1B3E5 +vxBloomFilter = $D1C5E0 +vxBloomLoop = $D1C5E8 +VXBLURLOOP = $D1C772 +vxBufferOffset = $D1BCD0 +vxBufferOffsetAddRZ = $D1BCF4 +vxClampZ = $D1B901 +vxClearBuffer = $D1B3A1 +vxClipCheck0 = $D1B6B5 +vxClipContinueX = $D1B7B2 +vxClipDistance = $D1B657 +vxClipDivide = $D1B8F4 +vxClipDraw = $D1B654 +vxClipEnd = $D1B633 +vxClipError0 = $D1B9E6 +vxClipError1 = $D1B9F0 +vxClipError2 = $D1B9F9 +vxClipError3 = $D1BA03 +vxClipFactor = $D1B86E +vxClipFrustrumCode = $D1B9D4 +vxClipLoop = $D1B63D +vxClipMixByte = $D1B817 +vxClipMixWord = $D1B827 +vxClipNextX = $D1B986 +vxClipNextXCarry = $D1B985 +vxClipNextY = $D1B925 +vxClipNextYCarry = $D1B924 +vxClipPlanePolygon = $D1B65B +vxClipSutherHodgmanLoop = $D1B68D +vxClipTriangle = $D1B5CB +vxClipWriteX = $D1B9C9 +vxClipWriteY = $D1B95B +vxCmdBackfaceCull = $D1C37D +vxCmdBackfaceCull2 = $D1C3F0 +vxCmdComputeBone = $D1C10D +vxCmdDepthCompute = $D1C1B8 +vxCmdDepthPositive = $D1C1EE +vxCmdDepthSort = $D1C18F +vxCmdDraw = $D1BFF0 +vxCmdExecute = $D1BF00 +vxCmdExeLoop = $D1BF43 +vxCmdFillBucket2 = $D1C353 +vxCmdFillBucketInner0 = $D1C263 +vxCmdFillBucketInner1 = $D1C2DC +vxCmdFillBucketOuter0 = $D1C260 +vxCmdFillBucketOuter1 = $D1C2D9 +vxCmdFormatCol = $D1BF59 +vxCmdFormatTex = $D1BF98 +vxCmdReadBuffer0 = $D1C305 +vxCmdReadBuffer1 = $D1C28C +vxCmdRestoreBucket1 = $D1C2BF +vxCmdRestoreBucket2 = $D1C338 +vxCmdRestoreBucketLoop0 = $D1C236 +vxCmdStream = $D1C07E +vxCmdStreamLoop = $D1C0F7 +vxCmdStreamLoopBack = $D1C105 +vxCmdWriteBuffer0 = $D1C2F0 +vxCmdWriteBuffer1 = $D1C277 +vxConvolveBlur = $D1C76A +vxCopyData = $D1C48E +vxCopyImage = $D1C482 +vxCopyLoop = $D1C79E +vxCos = $D1B19F +vxCreateMemoryPool = $D1C4CE +vxCrossProduct = $D1B228 +vxDepthSortTemp = $E30014 +vxDestroyMemoryPool = $D1C527 +vxDiscard = $D1C052 +vxDivideNext0 = $E309E3 +vxDotProduct = $D1B2D3 +vxDownDistance = $D1B7F9 +vxEdgeRentring = $D1B78F +vxEngineInit = $D2016F +vxEngineQuit = $D201EF +vxFileUnarchived = $D1C47F +vxFindFile = $D1C467 +vxFlatCyclicLoop = $D1AA54 +vxFlatPolygon = $D1AA4E +vxFlatTriangle = $D1AA79 +vxFlatTriangleNoClip = $D1AA8A +vxFlushLCD = $D1B3B3 +vxFormatOffset = $D1BD2F +vxFormatOffset0 = $D1C054 +vxFramebuffer = $E30014 +vxfTransform = $D1ADC3 +vxGeometryBucket = $D1BD25 +vxGeometryDepthClamp = $D1BD15 +vxGeometryDiscard = $D1BD2D +vxGeometryPass = $D1BCF4 +vxGeometryShader = $D1BCCE +vxGeometrySize = $D1BD89 +vxHSBDepthSkip = $D1C20A +vxIdentityMatrix = $D1AC13 +vxIdentityQuaternion = $D1AF22 +vxImageSubCopy = $D1C791 +vxKeyAnimation = $D1BDD2 +vxLeftDistance = $D1B7E8 +vxLength = $D1B31B +vxLerpRBG = $D1B434 +vxLight0 = $E30812 +vxLight0Cache = $D1BDC8 +vxLitRBG = $D1B3F5 +vxLoadPaletteLoop = $D1B382 +vxLockWrite = $D1C565 +vxMatrixColLoop = $D1ACC0 +vxMatrixLightEarlyOut = $D1ADBB +vxMatrixLightLoop = $D1AD69 +vxMatrixLightning = $D1AD66 +vxMatrixLoadIdentity = $D1AC25 +vxMatrixMlt = $D1ACBB +vxMatrixRotationX = $D1AC37 +vxMatrixRotationY = $D1AC8F +vxMatrixRotationZ = $D1AC63 +vxMatrixRowLoop = $D1ACC3 +vxMatrixTransform = $D1AD1E +vxMatrixTranspose = $D1AD41 +vxMemorySafeErase = $D1C51E +vxMipmapLOD = $D1C7AD +vxMixWrite = $D1B5C7 +vxMltFP8 = $D1B1FA +vxMM0 = $D1B697 +vxMM1 = $D1B69F +vxMM2 = $D1B6C2 +vxModelView = $E30800 +vxModelViewCache = $D1BD92 +vxModelWorld = $D1BDA4 +vxNClip = $D1BD37 +vxNewSize = $D1B59F +vxNext0 = $E30A36 +vxNextPlane0 = $D1B5FD +vxNextPlane1 = $D1B60F +vxNextPlane2 = $D1B621 +vxNormalize = $D1B31A +vxOptimizedKernel = $D1C5ED +vxPass = $D1C047 +vxPerspectiveClip0 = $E30A86 +vxPerspectiveClip1 = $E30A92 +vxPerspectiveClip2 = $E30A9C +vxPerspectiveClip3 = $E30AA8 +vxPerspectiveClip4 = $E30AB2 +vxPixelShader = $E10010 +vxPixelShaderExit = $E30B5B +vxPixelShaderExitLUT = $D1DCC2 +vxPixelShaderLengthLUT = $D1DA42 +vxPlaneBit0 = $0080 +vxPlaneBit1 = $0040 +vxPlaneBit2 = $0020 +vxPlaneBit3 = $0010 +vxPlaneBit4 = $0008 +vxPosition = $D03406 +vxQuatDivide = $D1B06D +vxQuaternionConjugate = $D1B04A +vxQuaternionGetMatrix = $D1B06E +vxQuaternionLoadIdentity = $D1AF2E +vxQuaternionLoadRotation = $D1AF40 +vxQuaternionMagnitude = $D1B024 +vxQuaternionMlt = $D1AF41 +vxQuaternionNormalize = $D1B06C +vxQuaternionRotationAxis = $D1B11C +vxQuaternionSlerp = $D1B17B +vxQuatIndexZero = $D1B1C7 +vxQuatMlt = $D1B17C +vxQuatNegResultCst = $D1B1D0 +vxQuatSquare = $D1B18D +vxRasterPixel = $D1AA3B +vxRasterPixelEntry = $D1AA3F +vxReflect = $D1B31C +vxRegister01Direction = $E30888 +vxRegister01End = $E308BA +vxRegister01ErrorAdvance = $E3088D +vxRegister01Increment = $E308A7 +vxRegister01Interpolation = $E30841 +vxRegister01Loop = $E308A3 +vxRegister01Next = $E308AB +vxRegister01Restore = $E308A6 +vxRegister01SP = $E308B7 +vxRegister0Direction = $E3096B +vxRegister0End = $E309AA +vxRegister0ErrorAdvance = $E30970 +vxRegister0Increment = $E3098A +vxRegister0Interpolation = $E30943 +vxRegister0Loop = $E30986 +vxRegister0Next = $E3098E +vxRegister0Restore = $E30989 +vxRegister0SP = $E3099A +vxRegister11Direction = $E30908 +vxRegister11End = $E3093A +vxRegister11ErrorAdvance = $E3090D +vxRegister11Increment = $E30927 +vxRegister11Interpolation = $E308C2 +vxRegister11Loop = $E30923 +vxRegister11Next = $E3092B +vxRegister11Restore = $E30926 +vxRegister11SP = $E30937 +vxRegisterDerivative = $E309AA +vxRegisterDerivativeAbs = $E30A0D +vxRegisterDerivativeDY0 = $E309DD +vxRegisterDerivativeDY1 = $E30A42 +vxRegisterDerivativeDY2 = $E30AA2 +vxRegisterDerivativeNull = $E309FA +vxRegisterGradientEnd = $E30B3C +vxRegisterGradientLoop = $E30B1F +vxResetPalette = $D1B37C +vxRightDistance = $D1B7D5 +vxRLECopyEnd = $D1C4C1 +vxRLECopyRow = $D1C4C7 +vxRLECopyToken = $D1C4B3 +vxRLELoop = $D1C49A +vxSetPalette = $D1B396 +vxShaderGeneralInterpolation = $E10026 +vxShaderOffset = $E30B0D +vxShaderTexturePage = $E30B03 +vxShaderUniform0 = $E30B4C +vxSin = $D1B1A0 +vxSinNegate = $D1B1BB +vxSinSkp1 = $D1B1A9 +vxSqAbsSkp = $D1B1DF +vxSquareFP8 = $D1B1D5 +vxSubmission0 = $D1C024 +vxSubmissionQueue = $D1BD86 +vxSwapLCD = $D1B3D2 +vxTestAABB = $D1C7AC +vxTextureCyclicLoop = $D1DCCA +vxTexturePolygon = $D1DCC4 +vxTextureSwap0 = $E30815 +vxTextureSwap1 = $E3081F +vxTextureSwap2 = $E30824 +vxTextureTriangle = $E30800 +vxTextureTriangleNoClip = $E3080D +vxTimerRead = $D1AA2A +vxTimerStart = $D1AA0C +vxTModelWorld = $D1BDB6 +vxUncompressRLE = $D1C491 +vxUnlockWrite = $D1C552 +vxUpDistance = $D1B809 +vxVertexAdress = $D1B5A0 +vxVertexBoxCode = $D1C160 +vxVertexBoxLoop = $D1C16E +vxVertexCacheFill = $D1BD8F +vxVertexDirty = $00FF +vxVertexShader = $E3081C +vxVertexSkip0 = $E3086C +vxVertexStreamBox = $D1C161 +vxWaitLCD = $D1B3C5 +vxWaitLoop = $D1B3CD +vxx = $D1B883 +vxZDistance = $D1B7CC +vxZX7Uncompress = $D1C578 +w0 = $D01EDE +w02 = $D01EF9 +web_err_mask = $0060 +webMode = $0000 +webVert = $0001 +winBtm = $D02505 +windowHookActive = $0002 +windowHookPtr = $D025E4 +WindowObj = $000F +winLeft = $D02507 +winLeftEdge = $D02506 +winTop = $D02504 +wn1 = $D01F26 +wn2 = $D01F2F +WorldMatrix = $D20A4C +write_on_graph = $0004 +writeSizeBytesOnly = $0005 +xapFlag0 = $002E +xapFlag1 = $002F +xapFlag2 = $0030 +xapFlag3 = $0031 +XFACTt = $0028 +Xmax = $D01E3C +XMAXt = $000B +XMean = $D0119A +Xmin = $D01E33 +XMINt = $000A +XresO = $D01EF0 +XRESt = $0036 +Xscl = $D01E45 +XSCLt = $0002 +yEqualsHookPtr = $D025EA +yEquHookActive = $0004 +YFACTt = $0029 +Ymax = $D01E57 +YMAXt = $000D +YMean = $D011EB +Ymin = $D01E4E +YMINt = $000C +Yscl = $D01E60 +YSCLt = $0003 +ZStat = $750A7B2 +ZStoObj = $0010 diff --git a/bin/TEST1.lst b/bin/TEST1.lst new file mode 100644 index 0000000..069128d --- /dev/null +++ b/bin/TEST1.lst @@ -0,0 +1,11458 @@ + 1 00:0000 - - - - #include "vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" + 1 00:0000 - - - - #define dbgbreak scf \ sbc hl, hl \ ld (hl), 2 + 2 00:0000 - - - - #define dbgstart0 push hl \ ld hl,$F20030 \ set 0,(hl) \ pop hl + 3 00:0000 - - - - #define dbgstop0 push hl \ ld hl,$F20030 \ res 0,(hl) \ pop hl + 4 00:0000 - - - - + 5 00:0000 - - - - ; Virtual-3D library, version 1.0 + 6 00:0000 - - - - ; + 7 00:0000 - - - - ; Copyright (c) 2016-2017, 'TheMachine02' + 8 00:0000 - - - - ; All rights reserved. + 9 00:0000 - - - - ; + 10 00:0000 - - - - ; Redistribution and use in source and binary forms, with or without + 11 00:0000 - - - - ; modification, are permitted provided that the following conditions are met: + 12 00:0000 - - - - ; + 13 00:0000 - - - - ; ; Redistributions of source code must retain the above copyright notice, this + 14 00:0000 - - - - ; list of conditions and the following disclaimer. + 15 00:0000 - - - - ; + 16 00:0000 - - - - ; ; Redistributions in binary form must reproduce the above copyright notice, + 17 00:0000 - - - - ; this list of conditions and the following disclaimer in the documentation + 18 00:0000 - - - - ; and/or other materials provided with the distribution. + 19 00:0000 - - - - ; + 20 00:0000 - - - - ; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + 21 00:0000 - - - - ; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + 22 00:0000 - - - - ; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + 23 00:0000 - - - - ; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + 24 00:0000 - - - - ; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + 25 00:0000 - - - - ; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + 26 00:0000 - - - - ; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + 27 00:0000 - - - - ; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + 28 00:0000 - - - - ; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + 29 00:0000 - - - - ; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + 30 00:0000 - - - - ; ; + 31 00:0000 - - - - + 32 00:0000 - - - - #ifndef VX_3D_GUARD + 33 00:0000 - - - - #define VX_3D_GUARD + 34 00:0000 - - - - +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" + 39 00:0000 - - - - #include "relocate.inc" +Listing for file "include\\relocate.inc" + 1 00:0000 - - - - #macro relocate(new_location) + 2 00:0000 #ifdef old_location + 3 00:0000 .echo "Error: You cannot nest relocate blocks." + 4 00:0000 #else + 5 00:0000 #define old_location eval($) + 6 00:0000 .org new_location + 7 00:0000 #define g_location eval(new_location) + 8 00:0000 #endif + 9 00:0000 #endmacro + 10 00:0000 - - - - #define .relocate relocate( + 11 00:0000 - - - - + 12 00:0000 - - - - #macro endrelocate() + 13 00:0000 #ifdef g_location + 14 00:0000 .org $-g_location + old_location + 15 00:0000 #undefine g_location + 16 00:0000 #undefine old_location + 17 00:0000 #else + 18 00:0000 .echo "Error : No relocate statements corresponds to this endrelocate." + 19 00:0000 #endif + 20 00:0000 #endmacro + 21 00:0000 - - - - #define .endrelocate endrelocate( +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" + 178 00:0000 - - - - + 179 00:0000 - - - - ; global compilation variable ; + 180 00:0000 - - - - + 181 00:0000 - - - - #define VX_PS_1.0 + 182 00:0000 - - - - #define VX_VS_1.x + 183 00:0000 - - - - .echo "vxLib API version 1.0" + 184 00:0000 - - - - .echo "pixel shader version : ps_1.0" + 185 00:0000 - - - - ; ps_1.0 + 186 00:0000 - - - - .echo "vertex shader version : vs_1.x" + 187 00:0000 - - - - + 188 00:0000 - - - - .addinstr ldi (de),a 1312 2 NOP 0 + 189 00:0000 - - - - .addinstr xori a,(de) 13EBAEEB 4 NOP 0 + 190 00:0000 - - - - .addinstr andi a,(de) 13EBA6EB 4 NOP 0 + 191 00:0000 - - - - .addinstr ori a,(de) 13EBB6EB 4 NOP 0 + 192 00:0000 - - - - + 193 00:0000 - - - - #endif +Listing for file "example1.ez80" + 2 00:0000 - - - - + 3 00:0000 - - - - #define DELTA 4096 + 4 00:0000 - - - - + 5 00:0000 - - - - .org userMem - 2 + 6 D1:A87F EF 7B - - .db tExtTok, tAsm84CeCmp + 7 D1:A881 - - - - .assume ADL=1 + 8 D1:A881 - - - - + 9 D1:A881 - - - - ; init the virtual 3d library + 10 D1:A881 CD 6F 01 D2 call vxEngineInit + 11 D1:A885 D8 - - - ret c ; qui if error at init + 12 D1:A886 - - - - + 13 D1:A886 21 06 0A D2 ld hl, VertexName + 14 D1:A88A CD 67 C4 D1 call vxFindFile + 15 D1:A88E D8 - - - ret c + 16 D1:A88F 22 0E 0A D2 ld (Vertex), hl + 17 D1:A893 - - - - + 18 D1:A893 21 11 0A D2 ld hl, TriangleName + 19 D1:A897 CD 67 C4 D1 call vxFindFile + 20 D1:A89B D8 - - - ret c + 21 D1:A89C 22 19 0A D2 ld (Triangle), hl + 22 D1:A8A0 - - - - + 23 D1:A8A0 - - - - + 24 D1:A8A0 - - - - ; setup global variable for rendering, euler angle and the translation of WorldMatrix + 25 D1:A8A0 - - - - + 26 D1:A8A0 21 00 00 00 ld hl, 0 + 27 D1:A8A4 22 6D 0A D2 ld (EulerAngle), hl + 28 D1:A8A8 - - - - + 29 D1:A8A8 DD 21 4C 0A + D2 - - - ld ix, WorldMatrix + 30 D1:A8AD ED 22 00 - lea hl, ix+0 + 31 D1:A8B0 CD 25 AC D1 call vxMatrixLoadIdentity + 32 D1:A8B4 21 00 00 01 ld hl, 65536 + 33 D1:A8B8 DD 2F 0F - ld (ix+15), hl ; Z translation of the matrix + 34 D1:A8BB - - - - + 35 D1:A8BB - - - - MainLoop: + 36 D1:A8BB - - - - + 37 D1:A8BB CD 0C AA D1 call vxTimerStart + 38 D1:A8BF - - - - + 39 D1:A8BF 2A 6D 0A D2 ld hl, (EulerAngle) + 40 D1:A8C3 FD 21 2E 0A + D2 - - - ld iy, Quaternion + 41 D1:A8C8 DD 21 25 0A + D2 - - - ld ix, UnitVector + 42 D1:A8CD CD 1C B1 D1 call vxQuaternionRotationAxis + 43 D1:A8D1 DD 21 4C 0A + D2 - - - ld ix, WorldMatrix + 44 D1:A8D6 CD 6E B0 D1 call vxQuaternionGetMatrix + 45 D1:A8DA ED 55 00 - lea iy, ix+0 + 46 D1:A8DD DD 21 1C 0A + D2 - - - ld ix, ScaleMatrix + 47 D1:A8E2 21 4C 0A D2 ld hl, WorldMatrix + 48 D1:A8E6 CD BB AC D1 call vxMatrixMlt + 49 D1:A8EA - - - - + 50 D1:A8EA 3E 0A - - ld a, VX_GEOMETRY_CI9 + 51 D1:A8EC DD 21 4C 0A + D2 - - - ld ix, WorldMatrix + 52 D1:A8F1 FD 21 5E 0A + D2 - - - ld iy, ModelMatrix + 53 D1:A8F6 01 00 80 D0 ld bc, VX_VERTEX_BUFFER + 54 D1:A8FA 2A 0E 0A D2 ld hl, (Vertex) + 55 D1:A8FE ED 5B 19 0A + D2 - - - ld de, (Triangle) + 56 D1:A903 CD F0 BF D1 call vxCmdDraw + 57 D1:A907 - - - - + 58 D1:A907 2A 89 BD D1 ld hl, (vxGeometrySize) + 59 D1:A90B 22 72 A9 D1 ld (triangle_count), hl + 60 D1:A90F - - - - + 61 D1:A90F CD 8F C1 D1 call vxCmdDepthSort + 62 D1:A913 - - - - + 63 D1:A913 0E 00 - - ld c, %00000000 + 64 D1:A915 CD A1 B3 D1 call vxClearBuffer + 65 D1:A919 CD 00 BF D1 call vxCmdExecute + 66 D1:A91D - - - - + 67 D1:A91D - - - - ; timer & counter + 68 D1:A91D - - - - + 69 D1:A91D 01 FF 09 00 ld bc, 320*8-1 + 70 D1:A921 ED 5B 14 00 + E3 - - - ld de, (vxFramebuffer) + 71 D1:A926 B7 - - - or a, a + 72 D1:A927 ED 62 - - sbc hl, hl + 73 D1:A929 19 - - - add hl, de + 74 D1:A92A 13 - - - inc de + 75 D1:A92B 36 00 - - ld (hl), 0 + 76 D1:A92D ED B0 - - ldir + 77 D1:A92F - - - - + 78 D1:A92F 21 00 00 00 ld hl, 0 + 79 D1:A933 22 91 02 D2 ld (TextXPos_SMC), hl + 80 D1:A937 3E 00 - - ld a, 0 + 81 D1:A939 32 9F 02 D2 ld (TextYPos_SMC), a + 82 D1:A93D - - - - + 83 D1:A93D CD 2A AA D1 call vxTimerRead + 84 D1:A941 - - - - ; do (ade/256)/187 + 85 D1:A941 ED 53 00 0A + D2 - - - ld (Temp), de + 86 D1:A946 32 03 0A D2 ld (Temp+3), a + 87 D1:A94A ED 5B 01 0A + D2 - - - ld de, (Temp+1) + 88 D1:A94F - - - - ; divide de by 187 + 89 D1:A94F EB - - - ex de, hl + 90 D1:A950 01 BB 00 00 ld bc, 187 + 91 D1:A954 CD 99 04 D2 call __idivs_ASM + 92 D1:A958 11 04 00 00 ld de, 4 + 93 D1:A95C D5 - - - push de + 94 D1:A95D E5 - - - push hl + 95 D1:A95E CD 1A 03 D2 call _PrintUInt + 96 D1:A962 D1 - - - pop de + 97 D1:A963 E1 - - - pop hl + 98 D1:A964 - - - - + 99 D1:A964 2A 91 02 D2 ld hl, (TextXPos_SMC) + 100 D1:A968 11 08 00 00 ld de, 8 + 101 D1:A96C 19 - - - add hl, de + 102 D1:A96D 22 91 02 D2 ld (TextXPos_SMC), hl + 103 D1:A971 - - - - + 104 D1:A971 - - - - triangle_count=$+1 + 105 D1:A971 21 00 00 00 ld hl, 0 + 106 D1:A975 11 04 00 00 ld de, 4 + 107 D1:A979 D5 - - - push de + 108 D1:A97A E5 - - - push hl + 109 D1:A97B CD 1A 03 D2 call _PrintUInt + 110 D1:A97F D1 - - - pop de + 111 D1:A980 E1 - - - pop hl + 112 D1:A981 - - - - + 113 D1:A981 CD B3 B3 D1 call vxFlushLCD + 114 D1:A985 - - - - + 115 D1:A985 - - - - KeyboardTest: + 116 D1:A985 21 00 00 F5 ld hl,$F50000 + 117 D1:A989 36 02 - - ld (hl),2 + 118 D1:A98B AF - - - xor a,a + 119 D1:A98C - - - - kwait: + 120 D1:A98C BE - - - cp a,(hl) + 121 D1:A98D 20 FD - - jr nz,kwait + 122 D1:A98F - - - - + 123 D1:A98F 11 08 00 00 ld de, 8 + 124 D1:A993 3A 1E 00 F5 ld a, ($F5001E) + 125 D1:A997 CB 4F - - bit 1, a + 126 D1:A999 28 09 - - jr z, _kskip + 127 D1:A99B 2A 6D 0A D2 ld hl, (EulerAngle) + 128 D1:A99F 19 - - - add hl, de + 129 D1:A9A0 22 6D 0A D2 ld (EulerAngle), hl + 130 D1:A9A4 - - - - _kskip: + 131 D1:A9A4 11 F8 FF FF ld de, -8 + 132 D1:A9A8 3A 1E 00 F5 ld a, ($F5001E) + 133 D1:A9AC CB 57 - - bit 2, a + 134 D1:A9AE 28 09 - - jr z, _kskip2 + 135 D1:A9B0 2A 6D 0A D2 ld hl, (EulerAngle) + 136 D1:A9B4 19 - - - add hl, de + 137 D1:A9B5 22 6D 0A D2 ld (EulerAngle), hl + 138 D1:A9B9 - - - - _kskip2: + 139 D1:A9B9 3A 1E 00 F5 ld a, ($F5001E) + 140 D1:A9BD CB 47 - - bit 0, a + 141 D1:A9BF 28 0D - - jr z, _kskip5 + 142 D1:A9C1 2A 58 0A D2 ld hl, (WorldMatrix+12) + 143 D1:A9C5 11 00 10 00 ld de, DELTA + 144 D1:A9C9 19 - - - add hl, de + 145 D1:A9CA 22 58 0A D2 ld (WorldMatrix+12), hl + 146 D1:A9CE - - - - _kskip5: + 147 D1:A9CE - - - - + 148 D1:A9CE 3A 1E 00 F5 ld a, ($F5001E) + 149 D1:A9D2 CB 5F - - bit 3, a + 150 D1:A9D4 28 0D - - jr z, _kskip6 + 151 D1:A9D6 2A 58 0A D2 ld hl, (WorldMatrix+12) + 152 D1:A9DA 11 00 F0 FF ld de, -DELTA + 153 D1:A9DE 19 - - - add hl, de + 154 D1:A9DF 22 58 0A D2 ld (WorldMatrix+12), hl + 155 D1:A9E3 - - - - _kskip6: + 156 D1:A9E3 - - - - + 157 D1:A9E3 2A 5B 0A D2 ld hl, (WorldMatrix+15) + 158 D1:A9E7 - - - - + 159 D1:A9E7 3A 12 00 F5 ld a, ($F50012) + 160 D1:A9EB CB 47 - - bit 0,a + 161 D1:A9ED 28 05 - - jr z, _kskip3 + 162 D1:A9EF 11 00 10 00 ld de, DELTA + 163 D1:A9F3 19 - - - add hl, de + 164 D1:A9F4 - - - - _kskip3: + 165 D1:A9F4 - - - - + 166 D1:A9F4 CB 67 - - bit 4,a + 167 D1:A9F6 28 05 - - jr z, _kskip4 + 168 D1:A9F8 11 00 F0 FF ld de, -DELTA + 169 D1:A9FC 19 - - - add hl, de + 170 D1:A9FD - - - - _kskip4: + 171 D1:A9FD - - - - + 172 D1:A9FD 22 5B 0A D2 ld (WorldMatrix+15), hl + 173 D1:AA01 - - - - + 174 D1:AA01 3A 1C 00 F5 ld a,($F5001C) + 175 D1:AA05 CB 77 - - bit 6,a + 176 D1:AA07 - - - - + 177 D1:AA07 CA BB A8 D1 jp z, MainLoop + 178 D1:AA0B C9 - - - ret + 179 D1:AA0C - - - - + 180 D1:AA0C - - - - #include "vxMain.ez80" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" + 1 D1:AA0C - - - - #include "vxTimer.ez80" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxTimer.ez80" + 1 D1:AA0C - - - - #define VX_TIMER_CTRL $F20030 + 2 D1:AA0C - - - - #define VX_TIMER_COUNT $F20000 + 3 D1:AA0C - - - - + 4 D1:AA0C - - - - vxTimerStart: + 5 D1:AA0C - - - - ; now intialise and start the timer (1) + 6 D1:AA0C 21 30 00 F2 ld hl, VX_TIMER_CTRL + 7 D1:AA10 7E - - - ld a, (hl) + 8 D1:AA11 - - - - ; CPU clock, not enable, count up + 9 D1:AA11 E6 F8 - - and %11111000 + 10 D1:AA13 77 - - - ld (hl), a + 11 D1:AA14 2C - - - inc l + 12 D1:AA15 CB CE - - set 1, (hl) + 13 D1:AA17 - - - - ; reset the value + 14 D1:AA17 AF - - - xor a, a + 15 D1:AA18 21 00 00 F2 ld hl, VX_TIMER_COUNT + 16 D1:AA1C 77 - - - ld (hl), a + 17 D1:AA1D 2C - - - inc l + 18 D1:AA1E 77 - - - ld (hl), a + 19 D1:AA1F 2C - - - inc l + 20 D1:AA20 77 - - - ld (hl), a + 21 D1:AA21 2C - - - inc l + 22 D1:AA22 77 - - - ld (hl), a + 23 D1:AA23 21 30 00 F2 ld hl, VX_TIMER_CTRL + 24 D1:AA27 - - - - ; start timer + 25 D1:AA27 CB C6 - - set 0, (hl) + 26 D1:AA29 C9 - - - ret + 27 D1:AA2A - - - - vxTimerRead: + 28 D1:AA2A 21 30 00 F2 ld hl, VX_TIMER_CTRL + 29 D1:AA2E - - - - ; stop the timer + 30 D1:AA2E CB 86 - - res 0, (hl) + 31 D1:AA30 - - - - ; read 24 bits value in the counter register + 32 D1:AA30 21 00 00 F2 ld hl, VX_TIMER_COUNT + 33 D1:AA34 ED 17 - - ld de, (hl) + 34 D1:AA36 23 23 23 - inc hl \ inc hl \ inc hl + 35 D1:AA39 7E - - - ld a, (hl) + 36 D1:AA3A - - - - ; full 32bits value is now ade + 37 D1:AA3A C9 - - - ret +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" + 2 D1:AA3B - - - - #include "vxRaster.ez80" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxRaster.ez80" + 1 D1:AA3B - - - - + 2 D1:AA3B - - - - + 3 D1:AA3B - - - - vxRasterPixel: + 4 D1:AA3B 5E - - - ld e, (hl) + 5 D1:AA3C 23 - - - inc hl + 6 D1:AA3D ED 27 - - ld hl, (hl) + 7 D1:AA3F - - - - vxRasterPixelEntry: + 8 D1:AA3F - - - - ; input : hl :x , [d]e : y, c : color + 9 D1:AA3F - - - - ; output : none + 10 D1:AA3F - - - - ; destroyed : hl, de + 11 D1:AA3F 16 A0 - - ld d, 160 ; [8] + 12 D1:AA41 ED 5C - - mlt de ; [12] + 13 D1:AA43 EB - - - ex de, hl ; [4] + 14 D1:AA44 29 - - - add hl, hl ; [4] + 15 D1:AA45 19 - - - add hl, de ; [4] + 16 D1:AA46 ED 5B 14 00 + E3 - - - ld de, (vxFramebuffer) ; [32] + 17 D1:AA4B 19 - - - add hl, de ; [4] + 18 D1:AA4C 71 - - - ld (hl), c ; [6] + 19 D1:AA4D C9 - - - ret ; [x] + 20 D1:AA4E - - - - + 21 D1:AA4E - - - - vxFlatPolygon: + 22 D1:AA4E D6 02 - - sub a, 2 + 23 D1:AA50 47 - - - ld b, a + 24 D1:AA51 FD 27 00 - ld hl, (iy+0) + 25 D1:AA54 - - - - vxFlatCyclicLoop: + 26 D1:AA54 C5 - - - push bc + 27 D1:AA55 FD 17 03 - ld de, (iy+3) + 28 D1:AA58 FD 07 06 - ld bc, (iy+6) + 29 D1:AA5B E5 - - - push hl + 30 D1:AA5C FD E5 - - push iy + 31 D1:AA5E E5 - - - push hl + 32 D1:AA5F C5 - - - push bc + 33 D1:AA60 D5 - - - push de + 34 D1:AA61 CD 37 BD D1 call vxNClip + 35 D1:AA65 D1 - - - pop de + 36 D1:AA66 C1 - - - pop bc + 37 D1:AA67 E1 - - - pop hl + 38 D1:AA68 DC 8A AA D1 call c,vxFlatTriangleNoClip + 39 D1:AA6C FD E1 - - pop iy + 40 D1:AA6E ED 33 03 - lea iy, iy+3 + 41 D1:AA71 E1 - - - pop hl + 42 D1:AA72 C1 - - - pop bc + 43 D1:AA73 05 - - - dec b + 44 D1:AA74 C2 54 AA D1 jp nz, vxFlatCyclicLoop + 45 D1:AA78 C9 - - - ret + 46 D1:AA79 - - - - + 47 D1:AA79 - - - - vxFlatTriangle: + 48 D1:AA79 32 F7 AB D1 ld (IRasterRBG8), a + 49 D1:AA7D - - - - + 50 D1:AA7D 0A - - - ld a, (bc) + 51 D1:AA7E B6 - - - or (hl) + 52 D1:AA7F EB - - - ex de, hl + 53 D1:AA80 B6 - - - or (hl) + 54 D1:AA81 FD 21 4E AA + D1 - - - ld iy, vxFlatPolygon + 55 D1:AA86 C2 CB B5 D1 jp nz, vxClipTriangle + 56 D1:AA8A - - - - vxFlatTriangleNoClip: + 57 D1:AA8A 23 13 03 - inc hl \ inc de \ inc bc + 58 D1:AA8D - - - - + 59 D1:AA8D 1A - - - ld a, (de) + 60 D1:AA8E 96 - - - sub a, (hl) + 61 D1:AA8F 38 01 - - jr c, IRasterSwap0 + 62 D1:AA91 EB - - - ex de, hl + 63 D1:AA92 - - - - IRasterSwap0: + 64 D1:AA92 0A - - - ld a, (bc) + 65 D1:AA93 96 - - - sub a, (hl) + 66 D1:AA94 30 06 - - jr nc, IRasterSwap1 + 67 D1:AA96 E5 - - - push hl + 68 D1:AA97 B7 - - - or a, a + 69 D1:AA98 ED 62 - - sbc hl, hl + 70 D1:AA9A 09 - - - add hl, bc + 71 D1:AA9B C1 - - - pop bc + 72 D1:AA9C - - - - IRasterSwap1: + 73 D1:AA9C 1A - - - ld a, (de) + 74 D1:AA9D 96 - - - sub a, (hl) + 75 D1:AA9E 30 01 - - jr nc, IRasterSwap2 + 76 D1:AAA0 EB - - - ex de, hl + 77 D1:AAA1 - - - - IRasterSwap2: + 78 D1:AAA1 - - - - + 79 D1:AAA1 0A - - - ld a, (bc) + 80 D1:AAA2 96 - - - sub (hl) + 81 D1:AAA3 C8 - - - ret z + 82 D1:AAA4 - - - - + 83 D1:AAA4 DD 21 00 00 + FF - - - ld ix, $FF0000 + 84 D1:AAA9 FD 21 00 00 + FF - - - ld iy, $FF0000 + 85 D1:AAAE DD 6F - - ld ixl, a + 86 D1:AAB0 ED 44 - - neg + 87 D1:AAB2 32 A7 AB D1 ld (IDeltaY0), a + 88 D1:AAB6 - - - - ; x1-x0 + 89 D1:AAB6 1A - - - ld a, (de) + 90 D1:AAB7 32 8E AB D1 ld (IValueY1), a + 91 D1:AABB 96 - - - sub (hl) + 92 D1:AABC F5 - - - push af + 93 D1:AABD FD 6F - - ld iyl, a + 94 D1:AABF ED 44 - - neg + 95 D1:AAC1 32 B8 AB D1 ld (IDeltaY1), a + 96 D1:AAC5 - - - - + 97 D1:AAC5 7E - - - ld a, (hl) + 98 D1:AAC6 F5 - - - push af + 99 D1:AAC7 - - - - + 100 D1:AAC7 C5 - - - push bc + 101 D1:AAC8 23 - - - inc hl + 102 D1:AAC9 ED 07 - - ld bc, (hl) + 103 D1:AACB EB - - - ex de, hl + 104 D1:AACC 23 - - - inc hl + 105 D1:AACD ED 27 - - ld hl, (hl) + 106 D1:AACF 22 5F AB D1 ld (IValueX1), hl + 107 D1:AAD3 28 29 - - jr z, IRasterNoEdgeWrite + 108 D1:AAD5 3E 13 - - ld a, $13 + 109 D1:AAD7 B7 - - - or a, a + 110 D1:AAD8 ED 42 - - sbc hl, bc + 111 D1:AADA 30 07 - - jr nc, IRasterEdge1 + 112 D1:AADC F6 08 - - or a, $08 + 113 D1:AADE EB - - - ex de, hl + 114 D1:AADF ED 62 - - sbc hl, hl + 115 D1:AAE1 ED 52 - - sbc hl, de + 116 D1:AAE3 - - - - IRasterEdge1: + 117 D1:AAE3 22 B0 AB D1 ld (IDeltaX1), hl + 118 D1:AAE7 32 BB AB D1 ld (ISMC_Code1), a + 119 D1:AAEB - - - - + 120 D1:AAEB ED 13 00 - lea de, iy+0 + 121 D1:AAEE 19 - - - add hl, de + 122 D1:AAEF EB - - - ex de, hl + 123 D1:AAF0 ED 62 - - sbc hl, hl + 124 D1:AAF2 3F - - - ccf + 125 D1:AAF3 ED 52 - - sbc hl, de + 126 D1:AAF5 CB 2C - - sra h + 127 D1:AAF7 CB 1D - - rr l + 128 D1:AAF9 EB - - - ex de, hl + 129 D1:AAFA FD 62 - - ld iyh, d + 130 D1:AAFC FD 6B - - ld iyl, e + 131 D1:AAFE - - - - + 132 D1:AAFE - - - - IRasterNoEdgeWrite: + 133 D1:AAFE E1 - - - pop hl + 134 D1:AAFF - - - - + 135 D1:AAFF - - - - ; x2-x0 + 136 D1:AAFF 23 - - - inc hl + 137 D1:AB00 ED 27 - - ld hl, (hl) + 138 D1:AB02 22 5B AB D1 ld (IValueX2), hl + 139 D1:AB06 3E 23 - - ld a, $23 ; inc hl + 140 D1:AB08 B7 - - - or a, a + 141 D1:AB09 ED 42 - - sbc hl, bc + 142 D1:AB0B - - - - ; if x0>x1, edge goes to left + 143 D1:AB0B 30 07 - - jr nc, IRasterEdge0 + 144 D1:AB0D F6 08 - - or a, $08 ; dec hl + 145 D1:AB0F - - - - ; edge goes to left + 146 D1:AB0F EB - - - ex de, hl + 147 D1:AB10 ED 62 - - sbc hl, hl + 148 D1:AB12 ED 52 - - sbc hl, de + 149 D1:AB14 - - - - IRasterEdge0: + 150 D1:AB14 22 9F AB D1 ld (IDeltaX0), hl + 151 D1:AB18 32 AA AB D1 ld (ISMC_Code0), a + 152 D1:AB1C - - - - + 153 D1:AB1C ED 12 00 - lea de, ix+0 + 154 D1:AB1F 19 - - - add hl, de + 155 D1:AB20 EB - - - ex de, hl + 156 D1:AB21 ED 62 - - sbc hl, hl + 157 D1:AB23 3F - - - ccf + 158 D1:AB24 ED 52 - - sbc hl, de + 159 D1:AB26 CB 2C - - sra h + 160 D1:AB28 CB 1D - - rr l + 161 D1:AB2A EB - - - ex de, hl + 162 D1:AB2B DD 62 - - ld ixh, d + 163 D1:AB2D DD 6B - - ld ixl, e + 164 D1:AB2F - - - - + 165 D1:AB2F E1 - - - pop hl + 166 D1:AB30 2E A0 - - ld l, 160 + 167 D1:AB32 ED 6C - - mlt hl + 168 D1:AB34 29 - - - add hl, hl + 169 D1:AB35 09 - - - add hl, bc + 170 D1:AB36 ED 5B 14 00 + E3 - - - ld de, (vxFramebuffer) + 171 D1:AB3B 19 - - - add hl, de + 172 D1:AB3C EB - - - ex de, hl + 173 D1:AB3D ED 62 - - sbc hl, hl + 174 D1:AB3F 19 - - - add hl, de + 175 D1:AB40 - - - - + 176 D1:AB40 F1 - - - pop af + 177 D1:AB41 C4 9E AB D1 call nz, IRasterTriangleInner + 178 D1:AB45 - - - - + 179 D1:AB45 3A A7 AB D1 ld a, (IDeltaY0) ; y2-y0 + 180 D1:AB49 4F - - - ld c, a + 181 D1:AB4A 3A B8 AB D1 ld a, (IDeltaY1) + 182 D1:AB4E 91 - - - sub c + 183 D1:AB4F C8 - - - ret z + 184 D1:AB50 F5 - - - push af + 185 D1:AB51 FD 6F - - ld iyl, a + 186 D1:AB53 ED 44 - - neg + 187 D1:AB55 32 B8 AB D1 ld (IDeltaY1), a + 188 D1:AB59 - - - - + 189 D1:AB59 E5 - - - push hl + 190 D1:AB5A - - - - + 191 D1:AB5A - - - - IValueX2=$+1 + 192 D1:AB5A 21 00 00 00 ld hl, $000000 + 193 D1:AB5E - - - - IValueX1=$+1 + 194 D1:AB5E 01 00 00 00 ld bc, $000000 + 195 D1:AB62 B7 - - - or a, a + 196 D1:AB63 ED 42 - - sbc hl, bc + 197 D1:AB65 3E 13 - - ld a, $13 + 198 D1:AB67 - - - - ; if x0>x1, edge goes to left + 199 D1:AB67 30 07 - - jr nc, IRasterEdge2 + 200 D1:AB69 F6 08 - - or a, $08 + 201 D1:AB6B EB - - - ex de, hl + 202 D1:AB6C ED 62 - - sbc hl, hl + 203 D1:AB6E ED 52 - - sbc hl, de + 204 D1:AB70 - - - - IRasterEdge2: + 205 D1:AB70 22 B0 AB D1 ld (IDeltaX1), hl + 206 D1:AB74 32 BB AB D1 ld (ISMC_Code1), a + 207 D1:AB78 - - - - + 208 D1:AB78 ED 13 00 - lea de, iy+0 + 209 D1:AB7B 16 00 - - ld d, $00 ;compensate due to previous looping + 210 D1:AB7D 19 - - - add hl, de + 211 D1:AB7E EB - - - ex de, hl + 212 D1:AB7F ED 62 - - sbc hl, hl + 213 D1:AB81 3F - - - ccf + 214 D1:AB82 ED 52 - - sbc hl, de + 215 D1:AB84 CB 2C - - sra h + 216 D1:AB86 CB 1D - - rr l + 217 D1:AB88 EB - - - ex de, hl + 218 D1:AB89 FD 62 - - ld iyh, d + 219 D1:AB8B FD 6B - - ld iyl, e + 220 D1:AB8D - - - - + 221 D1:AB8D - - - - IValueY1=$+1 + 222 D1:AB8D 2E 00 - - ld l, $00 + 223 D1:AB8F 26 A0 - - ld h, 160 + 224 D1:AB91 ED 6C - - mlt hl + 225 D1:AB93 29 - - - add hl, hl + 226 D1:AB94 09 - - - add hl, bc + 227 D1:AB95 ED 5B 14 00 + E3 - - - ld de, (vxFramebuffer) + 228 D1:AB9A 19 - - - add hl, de + 229 D1:AB9B EB - - - ex de, hl + 230 D1:AB9C E1 - - - pop hl + 231 D1:AB9D - - - - + 232 D1:AB9D - - - - ; ld a, (IDeltaY1) + 233 D1:AB9D - - - - ; neg + 234 D1:AB9D F1 - - - pop af + 235 D1:AB9E - - - - IRasterTriangleInner: + 236 D1:AB9E - - - - IDeltaX0=$+1 + 237 D1:AB9E 01 00 00 00 ld bc, $000000 + 238 D1:ABA2 DD 09 - - add ix, bc + 239 D1:ABA4 30 09 - - jr nc, $+11 + 240 D1:ABA6 - - - - IDeltaY0=$+1 + 241 D1:ABA6 01 00 FF FF ld bc, $FFFF00 + 242 D1:ABAA - - - - ISMC_Code0=$ + 243 D1:ABAA 00 - - - nop + 244 D1:ABAB DD 09 - - add ix, bc + 245 D1:ABAD 38 FB - - jr c, $-3 + 246 D1:ABAF - - - - + 247 D1:ABAF - - - - IDeltaX1=$+1 + 248 D1:ABAF 01 00 00 00 ld bc, $000000 + 249 D1:ABB3 FD 09 - - add iy, bc + 250 D1:ABB5 30 0B - - jr nc, $+13 + 251 D1:ABB7 - - - - IDeltaY1=$+1 + 252 D1:ABB7 01 00 FF FF ld bc, $FFFF00 + 253 D1:ABBB - - - - ISMC_Code1=$ + 254 D1:ABBB 00 - - - nop + 255 D1:ABBC FD 09 - - add iy, bc + 256 D1:ABBE 38 FB - - jr c, $-3 + 257 D1:ABC0 52 03 - - inc.s bc ;reset bcu set by restoring ld bc,$FFxxxx + 258 D1:ABC2 - - - - + 259 D1:ABC2 - - - - ; hl = adress1, de = adress2 + 260 D1:ABC2 ED 52 - - sbc hl, de + 261 D1:ABC4 38 2F - - jr c, IRasterInverted + 262 D1:ABC6 28 21 - - jr z, IRasterNoPixel + 263 D1:ABC8 44 - - - ld b, h + 264 D1:ABC9 4D - - - ld c, l + 265 D1:ABCA - - - - + 266 D1:ABCA 21 F7 AB D1 ld hl, IRasterRBG8 + 267 D1:ABCE ED A0 - - ldi + 268 D1:ABD0 E2 E6 AB D1 jp po, IRasterContinue + 269 D1:ABD4 37 - - - scf + 270 D1:ABD5 ED 62 - - sbc hl, hl + 271 D1:ABD7 19 - - - add hl, de + 272 D1:ABD8 E5 - - - push hl + 273 D1:ABD9 ED B0 - - ldir + 274 D1:ABDB E1 - - - pop hl + 275 D1:ABDC - - - - + 276 D1:ABDC 0E 40 - - ld c, 64 + 277 D1:ABDE 04 - - - inc b + 278 D1:ABDF 09 - - - add hl, bc + 279 D1:ABE0 EB - - - ex de, hl + 280 D1:ABE1 09 - - - add hl, bc + 281 D1:ABE2 3D - - - dec a + 282 D1:ABE3 20 B9 - - jr nz,IRasterTriangleInner + 283 D1:ABE5 C9 - - - ret + 284 D1:ABE6 - - - - IRasterContinue: + 285 D1:ABE6 37 - - - scf + 286 D1:ABE7 ED 62 - - sbc hl, hl + 287 D1:ABE9 - - - - IRasterNoPixel: + 288 D1:ABE9 19 - - - add hl, de + 289 D1:ABEA 01 40 01 00 ld bc, 320 + 290 D1:ABEE 09 - - - add hl, bc + 291 D1:ABEF EB - - - ex de, hl + 292 D1:ABF0 09 - - - add hl, bc + 293 D1:ABF1 3D - - - dec a + 294 D1:ABF2 20 AA - - jr nz,IRasterTriangleInner + 295 D1:ABF4 C9 - - - ret + 296 D1:ABF5 - - - - IRasterInverted: + 297 D1:ABF5 19 - - - add hl, de + 298 D1:ABF6 - - - - ; hl --- de + 299 D1:ABF6 - - - - IRasterRBG8=$+1 + 300 D1:ABF6 36 00 - - ld (hl), $00 + 301 D1:ABF8 EB - - - ex de, hl + 302 D1:ABF9 - - - - ; carry is set + 303 D1:ABF9 ED 52 - - sbc hl, de + 304 D1:ABFB 44 - - - ld b, h + 305 D1:ABFC 4D - - - ld c, l + 306 D1:ABFD 19 - - - add hl, de + 307 D1:ABFE 28 08 - - jr z, IRasterSize1 + 308 D1:AC00 D5 - - - push de + 309 D1:AC01 ED 62 - - sbc hl, hl + 310 D1:AC03 19 - - - add hl, de + 311 D1:AC04 13 - - - inc de + 312 D1:AC05 ED B0 - - ldir + 313 D1:AC07 D1 - - - pop de + 314 D1:AC08 - - - - IRasterSize1: + 315 D1:AC08 23 - - - inc hl + 316 D1:AC09 - - - - + 317 D1:AC09 0E 40 - - ld c, 64 + 318 D1:AC0B 04 - - - inc b + 319 D1:AC0C 09 - - - add hl, bc + 320 D1:AC0D EB - - - ex de, hl + 321 D1:AC0E 09 - - - add hl, bc + 322 D1:AC0F 3D - - - dec a + 323 D1:AC10 20 8C - - jr nz, IRasterTriangleInner + 324 D1:AC12 C9 - - - ret +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" + 3 D1:AC13 - - - - #include "vxMatrix.ez80" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" + 1 D1:AC13 - - - - #define VX_MATRIX_SIZE 18 + 2 D1:AC13 - - - - + 3 D1:AC13 - - - - vxIdentityMatrix: + 4 D1:AC13 40 00 00 - .db 64,0,0 + 5 D1:AC16 00 40 00 - .db 0,64,0 + 6 D1:AC19 00 00 40 - .db 0,0,64 + 7 D1:AC1C 00 00 00 00 + 00 00 00 00 + 00 - - - .dl 0,0,0 + 8 D1:AC25 - - - - + 9 D1:AC25 - - - - vxMatrixLoadIdentity: + 10 D1:AC25 - - - - ; input : hl matrix + 11 D1:AC25 EB - - - ex de, hl + 12 D1:AC26 21 13 AC D1 ld hl, vxIdentityMatrix + 13 D1:AC2A 01 12 00 00 ld bc, VX_MATRIX_SIZE + 14 D1:AC2E ED B0 - - ldir + 15 D1:AC30 EB - - - ex de, hl + 16 D1:AC31 01 EE FF FF ld bc, -VX_MATRIX_SIZE + 17 D1:AC35 09 - - - add hl, bc + 18 D1:AC36 C9 - - - ret + 19 D1:AC37 - - - - vxMatrixRotationX: + 20 D1:AC37 - - - - #comment + 21 D1:AC37 ld a, l + 22 D1:AC37 ld hl, ISIN_TABLE + 23 D1:AC37 ld l, a + 24 D1:AC37 ld a, (hl) + 25 D1:AC37 ld (ix+7), a + 26 D1:AC37 neg + 27 D1:AC37 ld (ix+5), a + 28 D1:AC37 ld a, l + 29 D1:AC37 add a, 64 + 30 D1:AC37 ld l, a + 31 D1:AC37 ld c, (hl) + 32 D1:AC37 ld (ix+4), c + 33 D1:AC37 ld (ix+8), c + 34 D1:AC37 ld a, 64 + 35 D1:AC37 ld (ix+0), a + 36 D1:AC37 xor a, a + 37 D1:AC37 ld (ix+1), a + 38 D1:AC37 ld (ix+2), a + 39 D1:AC37 ld (ix+3), a + 40 D1:AC37 ld (ix+6), a + 41 D1:AC37 #endcomment + 42 D1:AC37 E5 - - - push hl + 43 D1:AC38 CD A0 B1 D1 call vxSin + 44 D1:AC3C 7C - - - ld a, h + 45 D1:AC3D DD 77 07 - ld (ix+7), a + 46 D1:AC40 ED 44 - - neg + 47 D1:AC42 DD 77 05 - ld (ix+5), a + 48 D1:AC45 E1 - - - pop hl + 49 D1:AC46 CD 9F B1 D1 call vxCos + 50 D1:AC4A DD 74 04 - ld (ix+4), h + 51 D1:AC4D DD 74 08 - ld (ix+8), h + 52 D1:AC50 3E 40 - - ld a, 64 + 53 D1:AC52 DD 77 00 - ld (ix+0), a + 54 D1:AC55 AF - - - xor a, a + 55 D1:AC56 DD 77 01 - ld (ix+1), a + 56 D1:AC59 DD 77 02 - ld (ix+2), a + 57 D1:AC5C DD 77 03 - ld (ix+3), a + 58 D1:AC5F DD 77 06 - ld (ix+6), a + 59 D1:AC62 C9 - - - ret + 60 D1:AC63 - - - - vxMatrixRotationZ: + 61 D1:AC63 - - - - #comment + 62 D1:AC63 ld a, l + 63 D1:AC63 ld hl, ISIN_TABLE + 64 D1:AC63 ld l, a + 65 D1:AC63 ld a, (hl) + 66 D1:AC63 ld (ix+3), a + 67 D1:AC63 neg + 68 D1:AC63 ld (ix+1), a + 69 D1:AC63 ld a, l + 70 D1:AC63 add a, 64 + 71 D1:AC63 ld l, a + 72 D1:AC63 ld c, (hl) + 73 D1:AC63 ld (ix+0), c + 74 D1:AC63 ld (ix+4), c + 75 D1:AC63 ld a, 64 + 76 D1:AC63 ld (ix+8), a + 77 D1:AC63 xor a, a + 78 D1:AC63 ld (ix+2), a + 79 D1:AC63 ld (ix+6), a + 80 D1:AC63 ld (ix+7), a + 81 D1:AC63 ld (ix+5), a + 82 D1:AC63 #endcomment + 83 D1:AC63 E5 - - - push hl + 84 D1:AC64 CD A0 B1 D1 call vxSin + 85 D1:AC68 7C - - - ld a, h + 86 D1:AC69 DD 77 03 - ld (ix+3), a + 87 D1:AC6C ED 44 - - neg + 88 D1:AC6E DD 77 01 - ld (ix+1), a + 89 D1:AC71 E1 - - - pop hl + 90 D1:AC72 CD 9F B1 D1 call vxCos + 91 D1:AC76 DD 74 00 - ld (ix+0), h + 92 D1:AC79 DD 74 04 - ld (ix+4), h + 93 D1:AC7C 3E 40 - - ld a, 64 + 94 D1:AC7E DD 77 08 - ld (ix+8), a + 95 D1:AC81 AF - - - xor a, a + 96 D1:AC82 DD 77 02 - ld (ix+2), a + 97 D1:AC85 DD 77 06 - ld (ix+6), a + 98 D1:AC88 DD 77 07 - ld (ix+7), a + 99 D1:AC8B DD 77 05 - ld (ix+5), a + 100 D1:AC8E C9 - - - ret + 101 D1:AC8F - - - - vxMatrixRotationY: + 102 D1:AC8F E5 - - - push hl + 103 D1:AC90 CD A0 B1 D1 call vxSin + 104 D1:AC94 7C - - - ld a, h + 105 D1:AC95 DD 77 02 - ld (ix+2), a + 106 D1:AC98 ED 44 - - neg + 107 D1:AC9A DD 77 06 - ld (ix+6), a + 108 D1:AC9D E1 - - - pop hl + 109 D1:AC9E CD 9F B1 D1 call vxCos + 110 D1:ACA2 DD 74 00 - ld (ix+0), h + 111 D1:ACA5 DD 74 08 - ld (ix+8), h + 112 D1:ACA8 3E 40 - - ld a, 64 + 113 D1:ACAA DD 77 04 - ld (ix+4), a + 114 D1:ACAD AF - - - xor a, a + 115 D1:ACAE DD 77 01 - ld (ix+1), a + 116 D1:ACB1 DD 77 03 - ld (ix+3), a + 117 D1:ACB4 DD 77 05 - ld (ix+5), a + 118 D1:ACB7 DD 77 07 - ld (ix+7), a + 119 D1:ACBA C9 - - - ret + 120 D1:ACBB - - - - vxMatrixMlt: + 121 D1:ACBB - - - - ; (hl) = (iy) * (ix) + 122 D1:ACBB - - - - ; 116 bytes, ~3800 TStates + 123 D1:ACBB EB - - - ex de, hl + 124 D1:ACBC 01 00 03 00 ld bc, 768 + 125 D1:ACC0 - - - - vxMatrixColLoop: + 126 D1:ACC0 C5 - - - push bc + 127 D1:ACC1 06 03 - - ld b, 3 + 128 D1:ACC3 - - - - vxMatrixRowLoop: + 129 D1:ACC3 C5 - - - push bc + 130 D1:ACC4 DD 66 00 - ld h, (ix+0) + 131 D1:ACC7 FD 6E 00 - ld l, (iy+0) + 132 D1:ACCA AF - - - xor a, a + 133 D1:ACCB CB 7C 28 01 + 95 - - - bit 7, h \ jr z, $+3 \ sub a, l + 134 D1:ACD0 CB 7D 28 01 + 94 - - - bit 7, l \ jr z, $+3 \ sub a, h + 135 D1:ACD5 ED 6C - - mlt hl + 136 D1:ACD7 DD 46 01 - ld b, (ix+1) + 137 D1:ACDA FD 4E 03 - ld c, (iy+3) + 138 D1:ACDD CB 78 28 01 + 91 - - - bit 7, b \ jr z, $+3 \ sub a, c + 139 D1:ACE2 CB 79 28 01 + 90 - - - bit 7, c \ jr z, $+3 \ sub a, b + 140 D1:ACE7 ED 4C - - mlt bc + 141 D1:ACE9 09 - - - add hl, bc + 142 D1:ACEA DD 46 02 - ld b, (ix+2) + 143 D1:ACED FD 4E 06 - ld c, (iy+6) + 144 D1:ACF0 CB 78 28 01 + 91 - - - bit 7, b \ jr z, $+3 \ sub a, c + 145 D1:ACF5 CB 79 28 01 + 90 - - - bit 7, c \ jr z, $+3 \ sub a, b + 146 D1:ACFA ED 4C - - mlt bc + 147 D1:ACFC 09 - - - add hl, bc + 148 D1:ACFD 47 - - - ld b, a + 149 D1:ACFE AF - - - xor a, a + 150 D1:ACFF 4F - - - ld c, a + 151 D1:AD00 09 - - - add hl, bc + 152 D1:AD01 29 - - - add hl, hl + 153 D1:AD02 29 - - - add hl, hl + 154 D1:AD03 7C - - - ld a, h + 155 D1:AD04 12 - - - ld (de), a + 156 D1:AD05 13 - - - inc de + 157 D1:AD06 FD 23 - - inc iy + 158 D1:AD08 C1 - - - pop bc + 159 D1:AD09 10 B8 - - djnz vxMatrixRowLoop + 160 D1:AD0B ED 32 03 - lea ix, ix+3 + 161 D1:AD0E ED 33 FD - lea iy, iy-3 + 162 D1:AD11 C1 - - - pop bc + 163 D1:AD12 10 AC - - djnz vxMatrixColLoop + 164 D1:AD14 ED 32 F7 - lea ix, ix-9 + 165 D1:AD17 EB - - - ex de, hl + 166 D1:AD18 01 F7 FF FF ld bc, -9 + 167 D1:AD1C 09 - - - add hl, bc + 168 D1:AD1D C9 - - - ret + 169 D1:AD1E - - - - vxMatrixTransform: + 170 D1:AD1E - - - - ; (hl) = (iy)*(ix) with translation + 171 D1:AD1E - - - - ; iy is a animation matrix, ix is a world matrix, hl is world matrix + 172 D1:AD1E E5 - - - push hl + 173 D1:AD1F ED 33 09 - lea iy, iy+9 ; load up the translation of matrix 0 + 174 D1:AD22 CD C3 AD D1 call vxfTransform + 175 D1:AD26 ED 33 F7 - lea iy, iy-9 + 176 D1:AD29 E1 - - - pop hl + 177 D1:AD2A CD BB AC D1 call vxMatrixMlt + 178 D1:AD2E - - - - ; copy translation data to result (hl) + 179 D1:AD2E 01 09 00 00 ld bc, 9 + 180 D1:AD32 09 - - - add hl, bc + 181 D1:AD33 11 06 34 D0 ld de, vxPosition + 182 D1:AD37 EB - - - ex de, hl + 183 D1:AD38 ED B0 - - ldir + 184 D1:AD3A 01 EE FF FF ld bc, -VX_MATRIX_SIZE + 185 D1:AD3E EB - - - ex de, hl + 186 D1:AD3F 09 - - - add hl, bc + 187 D1:AD40 C9 - - - ret + 188 D1:AD41 - - - - vxMatrixTranspose: + 189 D1:AD41 - - - - ; 192 TStates + translation + 190 D1:AD41 DD 4E 03 - ld c, (ix+3) + 191 D1:AD44 DD 7E 01 - ld a, (ix+1) + 192 D1:AD47 DD 77 03 - ld (ix+3), a + 193 D1:AD4A DD 71 01 - ld (ix+1), c + 194 D1:AD4D DD 4E 06 - ld c, (ix+6) + 195 D1:AD50 DD 7E 02 - ld a, (ix+2) + 196 D1:AD53 DD 77 06 - ld (ix+6), a + 197 D1:AD56 DD 71 02 - ld (ix+2), c + 198 D1:AD59 DD 4E 07 - ld c, (ix+7) + 199 D1:AD5C DD 7E 05 - ld a, (ix+5) + 200 D1:AD5F DD 77 07 - ld (ix+7), a + 201 D1:AD62 DD 71 05 - ld (ix+5), c + 202 D1:AD65 - - - - #comment + 203 D1:AD65 ld de, (ix+9) + 204 D1:AD65 or a, a + 205 D1:AD65 sbc hl, hl + 206 D1:AD65 sbc hl, de + 207 D1:AD65 ld (ix+9), hl + 208 D1:AD65 ld de, (ix+12) + 209 D1:AD65 or a, a + 210 D1:AD65 sbc hl, hl + 211 D1:AD65 sbc hl, de + 212 D1:AD65 ld (ix+12), hl + 213 D1:AD65 ld de, (ix+15) + 214 D1:AD65 or a, a + 215 D1:AD65 sbc hl, hl + 216 D1:AD65 sbc hl, de + 217 D1:AD65 ld (ix+15), hl + 218 D1:AD65 #endcomment + 219 D1:AD65 C9 - - - ret + 220 D1:AD66 - - - - vxMatrixLightning: + 221 D1:AD66 EB - - - ex de, hl + 222 D1:AD67 06 03 - - ld b, 3 + 223 D1:AD69 - - - - vxMatrixLightLoop: + 224 D1:AD69 C5 - - - push bc + 225 D1:AD6A D5 - - - push de + 226 D1:AD6B CD D3 B2 D1 call vxDotProduct + 227 D1:AD6F D1 - - - pop de + 228 D1:AD70 29 - - - add hl, hl + 229 D1:AD71 29 - - - add hl, hl + 230 D1:AD72 7C - - - ld a, h + 231 D1:AD73 12 - - - ld (de), a + 232 D1:AD74 13 - - - inc de + 233 D1:AD75 ED 32 03 - lea ix, ix+3 + 234 D1:AD78 C1 - - - pop bc + 235 D1:AD79 10 EE - - djnz vxMatrixLightLoop + 236 D1:AD7B ED 32 F7 - lea ix, ix-9 + 237 D1:AD7E D5 - - - push de + 238 D1:AD7F FD 27 04 - ld hl, (iy+VX_LIGHT_POSITION) + 239 D1:AD82 FD 17 07 - ld de, (iy+VX_LIGHT_POSITION+3) + 240 D1:AD85 B7 - - - or a, a + 241 D1:AD86 ED 52 - - sbc hl, de + 242 D1:AD88 E1 - - - pop hl + 243 D1:AD89 28 30 - - jr z, vxMatrixLightEarlyOut + 244 D1:AD8B 2B 2B 2B - dec hl \ dec hl \ dec hl + 245 D1:AD8E E5 - - - push hl + 246 D1:AD8F - - - - ; transform lightning position + 247 D1:AD8F CD C3 AD D1 call vxfTransform + 248 D1:AD93 - - - - ; fetch value and divide them + 249 D1:AD93 - - - - ; value should be copied to (hl) + 250 D1:AD93 E1 - - - pop hl + 251 D1:AD94 01 07 00 00 ld bc, VX_LIGHT_POSITION+3 + 252 D1:AD98 09 - - - add hl, bc + 253 D1:AD99 EB - - - ex de, hl + 254 D1:AD9A - - - - ; de = adress of position. + 255 D1:AD9A 2A 0C 34 D0 ld hl, (vxPosition+6) + 256 D1:AD9E 29 - - - add hl, hl + 257 D1:AD9F 29 - - - add hl, hl + 258 D1:ADA0 - - - - ; copy hlu, h to (de) + 259 D1:ADA0 EB - - - ex de, hl + 260 D1:ADA1 ED 1F - - ld (hl), de + 261 D1:ADA3 2B - - - dec hl + 262 D1:ADA4 2B - - - dec hl + 263 D1:ADA5 EB - - - ex de, hl + 264 D1:ADA6 2A 09 34 D0 ld hl, (vxPosition+3) + 265 D1:ADAA 29 - - - add hl, hl + 266 D1:ADAB 29 - - - add hl, hl + 267 D1:ADAC EB - - - ex de, hl + 268 D1:ADAD ED 1F - - ld (hl), de + 269 D1:ADAF 2B - - - dec hl + 270 D1:ADB0 2B - - - dec hl + 271 D1:ADB1 EB - - - ex de, hl + 272 D1:ADB2 2A 06 34 D0 ld hl, (vxPosition) + 273 D1:ADB6 29 - - - add hl, hl + 274 D1:ADB7 29 - - - add hl, hl + 275 D1:ADB8 EB - - - ex de, hl + 276 D1:ADB9 ED 1F - - ld (hl), de + 277 D1:ADBB - - - - ; AMBIANT_VALUE was writed with bad value. + 278 D1:ADBB - - - - vxMatrixLightEarlyOut: + 279 D1:ADBB FD 7E 03 - ld a, (iy+VX_LIGHT_AMBIANT) + 280 D1:ADBE 77 - - - ld (hl), a + 281 D1:ADBF 2B 2B 2B - dec hl \ dec hl \ dec hl + 282 D1:ADC2 C9 - - - ret + 283 D1:ADC3 - - - - vxfTransform: + 284 D1:ADC3 - - - - ; input : iy vector, ix matrix + 285 D1:ADC3 - - - - ; [ix+0]*[iy]+[ix+1]*[iy+2]+[ix+2]*[iy+4]+[ix+9]=x + 286 D1:ADC3 - - - - ; [ix+3]*[iy]+[ix+4]*[iy+2]+{ix+5]*[iy+4]+[ix+12]=y + 287 D1:ADC3 - - - - ; [ix+6]*[iy]+[ix+7]*[iy+2]+[ix+8]*[iy+4]+[ix+15]=z + 288 D1:ADC3 - - - - ; From 1566+x? TStates to 1654 TStates, 333 bytes + 289 D1:ADC3 - - - - ; X coordinate + 290 D1:ADC3 FD 07 00 - ld bc, (iy+0) + 291 D1:ADC6 DD 27 09 - ld hl, (ix+9) + 292 D1:ADC9 DD 7E 00 - ld a, (ix+0) + 293 D1:ADCC EB 60 6F ED + 6C FE 80 38 + 02 ED 42 CB + 78 47 28 03 + 2F 8C 67 29 + 29 29 29 29 + 29 29 29 ED + 4C 09 19 - madd +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" + 294 D1:ADEB DD 7E 01 - ld a, (ix+1) + 295 D1:ADEE FD 07 02 - ld bc, (iy+2) + 296 D1:ADF1 EB 60 6F ED + 6C FE 80 38 + 02 ED 42 CB + 78 47 28 03 + 2F 8C 67 29 + 29 29 29 29 + 29 29 29 ED + 4C 09 19 - madd +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" + 297 D1:AE10 DD 7E 02 - ld a, (ix+2) + 298 D1:AE13 FD 07 04 - ld bc, (iy+4) + 299 D1:AE16 51 5F ED 5C + 19 EB 60 6F + ED 6C FE 80 + 38 02 ED 42 + CB 78 28 03 + 2F 8C 67 29 + 29 29 29 29 + 29 29 29 19 madd.f +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" + 300 D1:AE36 22 06 34 D0 ld (vxPosition), hl + 301 D1:AE3A - - - - ; Y coordinate + 302 D1:AE3A DD 27 0C - ld hl, (ix+12) + 303 D1:AE3D DD 7E 05 - ld a, (ix+5) + 304 D1:AE40 EB 60 6F ED + 6C FE 80 38 + 02 ED 42 CB + 78 47 28 03 + 2F 8C 67 29 + 29 29 29 29 + 29 29 29 ED + 4C 09 19 - madd +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" + 305 D1:AE5F DD 7E 04 - ld a, (ix+4) + 306 D1:AE62 FD 07 02 - ld bc, (iy+2) + 307 D1:AE65 EB 60 6F ED + 6C FE 80 38 + 02 ED 42 CB + 78 47 28 03 + 2F 8C 67 29 + 29 29 29 29 + 29 29 29 ED + 4C 09 19 - madd +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" + 308 D1:AE84 DD 7E 03 - ld a, (ix+3) + 309 D1:AE87 FD 07 00 - ld bc, (iy+0) + 310 D1:AE8A 51 5F ED 5C + 19 EB 60 6F + ED 6C FE 80 + 38 02 ED 42 + CB 78 28 03 + 2F 8C 67 29 + 29 29 29 29 + 29 29 29 19 madd.f +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" + 311 D1:AEAA 22 09 34 D0 ld (vxPosition+3), hl + 312 D1:AEAE - - - - ; Z coordinate + 313 D1:AEAE DD 27 0F - ld hl, (ix+15) + 314 D1:AEB1 DD 7E 06 - ld a, (ix+6) + 315 D1:AEB4 EB 60 6F ED + 6C FE 80 38 + 02 ED 42 CB + 78 47 28 03 + 2F 8C 67 29 + 29 29 29 29 + 29 29 29 ED + 4C 09 19 - madd +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" + 316 D1:AED3 DD 7E 07 - ld a, (ix+7) + 317 D1:AED6 FD 07 02 - ld bc, (iy+2) + 318 D1:AED9 EB 60 6F ED + 6C FE 80 38 + 02 ED 42 CB + 78 47 28 03 + 2F 8C 67 29 + 29 29 29 29 + 29 29 29 ED + 4C 09 19 - madd +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" + 319 D1:AEF8 DD 7E 08 - ld a, (ix+8) + 320 D1:AEFB FD 07 04 - ld bc, (iy+4) + 321 D1:AEFE EB 60 6F ED + 6C FE 80 38 + 02 ED 42 CB + 78 47 28 03 + 2F 8C 67 29 + 29 29 29 29 + 29 29 29 ED + 4C 09 19 - madd +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMatrix.ez80" + 322 D1:AF1D 22 0C 34 D0 ld (vxPosition+6), hl + 323 D1:AF21 C9 - - - ret +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" + 4 D1:AF22 - - - - #include "vxQuaternion.ez80" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxQuaternion.ez80" + 1 D1:AF22 - - - - ; Quaternions utility functions + 2 D1:AF22 - - - - + 3 D1:AF22 - - - - #define VX_QUATERNION_SIZE $0C + 4 D1:AF22 - - - - #define VX_QW $0 + 5 D1:AF22 - - - - #define VX_QX $3 + 6 D1:AF22 - - - - #define VX_QY $6 + 7 D1:AF22 - - - - #define VX_QZ $9 + 8 D1:AF22 - - - - + 9 D1:AF22 - - - - vxIdentityQuaternion: + 10 D1:AF22 00 40 00 - .dl $004000 + 11 D1:AF25 00 00 00 - .dl $000000 + 12 D1:AF28 00 00 00 - .dl $000000 + 13 D1:AF2B 00 00 00 - .dl $000000 + 14 D1:AF2E - - - - + 15 D1:AF2E - - - - vxQuaternionLoadIdentity: + 16 D1:AF2E EB - - - ex de, hl + 17 D1:AF2F 21 22 AF D1 ld hl, vxIdentityQuaternion + 18 D1:AF33 01 0C 00 00 ld bc, VX_QUATERNION_SIZE + 19 D1:AF37 ED B0 - - ldir + 20 D1:AF39 EB - - - ex de, hl + 21 D1:AF3A 01 F4 FF FF ld bc, -VX_QUATERNION_SIZE + 22 D1:AF3E 09 - - - add hl, bc + 23 D1:AF3F C9 - - - ret + 24 D1:AF40 - - - - vxQuaternionLoadRotation: + 25 D1:AF40 C9 - - - ret + 26 D1:AF41 - - - - vxQuaternionMlt: + 27 D1:AF41 - - - - ; untested + 28 D1:AF41 DD 27 09 - ld hl, (ix+VX_QZ) + 29 D1:AF44 FD 17 09 - ld de, (iy+VX_QZ) + 30 D1:AF47 CD 7C B1 D1 call vxQuatMlt + 31 D1:AF4B E5 - - - push hl + 32 D1:AF4C DD 27 03 - ld hl, (ix+VX_QX) + 33 D1:AF4F FD 17 03 - ld de, (iy+VX_QX) + 34 D1:AF52 CD 7C B1 D1 call vxQuatMlt + 35 D1:AF56 E5 - - - push hl + 36 D1:AF57 DD 27 06 - ld hl, (ix+VX_QY) + 37 D1:AF5A FD 17 06 - ld de, (iy+VX_QY) + 38 D1:AF5D CD 7C B1 D1 call vxQuatMlt + 39 D1:AF61 E5 - - - push hl + 40 D1:AF62 DD 27 00 - ld hl, (ix+VX_QW) + 41 D1:AF65 FD 17 00 - ld de, (iy+VX_QW) + 42 D1:AF68 CD 7C B1 D1 call vxQuatMlt + 43 D1:AF6C D1 - - - pop de + 44 D1:AF6D B7 - - - or a, a + 45 D1:AF6E ED 52 - - sbc hl, de + 46 D1:AF70 D1 - - - pop de + 47 D1:AF71 B7 - - - or a, a + 48 D1:AF72 ED 52 - - sbc hl, de + 49 D1:AF74 D1 - - - pop de + 50 D1:AF75 B7 - - - or a, a + 51 D1:AF76 ED 52 - - sbc hl, de + 52 D1:AF78 - - - - ; got VX_QW + 53 D1:AF78 E5 - - - push hl + 54 D1:AF79 DD 27 00 - ld hl, (ix+VX_QW) + 55 D1:AF7C FD 17 03 - ld de, (iy+VX_QX) + 56 D1:AF7F CD 7C B1 D1 call vxQuatMlt + 57 D1:AF83 E5 - - - push hl + 58 D1:AF84 DD 27 03 - ld hl, (ix+VX_QX) + 59 D1:AF87 FD 17 00 - ld de, (iy+VX_QW) + 60 D1:AF8A CD 7C B1 D1 call vxQuatMlt + 61 D1:AF8E E5 - - - push hl + 62 D1:AF8F DD 27 09 - ld hl, (ix+VX_QZ) + 63 D1:AF92 FD 17 06 - ld de, (iy+VX_QY) + 64 D1:AF95 CD 7C B1 D1 call vxQuatMlt + 65 D1:AF99 E5 - - - push hl + 66 D1:AF9A DD 27 06 - ld hl, (ix+VX_QY) + 67 D1:AF9D FD 17 09 - ld de, (iy+VX_QZ) + 68 D1:AFA0 CD 7C B1 D1 call vxQuatMlt + 69 D1:AFA4 D1 - - - pop de + 70 D1:AFA5 B7 - - - or a, a + 71 D1:AFA6 ED 52 - - sbc hl, de + 72 D1:AFA8 D1 - - - pop de + 73 D1:AFA9 19 - - - add hl, de + 74 D1:AFAA D1 - - - pop de + 75 D1:AFAB 19 - - - add hl, de + 76 D1:AFAC - - - - ; got VX_QX + 77 D1:AFAC E5 - - - push hl + 78 D1:AFAD DD 27 00 - ld hl, (ix+VX_QW) + 79 D1:AFB0 FD 17 06 - ld de, (iy+VX_QY) + 80 D1:AFB3 CD 7C B1 D1 call vxQuatMlt + 81 D1:AFB7 E5 - - - push hl + 82 D1:AFB8 DD 27 03 - ld hl, (ix+VX_QX) + 83 D1:AFBB FD 17 09 - ld de, (iy+VX_QZ) + 84 D1:AFBE CD 7C B1 D1 call vxQuatMlt + 85 D1:AFC2 E5 - - - push hl + 86 D1:AFC3 DD 27 06 - ld hl, (ix+VX_QY) + 87 D1:AFC6 FD 17 00 - ld de, (iy+VX_QW) + 88 D1:AFC9 CD 7C B1 D1 call vxQuatMlt + 89 D1:AFCD E5 - - - push hl + 90 D1:AFCE DD 27 09 - ld hl, (ix+VX_QZ) + 91 D1:AFD1 FD 17 03 - ld de, (iy+VX_QX) + 92 D1:AFD4 CD 7C B1 D1 call vxQuatMlt + 93 D1:AFD8 D1 - - - pop de + 94 D1:AFD9 19 - - - add hl, de + 95 D1:AFDA D1 - - - pop de + 96 D1:AFDB B7 - - - or a, a + 97 D1:AFDC ED 52 - - sbc hl, de + 98 D1:AFDE D1 - - - pop de + 99 D1:AFDF 19 - - - add hl, de + 100 D1:AFE0 - - - - ; got VX_QY + 101 D1:AFE0 E5 - - - push hl + 102 D1:AFE1 DD 27 00 - ld hl, (ix+VX_QW) + 103 D1:AFE4 FD 17 09 - ld de, (iy+VX_QZ) + 104 D1:AFE7 CD 7C B1 D1 call vxQuatMlt + 105 D1:AFEB E5 - - - push hl + 106 D1:AFEC DD 27 03 - ld hl, (ix+VX_QX) + 107 D1:AFEF FD 17 06 - ld de, (iy+VX_QY) + 108 D1:AFF2 CD 7C B1 D1 call vxQuatMlt + 109 D1:AFF6 E5 - - - push hl + 110 D1:AFF7 DD 27 06 - ld hl, (ix+VX_QY) + 111 D1:AFFA FD 17 03 - ld de, (iy+VX_QX) + 112 D1:AFFD CD 7C B1 D1 call vxQuatMlt + 113 D1:B001 E5 - - - push hl + 114 D1:B002 DD 27 09 - ld hl, (ix+VX_QZ) + 115 D1:B005 FD 17 00 - ld de, (iy+VX_QW) + 116 D1:B008 CD 7C B1 D1 call vxQuatMlt + 117 D1:B00C D1 - - - pop de + 118 D1:B00D B7 - - - or a, a + 119 D1:B00E ED 52 - - sbc hl, de + 120 D1:B010 D1 - - - pop de + 121 D1:B011 19 - - - add hl, de + 122 D1:B012 D1 - - - pop de + 123 D1:B013 19 - - - add hl, de + 124 D1:B014 - - - - ; got VX_QZ + 125 D1:B014 DD 2F 09 - ld (ix+VX_QZ), hl + 126 D1:B017 E1 - - - pop hl + 127 D1:B018 DD 2F 06 - ld (ix+VX_QY), hl + 128 D1:B01B E1 - - - pop hl + 129 D1:B01C DD 2F 03 - ld (ix+VX_QX), hl + 130 D1:B01F E1 - - - pop hl + 131 D1:B020 DD 2F 00 - ld (ix+VX_QW), hl + 132 D1:B023 C9 - - - ret + 133 D1:B024 - - - - + 134 D1:B024 - - - - vxQuaternionMagnitude: + 135 D1:B024 DD 27 00 - ld hl, (ix+VX_QW) + 136 D1:B027 CD 8D B1 D1 call vxQuatSquare + 137 D1:B02B E5 - - - push hl + 138 D1:B02C DD 27 03 - ld hl, (ix+VX_QX) + 139 D1:B02F CD 8D B1 D1 call vxQuatSquare + 140 D1:B033 E5 - - - push hl + 141 D1:B034 DD 27 06 - ld hl, (ix+VX_QY) + 142 D1:B037 CD 8D B1 D1 call vxQuatSquare + 143 D1:B03B E5 - - - push hl + 144 D1:B03C DD 27 09 - ld hl, (ix+VX_QZ) + 145 D1:B03F CD 8D B1 D1 call vxQuatSquare + 146 D1:B043 D1 - - - pop de + 147 D1:B044 19 - - - add hl, de + 148 D1:B045 D1 - - - pop de + 149 D1:B046 19 - - - add hl, de + 150 D1:B047 D1 - - - pop de + 151 D1:B048 19 - - - add hl, de + 152 D1:B049 C9 - - - ret + 153 D1:B04A - - - - vxQuaternionConjugate: + 154 D1:B04A DD 17 03 - ld de, (ix+3) + 155 D1:B04D B7 - - - or a, a + 156 D1:B04E ED 62 - - sbc hl, hl + 157 D1:B050 ED 52 - - sbc hl, de + 158 D1:B052 DD 2F 03 - ld (ix+3), hl + 159 D1:B055 DD 17 06 - ld de, (ix+6) + 160 D1:B058 B7 - - - or a, a + 161 D1:B059 ED 62 - - sbc hl, hl + 162 D1:B05B ED 52 - - sbc hl, de + 163 D1:B05D DD 2F 06 - ld (ix+6), hl + 164 D1:B060 DD 17 09 - ld de, (ix+9) + 165 D1:B063 B7 - - - or a, a + 166 D1:B064 ED 62 - - sbc hl, hl + 167 D1:B066 ED 52 - - sbc hl, de + 168 D1:B068 DD 2F 09 - ld (ix+9), hl + 169 D1:B06B C9 - - - ret + 170 D1:B06C - - - - vxQuaternionNormalize: + 171 D1:B06C C9 - - - ret + 172 D1:B06D - - - - vxQuatDivide: + 173 D1:B06D - - - - ; do HL*16384/DE + 174 D1:B06D C9 - - - ret + 175 D1:B06E - - - - vxQuaternionGetMatrix: + 176 D1:B06E - - - - ; iy quaternion, ix matrix + 177 D1:B06E - - - - ; (qw, qx, qy, qz) + 178 D1:B06E - - - - ; 1 - 2*qy² - 2*qz² 2*qx*qy - 2*qz*qw 2*qx*qz + 2*qy*qw + 179 D1:B06E - - - - ; 2*qx*qy + 2*qz*qw 1 - 2*qx² - 2*qz² 2*qy*qz - 2*qx*qw + 180 D1:B06E - - - - ; 2*qx*qz - 2*qy*qw 2*qy*qz + 2*qx*qw 1 - 2*qx² - 2*qy² + 181 D1:B06E FD 27 09 - ld hl, (iy+VX_QZ) + 182 D1:B071 FD 17 00 - ld de, (iy+VX_QW) + 183 D1:B074 CD 7C B1 D1 call vxQuatMlt + 184 D1:B078 29 - - - add hl, hl + 185 D1:B079 - - - - ; 2*qz*qw + 186 D1:B079 E5 - - - push hl + 187 D1:B07A FD 27 03 - ld hl, (iy+VX_QX) + 188 D1:B07D FD 17 06 - ld de, (iy+VX_QY) + 189 D1:B080 CD 7C B1 D1 call vxQuatMlt + 190 D1:B084 29 - - - add hl, hl + 191 D1:B085 - - - - ; 2*qx*qy + 192 D1:B085 D1 - - - pop de + 193 D1:B086 B7 - - - or a, a + 194 D1:B087 ED 52 - - sbc hl, de + 195 D1:B089 DD 74 01 - ld (ix+1), h + 196 D1:B08C 19 - - - add hl, de + 197 D1:B08D 19 - - - add hl, de + 198 D1:B08E DD 74 03 - ld (ix+3), h + 199 D1:B091 - - - - ; next + 200 D1:B091 FD 27 06 - ld hl, (iy+VX_QY) + 201 D1:B094 FD 17 00 - ld de, (iy+VX_QW) + 202 D1:B097 CD 7C B1 D1 call vxQuatMlt + 203 D1:B09B 29 - - - add hl, hl + 204 D1:B09C - - - - ; 2*qw*qy + 205 D1:B09C E5 - - - push hl + 206 D1:B09D FD 27 03 - ld hl, (iy+VX_QX) + 207 D1:B0A0 FD 17 09 - ld de, (iy+VX_QZ) + 208 D1:B0A3 CD 7C B1 D1 call vxQuatMlt + 209 D1:B0A7 29 - - - add hl, hl + 210 D1:B0A8 - - - - ; 2*qx*qz + 211 D1:B0A8 D1 - - - pop de + 212 D1:B0A9 B7 - - - or a, a + 213 D1:B0AA ED 52 - - sbc hl, de + 214 D1:B0AC DD 74 06 - ld (ix+6), h + 215 D1:B0AF 19 - - - add hl, de + 216 D1:B0B0 19 - - - add hl, de + 217 D1:B0B1 DD 74 02 - ld (ix+2), h + 218 D1:B0B4 - - - - ; next + 219 D1:B0B4 FD 27 03 - ld hl, (iy+VX_QX) + 220 D1:B0B7 FD 17 00 - ld de, (iy+VX_QW) + 221 D1:B0BA CD 7C B1 D1 call vxQuatMlt + 222 D1:B0BE 29 - - - add hl, hl + 223 D1:B0BF - - - - ; 2*qx*qw + 224 D1:B0BF E5 - - - push hl + 225 D1:B0C0 FD 27 06 - ld hl, (iy+VX_QY) + 226 D1:B0C3 FD 17 09 - ld de, (iy+VX_QZ) + 227 D1:B0C6 CD 7C B1 D1 call vxQuatMlt + 228 D1:B0CA 29 - - - add hl, hl + 229 D1:B0CB - - - - ; 2*qy*qz + 230 D1:B0CB D1 - - - pop de + 231 D1:B0CC B7 - - - or a, a + 232 D1:B0CD ED 52 - - sbc hl, de + 233 D1:B0CF DD 74 05 - ld (ix+5), h + 234 D1:B0D2 19 - - - add hl, de + 235 D1:B0D3 19 - - - add hl, de + 236 D1:B0D4 DD 74 07 - ld (ix+7), h + 237 D1:B0D7 - - - - ; 1-2*qy²-2qz² + 238 D1:B0D7 FD 27 06 - ld hl, (iy+VX_QY) + 239 D1:B0DA CD 8D B1 D1 call vxQuatSquare + 240 D1:B0DE E5 - - - push hl + 241 D1:B0DF E5 - - - push hl + 242 D1:B0E0 FD 27 09 - ld hl, (iy+VX_QZ) + 243 D1:B0E3 CD 8D B1 D1 call vxQuatSquare + 244 D1:B0E7 EB - - - ex de, hl + 245 D1:B0E8 C1 - - - pop bc + 246 D1:B0E9 21 00 40 00 ld hl, $004000 + 247 D1:B0ED B7 - - - or a, a + 248 D1:B0EE ED 42 - - sbc hl, bc + 249 D1:B0F0 B7 - - - or a, a + 250 D1:B0F1 ED 52 - - sbc hl, de + 251 D1:B0F3 DD 74 00 - ld (ix+0), h + 252 D1:B0F6 - - - - ; 1-2*qz²-2qx² + 253 D1:B0F6 D5 - - - push de + 254 D1:B0F7 FD 27 03 - ld hl, (iy+VX_QX) + 255 D1:B0FA CD 8D B1 D1 call vxQuatSquare + 256 D1:B0FE EB - - - ex de, hl + 257 D1:B0FF C1 - - - pop bc + 258 D1:B100 21 00 40 00 ld hl, $004000 + 259 D1:B104 B7 - - - or a, a + 260 D1:B105 ED 42 - - sbc hl, bc + 261 D1:B107 B7 - - - or a, a + 262 D1:B108 ED 52 - - sbc hl, de + 263 D1:B10A DD 74 04 - ld (ix+4), h + 264 D1:B10D - - - - ; 1-2qx²-2qy² + 265 D1:B10D C1 - - - pop bc + 266 D1:B10E 21 00 40 00 ld hl, $004000 + 267 D1:B112 B7 - - - or a, a + 268 D1:B113 ED 42 - - sbc hl, bc + 269 D1:B115 B7 - - - or a, a + 270 D1:B116 ED 52 - - sbc hl, de + 271 D1:B118 DD 74 08 - ld (ix+8), h + 272 D1:B11B C9 - - - ret + 273 D1:B11C - - - - vxQuaternionRotationAxis: + 274 D1:B11C - - - - ; iy adress of quaternion to write + 275 D1:B11C - - - - ; ix unit vector + 276 D1:B11C - - - - ; a angle + 277 D1:B11C - - - - ; qw = cos(angle/2) + 278 D1:B11C - - - - ; qx = axis.x*sin(angle/2) + 279 D1:B11C - - - - ; qy = axis.y*sin(angle/2) + 280 D1:B11C - - - - ; qz = axis.z*sin(angle/2) + 281 D1:B11C E5 - - - push hl + 282 D1:B11D CD A0 B1 D1 call vxSin + 283 D1:B121 - - - - ; hl = sin + 284 D1:B121 EB - - - ex de, hl + 285 D1:B122 - - - - ; DE is never destroyed by the macro's + 286 D1:B122 DD 27 00 - ld hl, (ix+0) + 287 D1:B125 CD 7C B1 D1 call vxQuatMlt + 288 D1:B129 FD 2F 03 - ld (iy+VX_QX), hl + 289 D1:B12C DD 27 03 - ld hl, (ix+3) + 290 D1:B12F CD 7C B1 D1 call vxQuatMlt + 291 D1:B133 FD 2F 06 - ld (iy+VX_QY), hl + 292 D1:B136 DD 27 06 - ld hl, (ix+6) + 293 D1:B139 CD 7C B1 D1 call vxQuatMlt + 294 D1:B13D FD 2F 09 - ld (iy+VX_QZ), hl + 295 D1:B140 E1 - - - pop hl + 296 D1:B141 CD 9F B1 D1 call vxCos + 297 D1:B145 FD 2F 00 - ld (iy+VX_QW), hl + 298 D1:B148 C9 - - - ret + 299 D1:B149 - - - - IQuaternionDot: + 300 D1:B149 DD 27 00 - ld hl, (ix+VX_QW) + 301 D1:B14C FD 17 00 - ld de, (iy+VX_QW) + 302 D1:B14F CD 7C B1 D1 call vxQuatMlt + 303 D1:B153 E5 - - - push hl + 304 D1:B154 DD 27 03 - ld hl, (ix+VX_QX) + 305 D1:B157 FD 17 03 - ld de, (iy+VX_QX) + 306 D1:B15A CD 7C B1 D1 call vxQuatMlt + 307 D1:B15E E5 - - - push hl + 308 D1:B15F DD 27 06 - ld hl, (ix+VX_QY) + 309 D1:B162 FD 17 06 - ld de, (iy+VX_QY) + 310 D1:B165 CD 7C B1 D1 call vxQuatMlt + 311 D1:B169 E5 - - - push hl + 312 D1:B16A DD 27 09 - ld hl, (ix+VX_QZ) + 313 D1:B16D FD 17 09 - ld de, (iy+VX_QZ) + 314 D1:B170 CD 7C B1 D1 call vxQuatMlt + 315 D1:B174 D1 - - - pop de + 316 D1:B175 19 - - - add hl, de + 317 D1:B176 D1 - - - pop de + 318 D1:B177 19 - - - add hl, de + 319 D1:B178 D1 - - - pop de + 320 D1:B179 19 - - - add hl, de + 321 D1:B17A C9 - - - ret + 322 D1:B17B - - - - vxQuaternionSlerp: + 323 D1:B17B C9 - - - ret + 324 D1:B17C - - - - + 325 D1:B17C - - - - ; always included functions to works with quaternions, called by the majority of the routines. + 326 D1:B17C - - - - + 327 D1:B17C - - - - vxQuatMlt: + 328 D1:B17C - - - - ; hl *de, de is not destroyed + 329 D1:B17C CD FA B1 D1 call vxMltFP8 + 330 D1:B180 - - - - ; and now divide by 64 + 331 D1:B180 29 - - - add hl, hl + 332 D1:B181 29 - - - add hl, hl + 333 D1:B182 E5 33 F1 3B ld a, hlu + 334 D1:B186 4C - - - ld c, h + 335 D1:B187 29 - - - add hl, hl + 336 D1:B188 ED 62 - - sbc hl, hl + 337 D1:B18A 67 - - - ld h, a + 338 D1:B18B 69 - - - ld l, c + 339 D1:B18C C9 - - - ret + 340 D1:B18D - - - - vxQuatSquare: + 341 D1:B18D - - - - ; bc is kept intact + 342 D1:B18D CD D5 B1 D1 call vxSquareFP8 + 343 D1:B191 - - - - ; divide by 32 + 344 D1:B191 29 - - - add hl, hl + 345 D1:B192 29 - - - add hl, hl + 346 D1:B193 29 - - - add hl, hl + 347 D1:B194 E5 33 F1 3B ld a, hlu + 348 D1:B198 5C - - - ld e, h + 349 D1:B199 B7 - - - or a, a + 350 D1:B19A ED 62 - - sbc hl, hl + 351 D1:B19C 67 - - - ld h, a + 352 D1:B19D 6B - - - ld l, e + 353 D1:B19E C9 - - - ret + 354 D1:B19F - - - - vxCos: + 355 D1:B19F 24 - - - inc h + 356 D1:B1A0 - - - - vxSin: + 357 D1:B1A0 CB 44 - - bit 0, h + 358 D1:B1A2 7D - - - ld a, l + 359 D1:B1A3 28 04 - - jr z, vxSinSkp1 + 360 D1:B1A5 ED 44 - - neg + 361 D1:B1A7 28 1E - - jr z, vxQuatIndexZero + 362 D1:B1A9 - - - - vxSinSkp1: + 363 D1:B1A9 CB 4C - - bit 1, h + 364 D1:B1AB 21 00 20 D0 ld hl, VX_SIN_TABLE + 365 D1:B1AF 20 0A - - jr nz, vxSinNegate + 366 D1:B1B1 6F - - - ld l, a + 367 D1:B1B2 4E - - - ld c, (hl) + 368 D1:B1B3 24 - - - inc h + 369 D1:B1B4 46 - - - ld b, (hl) + 370 D1:B1B5 B7 - - - or a, a + 371 D1:B1B6 ED 62 - - sbc hl, hl + 372 D1:B1B8 60 - - - ld h, b + 373 D1:B1B9 69 - - - ld l, c + 374 D1:B1BA C9 - - - ret + 375 D1:B1BB - - - - vxSinNegate: + 376 D1:B1BB 52 03 - - inc.s bc + 377 D1:B1BD 6F - - - ld l, a + 378 D1:B1BE 4E - - - ld c, (hl) + 379 D1:B1BF 24 - - - inc h + 380 D1:B1C0 46 - - - ld b, (hl) + 381 D1:B1C1 B7 - - - or a, a + 382 D1:B1C2 ED 62 - - sbc hl, hl + 383 D1:B1C4 ED 42 - - sbc hl, bc + 384 D1:B1C6 C9 - - - ret + 385 D1:B1C7 - - - - vxQuatIndexZero: + 386 D1:B1C7 CB 4C - - bit 1, h + 387 D1:B1C9 20 05 - - jr nz, vxQuatNegResultCst + 388 D1:B1CB 21 00 40 00 ld hl, $004000 + 389 D1:B1CF C9 - - - ret + 390 D1:B1D0 - - - - vxQuatNegResultCst: + 391 D1:B1D0 21 00 C0 FF ld hl, $FFC000 + 392 D1:B1D4 C9 - - - ret + 393 D1:B1D5 - - - - + 394 D1:B1D5 - - - - vxSquareFP8: + 395 D1:B1D5 - - - - ; HL²/256 + 396 D1:B1D5 - - - - ; Destroy DE,A [16bits] + 397 D1:B1D5 - - - - ; (HxH*256+LxH*2+LxL/256) + 398 D1:B1D5 CB 7C - - bit 7, h + 399 D1:B1D7 28 06 - - jr z, vxSqAbsSkp + 400 D1:B1D9 EB - - - ex de, hl + 401 D1:B1DA B7 - - - or a, a + 402 D1:B1DB ED 62 - - sbc hl, hl + 403 D1:B1DD ED 52 - - sbc hl, de + 404 D1:B1DF - - - - vxSqAbsSkp: + 405 D1:B1DF 54 - - - ld d, h + 406 D1:B1E0 5D - - - ld e, l + 407 D1:B1E1 6C - - - ld l, h + 408 D1:B1E2 ED 6C - - mlt hl + 409 D1:B1E4 29 29 29 29 + 29 29 29 29 slhl +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxQuaternion.ez80" + 410 D1:B1EC 7B - - - ld a, e + 411 D1:B1ED ED 5C - - mlt de + 412 D1:B1EF 19 - - - add hl, de + 413 D1:B1F0 19 - - - add hl, de + 414 D1:B1F1 5F - - - ld e, a + 415 D1:B1F2 57 - - - ld d, a + 416 D1:B1F3 ED 5C - - mlt de + 417 D1:B1F5 5A - - - ld e, d + 418 D1:B1F6 16 00 - - ld d, 0 + 419 D1:B1F8 19 - - - add hl, de + 420 D1:B1F9 C9 - - - ret + 421 D1:B1FA - - - - vxMltFP8: + 422 D1:B1FA - - - - ; HLxDE/256 [16bits] + 423 D1:B1FA - - - - ; (HxD*256+LxD+ExH+LxE/256) + 424 D1:B1FA 44 - - - ld b, h + 425 D1:B1FB 4D - - - ld c, l + 426 D1:B1FC 6A - - - ld l, d + 427 D1:B1FD ED 6C - - mlt hl + 428 D1:B1FF CB 78 - - bit 7, b + 429 D1:B201 28 03 - - jr z, $+5 + 430 D1:B203 B7 - - - or a, a + 431 D1:B204 ED 52 - - sbc hl, de + 432 D1:B206 CB 7A - - bit 7, d + 433 D1:B208 28 03 - - jr z, $+5 + 434 D1:B20A B7 - - - or a, a + 435 D1:B20B ED 42 - - sbc hl, bc + 436 D1:B20D 29 29 29 29 + 29 29 29 29 slhl +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxQuaternion.ez80" + 437 D1:B215 - - - - ; now need to do (CxD+BxE+ExC/256) + 438 D1:B215 79 - - - ld a, c + 439 D1:B216 4B - - - ld c, e + 440 D1:B217 ED 4C - - mlt bc + 441 D1:B219 09 - - - add hl, bc + 442 D1:B21A 4F - - - ld c, a + 443 D1:B21B 42 - - - ld b, d + 444 D1:B21C ED 4C - - mlt bc + 445 D1:B21E 09 - - - add hl, bc + 446 D1:B21F 4F - - - ld c, a + 447 D1:B220 43 - - - ld b, e + 448 D1:B221 ED 4C - - mlt bc + 449 D1:B223 48 - - - ld c, b + 450 D1:B224 06 00 - - ld b, 0 + 451 D1:B226 09 - - - add hl, bc + 452 D1:B227 C9 - - - ret + 453 D1:B228 - - - - +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" + 5 D1:B228 - - - - #include "vxVector.ez80" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxVector.ez80" + 1 D1:B228 - - - - ; code start - vector utility fonctions + 2 D1:B228 - - - - + 3 D1:B228 - - - - #define xpd call vxCrossProduct + 4 D1:B228 - - - - vxCrossProduct: + 5 D1:B228 - - - - ; (hl) = (ix) cross (iy) + 6 D1:B228 - - - - ; 774 TStates, 177 Bytes + 7 D1:B228 - - - - ; v1.y*v2.z-v1.z*v2.y + 8 D1:B228 - - - - ; v1.z*v2.x-v1.x*v2.z + 9 D1:B228 - - - - ; v1.x*v2.y-v1.y*v2.x + 10 D1:B228 EB - - - ex de, hl + 11 D1:B229 - - - - ; v1.y + 12 D1:B229 DD 46 01 - ld b, (ix+1) + 13 D1:B22C - - - - ; v2.z + 14 D1:B22C FD 4E 02 - ld c, (iy+2) + 15 D1:B22F AF - - - xor a, a + 16 D1:B230 ED 62 - - sbc hl, hl + 17 D1:B232 CB 78 - - bit 7, b + 18 D1:B234 28 01 - - jr z, $+3 + 19 D1:B236 81 - - - add a, c + 20 D1:B237 CB 79 - - bit 7, c + 21 D1:B239 28 01 - - jr z, $+3 + 22 D1:B23B 80 - - - add a, b + 23 D1:B23C ED 4C - - mlt bc + 24 D1:B23E 09 - - - add hl, bc + 25 D1:B23F 47 - - - ld b, a + 26 D1:B240 AF - - - xor a, a + 27 D1:B241 4F - - - ld c, a + 28 D1:B242 ED 42 - - sbc hl, bc + 29 D1:B244 - - - - ; v1.z + 30 D1:B244 DD 46 02 - ld b, (ix+2) + 31 D1:B247 - - - - ; v2.y + 32 D1:B247 FD 4E 01 - ld c, (iy+1) + 33 D1:B24A AF - - - xor a, a + 34 D1:B24B CB 78 - - bit 7, b + 35 D1:B24D 28 01 - - jr z, $+3 + 36 D1:B24F 81 - - - add a, c + 37 D1:B250 CB 79 - - bit 7, c + 38 D1:B252 28 01 - - jr z, $+3 + 39 D1:B254 80 - - - add a, b + 40 D1:B255 ED 4C - - mlt bc + 41 D1:B257 B7 - - - or a, a + 42 D1:B258 ED 42 - - sbc hl, bc + 43 D1:B25A 47 - - - ld b, a + 44 D1:B25B AF - - - xor a, a + 45 D1:B25C 4F - - - ld c, a + 46 D1:B25D 09 - - - add hl, bc + 47 D1:B25E 29 - - - add hl, hl + 48 D1:B25F 29 - - - add hl, hl + 49 D1:B260 7C - - - ld a, h + 50 D1:B261 12 - - - ld (de), a + 51 D1:B262 13 - - - inc de + 52 D1:B263 - - - - ; v1.z + 53 D1:B263 DD 66 02 - ld h, (ix+2) + 54 D1:B266 - - - - ; v2.x + 55 D1:B266 FD 6E 00 - ld l, (iy+0) + 56 D1:B269 AF - - - xor a, a + 57 D1:B26A CB 7C - - bit 7, h + 58 D1:B26C 28 01 - - jr z, $+3 + 59 D1:B26E 85 - - - add a, l + 60 D1:B26F CB 7D - - bit 7, l + 61 D1:B271 28 01 - - jr z, $+3 + 62 D1:B273 84 - - - add a, h + 63 D1:B274 ED 6C - - mlt hl + 64 D1:B276 47 - - - ld b, a + 65 D1:B277 AF - - - xor a, a + 66 D1:B278 4F - - - ld c, a + 67 D1:B279 ED 42 - - sbc hl, bc + 68 D1:B27B - - - - ; v1.x + 69 D1:B27B DD 46 00 - ld b, (ix+0) + 70 D1:B27E - - - - ; v2.z + 71 D1:B27E FD 4E 02 - ld c, (iy+2) + 72 D1:B281 AF - - - xor a, a + 73 D1:B282 CB 78 - - bit 7, b + 74 D1:B284 28 01 - - jr z, $+3 + 75 D1:B286 81 - - - add a, c + 76 D1:B287 CB 79 - - bit 7, c + 77 D1:B289 28 01 - - jr z, $+3 + 78 D1:B28B 80 - - - add a, b + 79 D1:B28C ED 4C - - mlt bc + 80 D1:B28E B7 - - - or a, a + 81 D1:B28F ED 42 - - sbc hl, bc + 82 D1:B291 47 - - - ld b, a + 83 D1:B292 AF - - - xor a, a + 84 D1:B293 4F - - - ld c, a + 85 D1:B294 09 - - - add hl, bc + 86 D1:B295 29 - - - add hl, hl + 87 D1:B296 29 - - - add hl, hl + 88 D1:B297 7C - - - ld a, h + 89 D1:B298 12 - - - ld (de), a + 90 D1:B299 13 - - - inc de + 91 D1:B29A - - - - ; v1.x + 92 D1:B29A DD 66 00 - ld h, (ix+0) + 93 D1:B29D - - - - ; v2.y + 94 D1:B29D FD 6E 01 - ld l, (iy+1) + 95 D1:B2A0 AF - - - xor a, a + 96 D1:B2A1 CB 7C - - bit 7, h + 97 D1:B2A3 28 01 - - jr z, $+3 + 98 D1:B2A5 85 - - - add a, l + 99 D1:B2A6 CB 7D - - bit 7, l + 100 D1:B2A8 28 01 - - jr z, $+3 + 101 D1:B2AA 84 - - - add a, h + 102 D1:B2AB ED 6C - - mlt hl + 103 D1:B2AD 47 - - - ld b, a + 104 D1:B2AE AF - - - xor a, a + 105 D1:B2AF 4F - - - ld c, a + 106 D1:B2B0 ED 42 - - sbc hl, bc + 107 D1:B2B2 - - - - ; v1.y + 108 D1:B2B2 DD 46 01 - ld b, (ix+1) + 109 D1:B2B5 - - - - ; v2.x + 110 D1:B2B5 FD 4E 00 - ld c, (iy+0) + 111 D1:B2B8 AF - - - xor a, a + 112 D1:B2B9 CB 78 - - bit 7, b + 113 D1:B2BB 28 01 - - jr z, $+3 + 114 D1:B2BD 81 - - - add a, c + 115 D1:B2BE CB 79 - - bit 7, c + 116 D1:B2C0 28 01 - - jr z, $+3 + 117 D1:B2C2 80 - - - add a, b + 118 D1:B2C3 ED 4C - - mlt bc + 119 D1:B2C5 B7 - - - or a, a + 120 D1:B2C6 ED 42 - - sbc hl, bc + 121 D1:B2C8 47 - - - ld b, a + 122 D1:B2C9 AF - - - xor a, a + 123 D1:B2CA 4F - - - ld c, a + 124 D1:B2CB 09 - - - add hl, bc + 125 D1:B2CC 29 - - - add hl, hl + 126 D1:B2CD 29 - - - add hl, hl + 127 D1:B2CE EB - - - ex de, hl + 128 D1:B2CF 72 - - - ld (hl), d + 129 D1:B2D0 2B - - - dec hl + 130 D1:B2D1 2B - - - dec hl + 131 D1:B2D2 C9 - - - ret + 132 D1:B2D3 - - - - #define dp3 call vxDotProduct + 133 D1:B2D3 - - - - vxDotProduct: + 134 D1:B2D3 - - - - ; hl = (ix) dot (iy) + 135 D1:B2D3 DD 66 00 - ld h, (ix+0) + 136 D1:B2D6 FD 6E 00 - ld l, (iy+0) + 137 D1:B2D9 7C - - - ld a, h + 138 D1:B2DA 17 - - - rla + 139 D1:B2DB 9F - - - sbc a, a + 140 D1:B2DC A5 - - - and l + 141 D1:B2DD 5F - - - ld e, a + 142 D1:B2DE 7D - - - ld a, l + 143 D1:B2DF 17 - - - rla + 144 D1:B2E0 9F - - - sbc a, a + 145 D1:B2E1 A4 - - - and h + 146 D1:B2E2 83 - - - add a, e + 147 D1:B2E3 ED 6C - - mlt hl + 148 D1:B2E5 5F - - - ld e, a + 149 D1:B2E6 DD 46 01 - ld b, (ix+1) + 150 D1:B2E9 FD 4E 01 - ld c, (iy+1) + 151 D1:B2EC 78 - - - ld a, b + 152 D1:B2ED 17 - - - rla + 153 D1:B2EE 9F - - - sbc a, a + 154 D1:B2EF A1 - - - and c + 155 D1:B2F0 57 - - - ld d, a + 156 D1:B2F1 79 - - - ld a, c + 157 D1:B2F2 17 - - - rla + 158 D1:B2F3 9F - - - sbc a, a + 159 D1:B2F4 A0 - - - and b + 160 D1:B2F5 82 - - - add a, d + 161 D1:B2F6 ED 4C - - mlt bc + 162 D1:B2F8 09 - - - add hl, bc + 163 D1:B2F9 57 - - - ld d, a + 164 D1:B2FA DD 46 02 - ld b, (ix+2) + 165 D1:B2FD FD 4E 02 - ld c, (iy+2) + 166 D1:B300 AF - - - xor a, a + 167 D1:B301 CB 78 - - bit 7, b + 168 D1:B303 28 01 - - jr z, $+3 + 169 D1:B305 81 - - - add a, c + 170 D1:B306 CB 79 - - bit 7, c + 171 D1:B308 28 01 - - jr z, $+3 + 172 D1:B30A 80 - - - add a, b + 173 D1:B30B ED 4C - - mlt bc + 174 D1:B30D 09 - - - add hl, bc + 175 D1:B30E 47 - - - ld b, a + 176 D1:B30F AF - - - xor a, a + 177 D1:B310 4F - - - ld c, a + 178 D1:B311 ED 42 - - sbc hl, bc + 179 D1:B313 43 - - - ld b, e + 180 D1:B314 ED 42 - - sbc hl, bc + 181 D1:B316 42 - - - ld b, d + 182 D1:B317 ED 42 - - sbc hl, bc + 183 D1:B319 C9 - - - ret + 184 D1:B31A - - - - vxNormalize: + 185 D1:B31A C9 - - - ret + 186 D1:B31B - - - - vxLength: + 187 D1:B31B C9 - - - ret + 188 D1:B31C - - - - #define rfl call vxReflect + 189 D1:B31C - - - - vxReflect: + 190 D1:B31C - - - - ; I = ix, N = iy, hl = result + 191 D1:B31C - - - - ; reflection direction I-2*dot(N,I)*N + 192 D1:B31C E5 - - - push hl + 193 D1:B31D CD D3 B2 D1 call vxDotProduct + 194 D1:B321 29 - - - add hl, hl + 195 D1:B322 29 - - - add hl, hl + 196 D1:B323 29 - - - add hl, hl + 197 D1:B324 - - - - ; scale N vector + 198 D1:B324 44 - - - ld b, h + 199 D1:B325 D1 - - - pop de + 200 D1:B326 FD 6E 00 - ld l, (iy+0) + 201 D1:B329 7C - - - ld a, h + 202 D1:B32A 17 - - - rla + 203 D1:B32B 9F - - - sbc a, a + 204 D1:B32C A5 - - - and l + 205 D1:B32D 4F - - - ld c, a + 206 D1:B32E 7D - - - ld a, l + 207 D1:B32F 17 - - - rla + 208 D1:B330 9F - - - sbc a, a + 209 D1:B331 A4 - - - and h + 210 D1:B332 81 - - - add a, c + 211 D1:B333 4F - - - ld c, a + 212 D1:B334 ED 6C - - mlt hl + 213 D1:B336 7C - - - ld a, h + 214 D1:B337 91 - - - sub c + 215 D1:B338 67 - - - ld h, a + 216 D1:B339 29 - - - add hl, hl + 217 D1:B33A 29 - - - add hl, hl + 218 D1:B33B 4C - - - ld c, h + 219 D1:B33C DD 7E 00 - ld a, (ix+0) + 220 D1:B33F 91 - - - sub a, c + 221 D1:B340 12 - - - ld (de), a + 222 D1:B341 13 - - - inc de + 223 D1:B342 - - - - + 224 D1:B342 60 - - - ld h, b + 225 D1:B343 FD 6E 01 - ld l, (iy+1) + 226 D1:B346 7C - - - ld a, h + 227 D1:B347 17 - - - rla + 228 D1:B348 9F - - - sbc a, a + 229 D1:B349 A5 - - - and l + 230 D1:B34A 4F - - - ld c, a + 231 D1:B34B 7D - - - ld a, l + 232 D1:B34C 17 - - - rla + 233 D1:B34D 9F - - - sbc a, a + 234 D1:B34E A4 - - - and h + 235 D1:B34F 81 - - - add a, c + 236 D1:B350 4F - - - ld c, a + 237 D1:B351 ED 6C - - mlt hl + 238 D1:B353 7C - - - ld a, h + 239 D1:B354 91 - - - sub c + 240 D1:B355 67 - - - ld h, a + 241 D1:B356 29 - - - add hl, hl + 242 D1:B357 29 - - - add hl, hl + 243 D1:B358 4C - - - ld c, h + 244 D1:B359 DD 7E 01 - ld a, (ix+1) + 245 D1:B35C 91 - - - sub a, c + 246 D1:B35D 12 - - - ld (de), a + 247 D1:B35E 13 - - - inc de + 248 D1:B35F - - - - + 249 D1:B35F 60 - - - ld h, b + 250 D1:B360 FD 6E 02 - ld l, (iy+2) + 251 D1:B363 7C - - - ld a, h + 252 D1:B364 17 - - - rla + 253 D1:B365 9F - - - sbc a, a + 254 D1:B366 A5 - - - and l + 255 D1:B367 4F - - - ld c, a + 256 D1:B368 7D - - - ld a, l + 257 D1:B369 17 - - - rla + 258 D1:B36A 9F - - - sbc a, a + 259 D1:B36B A4 - - - and h + 260 D1:B36C 81 - - - add a, c + 261 D1:B36D 4F - - - ld c, a + 262 D1:B36E ED 6C - - mlt hl + 263 D1:B370 7C - - - ld a, h + 264 D1:B371 91 - - - sub c + 265 D1:B372 67 - - - ld h, a + 266 D1:B373 29 - - - add hl, hl + 267 D1:B374 29 - - - add hl, hl + 268 D1:B375 4C - - - ld c, h + 269 D1:B376 DD 7E 02 - ld a, (ix+2) + 270 D1:B379 91 - - - sub a, c + 271 D1:B37A 12 - - - ld (de), a + 272 D1:B37B C9 - - - ret +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" + 6 D1:B37C - - - - #include "vxFramebuffer.ez80" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxFramebuffer.ez80" + 1 D1:B37C - - - - ; code start - framebuffer functions + 2 D1:B37C - - - - + 3 D1:B37C - - - - #define VX_FRAMEBUFFER_AUX0 $D40000 ; first VRAM buffer + 4 D1:B37C - - - - #define VX_FRAMEBUFFER_AUX1 $D52C00 ; second VRAM buffer + 5 D1:B37C - - - - #define VX_FRAMEBUFFER_SIZE $12C00 + 6 D1:B37C - - - - #define VX_VRAM $E30800 + 7 D1:B37C - - - - #define VX_BPP8 lcdBpp8 ; LCD 8 bpp mode bits + 8 D1:B37C - - - - #define VX_BPP16 lcdBpp16 ; LCD 16 bpp mode bits + 9 D1:B37C - - - - #define VX_LCD_CTRL mpLcdCtrl ; LCD control port + 10 D1:B37C - - - - #define VX_LCD_IMSC $E3001C ; LCD Interrupt Mask Register + 11 D1:B37C - - - - #define VX_LCD_ICR $E30028 ; LCD Interrupt Clear/Set Register + 12 D1:B37C - - - - #define VX_LCD_ISR $E30020 ; LCD Interrupt Status Register + 13 D1:B37C - - - - #define VX_LCD_BUFFER $E30010 ; base adress of LCD + 14 D1:B37C - - - - #define VX_LCD_PALETTE mpLcdPalette ; palette (r3g3b2) + 15 D1:B37C - - - - #define VX_LCD_TIMING2 $E30008 + 16 D1:B37C - - - - + 17 D1:B37C - - - - #define VX_GREEN_BITS %00000111 + 18 D1:B37C - - - - #define VX_RED_BITS %11100000 + 19 D1:B37C - - - - #define VX_BLUE_BITS %00011000 + 20 D1:B37C - - - - #define VX_COLOR_LOW_BIT %00101001 + 21 D1:B37C - - - - + 22 D1:B37C - - - - #define vxFramebuffer $E30014 + 23 D1:B37C - - - - + 24 D1:B37C - - - - vxResetPalette: + 25 D1:B37C - - - - ; load palette : + 26 D1:B37C - - - - ; color is 3-3-2 format, RGB + 27 D1:B37C - - - - ; calculate 1555 format color + 28 D1:B37C 21 00 02 E3 ld hl,VX_LCD_PALETTE ; palette mem + 29 D1:B380 06 00 - - ld b,0 + 30 D1:B382 - - - - vxLoadPaletteLoop: ; this loop is from wikiti + 31 D1:B382 50 - - - ld d,b + 32 D1:B383 78 - - - ld a,b + 33 D1:B384 E6 C0 - - and %11000000 + 34 D1:B386 CB 3A - - srl d + 35 D1:B388 1F - - - rra + 36 D1:B389 5F - - - ld e,a + 37 D1:B38A 3E 1F - - ld a,%00011111 + 38 D1:B38C A0 - - - and b + 39 D1:B38D B3 - - - or e + 40 D1:B38E 77 - - - ld (hl),a + 41 D1:B38F 23 - - - inc hl + 42 D1:B390 72 - - - ld (hl),d + 43 D1:B391 23 - - - inc hl + 44 D1:B392 04 - - - inc b + 45 D1:B393 20 ED - - jr nz,vxLoadPaletteLoop + 46 D1:B395 C9 - - - ret + 47 D1:B396 - - - - vxSetPalette: + 48 D1:B396 - - - - ; set the framebuffer palette + 49 D1:B396 - - - - ; input : hl + 50 D1:B396 11 00 02 E3 ld de, VX_LCD_PALETTE + 51 D1:B39A 01 00 02 00 ld bc, 512 + 52 D1:B39E ED B0 - - ldir + 53 D1:B3A0 C9 - - - ret + 54 D1:B3A1 - - - - vxClearBuffer: + 55 D1:B3A1 - - - - ; reset framebuffer with color + 56 D1:B3A1 - - - - ; input : c + 57 D1:B3A1 - - - - ; output : none + 58 D1:B3A1 - - - - ; destroyed : all except ix,iy + 59 D1:B3A1 2A 14 00 E3 ld hl, (vxFramebuffer) + 60 D1:B3A5 71 - - - ld (hl), c + 61 D1:B3A6 EB - - - ex de, hl + 62 D1:B3A7 B7 - - - or a, a + 63 D1:B3A8 ED 62 - - sbc hl, hl + 64 D1:B3AA 19 - - - add hl, de + 65 D1:B3AB 13 - - - inc de + 66 D1:B3AC 01 FF 2B 01 ld bc, 76799 + 67 D1:B3B0 ED B0 - - ldir + 68 D1:B3B2 C9 - - - ret + 69 D1:B3B3 - - - - vxFlushLCD: + 70 D1:B3B3 - - - - ; swap the framebuffer and synchronize with LCD + 71 D1:B3B3 2A 10 00 E3 ld hl, (VX_LCD_BUFFER) + 72 D1:B3B7 ED 5B 14 00 + E3 - - - ld de, (vxFramebuffer) + 73 D1:B3BC 22 14 00 E3 ld (vxFramebuffer), hl + 74 D1:B3C0 ED 53 10 00 + E3 - - - ld (VX_LCD_BUFFER), de + 75 D1:B3C5 - - - - vxWaitLCD: + 76 D1:B3C5 - - - - ; wait until the LCD finish displaying the frame + 77 D1:B3C5 21 28 00 E3 ld hl, VX_LCD_ICR + 78 D1:B3C9 CB D6 - - set 2, (hl) + 79 D1:B3CB 2E 20 - - ld l, VX_LCD_ISR&$FF + 80 D1:B3CD - - - - vxWaitLoop: + 81 D1:B3CD CB 56 - - bit 2, (hl) + 82 D1:B3CF 28 FC - - jr z, vxWaitLoop + 83 D1:B3D1 C9 - - - ret + 84 D1:B3D2 - - - - vxSwapLCD: + 85 D1:B3D2 - - - - ; swap buffer without LCD acknowledge + 86 D1:B3D2 2A 10 00 E3 ld hl, (VX_LCD_BUFFER) + 87 D1:B3D6 ED 5B 14 00 + E3 - - - ld de, (vxFramebuffer) + 88 D1:B3DB 22 14 00 E3 ld (vxFramebuffer), hl + 89 D1:B3DF ED 53 10 00 + E3 - - - ld (VX_LCD_BUFFER), de + 90 D1:B3E4 C9 - - - ret + 91 D1:B3E5 - - - - vxBlendRBG: + 92 D1:B3E5 - - - - ; blend color c and a + 93 D1:B3E5 - - - - ; destroy d and e + 94 D1:B3E5 57 - - - ld d, a + 95 D1:B3E6 A1 - - - and c + 96 D1:B3E7 E6 29 - - and VX_COLOR_LOW_BIT + 97 D1:B3E9 5F - - - ld e, a + 98 D1:B3EA 7A - - - ld a, d + 99 D1:B3EB E6 D6 - - and ~VX_COLOR_LOW_BIT + 100 D1:B3ED 57 - - - ld d, a + 101 D1:B3EE 79 - - - ld a, c + 102 D1:B3EF E6 D6 - - and ~VX_COLOR_LOW_BIT + 103 D1:B3F1 82 - - - add a, d + 104 D1:B3F2 1F - - - rra + 105 D1:B3F3 83 - - - add a, e + 106 D1:B3F4 C9 - - - ret + 107 D1:B3F5 - - - - vxLitRBG: + 108 D1:B3F5 - - - - ; lit a color (c) by factor (a) (0-63::255) + 109 D1:B3F5 - - - - ; destroy bc, hl + 110 D1:B3F5 47 - - - ld b, a + 111 D1:B3F6 79 - - - ld a, c + 112 D1:B3F7 E6 07 - - and VX_GREEN_BITS + 113 D1:B3F9 6F - - - ld l, a + 114 D1:B3FA 60 - - - ld h, b + 115 D1:B3FB ED 6C - - mlt hl + 116 D1:B3FD 29 - - - add hl, hl + 117 D1:B3FE 29 - - - add hl, hl + 118 D1:B3FF 7C - - - ld a, h + 119 D1:B400 ED 64 F8 - tst a, %11111000 + 120 D1:B403 28 02 - - jr z, $+4 + 121 D1:B405 26 07 - - ld h, VX_GREEN_BITS + 122 D1:B407 79 - - - ld a, c + 123 D1:B408 E6 18 - - and VX_BLUE_BITS + 124 D1:B40A 6F - - - ld l, a + 125 D1:B40B 7C - - - ld a, h + 126 D1:B40C 60 - - - ld h, b + 127 D1:B40D ED 6C - - mlt hl + 128 D1:B40F 29 - - - add hl, hl + 129 D1:B410 29 - - - add hl, hl + 130 D1:B411 6F - - - ld l, a + 131 D1:B412 7C - - - ld a, h + 132 D1:B413 ED 64 E0 - tst a, %11100000 + 133 D1:B416 28 02 - - jr z, $+4 + 134 D1:B418 3E 18 - - ld a, VX_BLUE_BITS + 135 D1:B41A E6 18 - - and VX_BLUE_BITS + 136 D1:B41C B5 - - - or l + 137 D1:B41D 60 - - - ld h, b + 138 D1:B41E 47 - - - ld b, a + 139 D1:B41F 79 - - - ld a, c + 140 D1:B420 E6 E0 - - and VX_RED_BITS + 141 D1:B422 6F - - - ld l, a + 142 D1:B423 ED 6C - - mlt hl + 143 D1:B425 7C - - - ld a, h + 144 D1:B426 ED 64 C0 - tst a, %11000000 + 145 D1:B429 28 02 - - jr z, $+4 + 146 D1:B42B 26 38 - - ld h, VX_RED_BITS>>2 + 147 D1:B42D 29 - - - add hl, hl + 148 D1:B42E 29 - - - add hl, hl + 149 D1:B42F 7C - - - ld a, h + 150 D1:B430 E6 E0 - - and VX_RED_BITS + 151 D1:B432 B0 - - - or b + 152 D1:B433 C9 - - - ret + 153 D1:B434 - - - - vxLerpRBG: + 154 D1:B434 - - - - ; 452 TStates + 155 D1:B434 E5 - - - push hl + 156 D1:B435 46 - - - ld b, (hl) + 157 D1:B436 - - - - ; b,c,e + 158 D1:B436 5F - - - ld e, a + 159 D1:B437 78 - - - ld a, b + 160 D1:B438 E6 07 - - and VX_GREEN_BITS + 161 D1:B43A 67 - - - ld h, a + 162 D1:B43B 79 - - - ld a, c + 163 D1:B43C E6 07 - - and VX_GREEN_BITS + 164 D1:B43E 94 - - - sub h + 165 D1:B43F 30 02 - - jr nc, $+4 + 166 D1:B441 2F - - - cpl + 167 D1:B442 3C - - - inc a + 168 D1:B443 67 - - - ld h, a + 169 D1:B444 6B - - - ld l, e + 170 D1:B445 - - - - ; convert flag + 171 D1:B445 9F - - - sbc a, a + 172 D1:B446 B7 - - - or a, a + 173 D1:B447 - - - - ; c=nz, nc=z + 174 D1:B447 ED 6C - - mlt hl + 175 D1:B449 29 - - - add hl, hl + 176 D1:B44A 29 - - - add hl, hl + 177 D1:B44B 7C - - - ld a, h + 178 D1:B44C 28 02 - - jr z, $+4 + 179 D1:B44E ED 44 - - neg + 180 D1:B450 67 - - - ld h, a + 181 D1:B451 78 - - - ld a, b + 182 D1:B452 E6 07 - - and VX_GREEN_BITS + 183 D1:B454 84 - - - add a, h + 184 D1:B455 57 - - - ld d, a + 185 D1:B456 - - - - ; 138 + 186 D1:B456 78 - - - ld a, b + 187 D1:B457 E6 18 - - and VX_BLUE_BITS + 188 D1:B459 67 - - - ld h, a + 189 D1:B45A 79 - - - ld a, c + 190 D1:B45B E6 18 - - and VX_BLUE_BITS + 191 D1:B45D 94 - - - sub h + 192 D1:B45E 30 02 - - jr nc, $+4 + 193 D1:B460 2F - - - cpl + 194 D1:B461 3C - - - inc a + 195 D1:B462 67 - - - ld h, a + 196 D1:B463 6B - - - ld l, e + 197 D1:B464 ED 6C - - mlt hl + 198 D1:B466 CB 14 - - rl h ; push down carry flag + 199 D1:B468 29 - - - add hl, hl + 200 D1:B469 7C - - - ld a, h + 201 D1:B46A E6 18 - - and VX_BLUE_BITS + 202 D1:B46C CB 4C - - bit 1, h + 203 D1:B46E 28 02 - - jr z, $+4 + 204 D1:B470 ED 44 - - neg + 205 D1:B472 67 - - - ld h, a + 206 D1:B473 78 - - - ld a, b + 207 D1:B474 E6 18 - - and VX_BLUE_BITS + 208 D1:B476 84 - - - add a, h + 209 D1:B477 B2 - - - or d + 210 D1:B478 57 - - - ld d, a + 211 D1:B479 - - - - ; 280 + 212 D1:B479 78 - - - ld a, b + 213 D1:B47A E6 E0 - - and VX_RED_BITS + 214 D1:B47C 67 - - - ld h, a + 215 D1:B47D 79 - - - ld a, c + 216 D1:B47E E6 E0 - - and VX_RED_BITS + 217 D1:B480 94 - - - sub h + 218 D1:B481 30 02 - - jr nc, $+4 + 219 D1:B483 2F - - - cpl + 220 D1:B484 3C - - - inc a ; neg, put different flag output + 221 D1:B485 67 - - - ld h, a + 222 D1:B486 6B - - - ld l, e + 223 D1:B487 ED 6C - - mlt hl + 224 D1:B489 CB 14 - - rl h ; push down carry flag + 225 D1:B48B 7C - - - ld a, h + 226 D1:B48C E6 70 - - and VX_RED_BITS>>1 + 227 D1:B48E CB 44 - - bit 0, h + 228 D1:B490 28 02 - - jr z, $+4 + 229 D1:B492 ED 44 - - neg + 230 D1:B494 67 - - - ld h, a + 231 D1:B495 78 - - - ld a, b + 232 D1:B496 1F - - - rra + 233 D1:B497 E6 70 - - and VX_RED_BITS>>1 + 234 D1:B499 84 - - - add a, h + 235 D1:B49A CB 27 - - sla a + 236 D1:B49C B2 - - - or d + 237 D1:B49D E1 - - - pop hl + 238 D1:B49E C9 - - - ret +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" + 7 D1:B49F - - - - #include "vxClipping.ez80" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxClipping.ez80" + 1 D1:B49F - - - - #define vxPlaneBit0 %10000000 + 2 D1:B49F - - - - #define vxPlaneBit1 %01000000 + 3 D1:B49F - - - - #define vxPlaneBit2 %00100000 + 4 D1:B49F - - - - #define vxPlaneBit3 %00010000 + 5 D1:B49F - - - - #define vxPlaneBit4 %00001000 + 6 D1:B49F - - - - #define vxVertexDirty %11111111 + 7 D1:B49F - - - - ;;#define VX_CLIP_EPSILON 32 + 8 D1:B49F - - - - #define VX_MAX_TMP_VERTEX 8 + 9 D1:B49F - - - - #define VX_MAX_PATCH_SIZE 16 + 10 D1:B49F - - - - #define VX_SCREEN_WIDTH 320 + 11 D1:B49F - - - - #define VX_SCREEN_HEIGHT 240 + 12 D1:B49F - - - - #define VX_SCREEN_WCENTER 160 + 13 D1:B49F - - - - #define VX_SCREEN_HCENTER 120 + 14 D1:B49F - - - - + 15 D1:B49F - - - - VX_PATCH_INPUT: + 16 D1:B49F 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 .fill 64 + 17 D1:B4DF - - - - VX_PATCH_OUTPUT: + 18 D1:B4DF 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 .fill 64 + 19 D1:B51F - - - - VX_VERTEX_POOL: + 20 D1:B51F 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 .fill 128 + 21 D1:B59F - - - - vxNewSize: + 22 D1:B59F 00 - - - .db 0 + 23 D1:B5A0 - - - - vxVertexAdress: + 24 D1:B5A0 00 00 00 - .dl 0 + 25 D1:B5A3 - - - - VX_CLIP_VERTEX0: + 26 D1:B5A3 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 - - .dl 0,0,0,0,0,0 + 27 D1:B5B5 - - - - VX_CLIP_VERTEX1: + 28 D1:B5B5 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 - - .dl 0,0,0,0,0,0 + 29 D1:B5C7 - - - - vxMixWrite: + 30 D1:B5C7 00 00 00 00 .db 0,0,0,0 + 31 D1:B5CB - - - - + 32 D1:B5CB - - - - vxClipTriangle: + 33 D1:B5CB FD 22 54 B6 + D1 - - - ld (vxClipDraw), iy + 34 D1:B5D0 FD 21 DF B4 + D1 - - - ld iy, VX_PATCH_OUTPUT + 35 D1:B5D5 FD 1F 00 - ld (iy+0), de + 36 D1:B5D8 FD 2F 03 - ld (iy+3), hl + 37 D1:B5DB FD 0F 06 - ld (iy+6), bc + 38 D1:B5DE FD 1F 09 - ld (iy+9), de + 39 D1:B5E1 21 1F B5 D1 ld hl, VX_VERTEX_POOL + 40 D1:B5E5 22 A0 B5 D1 ld (vxVertexAdress), hl + 41 D1:B5E9 - - - - + 42 D1:B5E9 06 03 - - ld b, 3 + 43 D1:B5EB - - - - + 44 D1:B5EB ED 64 80 - tst a, %10000000 + 45 D1:B5EE 28 0D - - jr z, vxNextPlane0 + 46 D1:B5F0 F5 - - - push af + 47 D1:B5F1 3E 80 - - ld a, %10000000 + 48 D1:B5F3 DD 21 D5 B7 + D1 - - - ld ix, vxRightDistance + 49 D1:B5F8 CD 5B B6 D1 call vxClipPlanePolygon + 50 D1:B5FC F1 - - - pop af + 51 D1:B5FD - - - - vxNextPlane0: + 52 D1:B5FD ED 64 40 - tst a, %01000000 + 53 D1:B600 28 0D - - jr z, vxNextPlane1 + 54 D1:B602 F5 - - - push af + 55 D1:B603 3E 40 - - ld a, %01000000 + 56 D1:B605 DD 21 E8 B7 + D1 - - - ld ix, vxLeftDistance + 57 D1:B60A CD 5B B6 D1 call vxClipPlanePolygon + 58 D1:B60E F1 - - - pop af + 59 D1:B60F - - - - vxNextPlane1: + 60 D1:B60F ED 64 20 - tst a, %00100000 + 61 D1:B612 28 0D - - jr z, vxNextPlane2 + 62 D1:B614 F5 - - - push af + 63 D1:B615 3E 20 - - ld a, %00100000 + 64 D1:B617 DD 21 F9 B7 + D1 - - - ld ix, vxDownDistance + 65 D1:B61C CD 5B B6 D1 call vxClipPlanePolygon + 66 D1:B620 F1 - - - pop af + 67 D1:B621 - - - - vxNextPlane2: + 68 D1:B621 ED 64 10 - tst a, %00010000 + 69 D1:B624 28 0D - - jr z, vxClipEnd + 70 D1:B626 F5 - - - push af + 71 D1:B627 3E 10 - - ld a, %00010000 + 72 D1:B629 DD 21 09 B8 + D1 - - - ld ix, vxUpDistance + 73 D1:B62E CD 5B B6 D1 call vxClipPlanePolygon + 74 D1:B632 F1 - - - pop af + 75 D1:B633 - - - - vxClipEnd: + 76 D1:B633 - - - - + 77 D1:B633 78 - - - ld a, b + 78 D1:B634 FE 03 - - cp a, 3 + 79 D1:B636 D8 - - - ret c ; preventive quit + 80 D1:B637 F5 - - - push af + 81 D1:B638 FD E5 - - push iy + 82 D1:B63A ED 54 00 - lea ix, iy+0 + 83 D1:B63D - - - - vxClipLoop: + 84 D1:B63D C5 - - - push bc + 85 D1:B63E DD 31 00 - ld iy, (ix+0) + 86 D1:B641 FD 7E 00 - ld a, (iy+0) + 87 D1:B644 E6 01 - - and $01 + 88 D1:B646 C4 F4 B8 D1 call nz, vxClipDivide + 89 D1:B64A C1 - - - pop bc + 90 D1:B64B ED 32 03 - lea ix, ix+3 + 91 D1:B64E 10 ED - - djnz vxClipLoop + 92 D1:B650 FD E1 - - pop iy + 93 D1:B652 F1 - - - pop af + 94 D1:B653 - - - - vxClipDraw=$+1 + 95 D1:B653 C3 00 00 00 jp $000000 + 96 D1:B657 - - - - vxClipDistance: + 97 D1:B657 - - - - CALL=$+1 + 98 D1:B657 C3 00 00 00 jp $000000 + 99 D1:B65B - - - - vxClipPlanePolygon: + 100 D1:B65B - - - - ; don't destroy bc + 101 D1:B65B - - - - ; input : iy list, b:size,ix:dcall, a:mask + 102 D1:B65B - - - - ; ouput : iy newlist, b:newsize + 103 D1:B65B 32 97 B6 D1 ld (vxMM0), a + 104 D1:B65F 32 9F B6 D1 ld (vxMM1), a + 105 D1:B663 32 C2 B6 D1 ld (vxMM2), a + 106 D1:B667 AF - - - xor a + 107 D1:B668 32 9F B5 D1 ld (vxNewSize), a + 108 D1:B66C 78 - - - ld a, b + 109 D1:B66D B7 - - - or a, a + 110 D1:B66E C8 - - - ret z + 111 D1:B66F DD 22 58 B6 + D1 - - - ld (CALL), ix + 112 D1:B674 - - - - + 113 D1:B674 04 - - - inc b + 114 D1:B675 0E 03 - - ld c, 3 + 115 D1:B677 ED 4C - - mlt bc ; size of copy + 116 D1:B679 ED 23 00 - lea hl, iy + 117 D1:B67C 11 9F B4 D1 ld de, VX_PATCH_INPUT + 118 D1:B680 ED B0 - - ldir + 119 D1:B682 - - - - ; parse through VX_PATCH_INPUT, output is VX_PATCH_OUTPUT + 120 D1:B682 47 - - - ld b, a + 121 D1:B683 FD 21 9F B4 + D1 - - - ld iy, VX_PATCH_INPUT + 122 D1:B688 DD 21 DF B4 + D1 - - - ld ix, VX_PATCH_OUTPUT + 123 D1:B68D - - - - vxClipSutherHodgmanLoop: + 124 D1:B68D C5 - - - push bc + 125 D1:B68E FD 27 00 - ld hl, (iy+0) + 126 D1:B691 FD 17 03 - ld de, (iy+3) + 127 D1:B694 1A - - - ld a, (de) + 128 D1:B695 A6 - - - and (hl) + 129 D1:B696 - - - - vxMM0=$+1 + 130 D1:B696 E6 00 - - and 0 + 131 D1:B698 C2 B2 B7 D1 jp nz, vxClipContinueX + 132 D1:B69C 1A - - - ld a, (de) + 133 D1:B69D B6 - - - or (hl) + 134 D1:B69E - - - - vxMM1=$+1 + 135 D1:B69E E6 00 - - and 0 + 136 D1:B6A0 20 13 - - jr nz, vxClipCheck0 + 137 D1:B6A2 DD 2F 00 - ld (ix+0), hl ; both point out, copy v0 + 138 D1:B6A5 ED 32 03 - lea ix, ix+3 + 139 D1:B6A8 3A 9F B5 D1 ld a, (vxNewSize) + 140 D1:B6AC 3C - - - inc a + 141 D1:B6AD 32 9F B5 D1 ld (vxNewSize), a + 142 D1:B6B1 C3 B2 B7 D1 jp vxClipContinueX + 143 D1:B6B5 - - - - vxClipCheck0: + 144 D1:B6B5 7E - - - ld a, (hl) + 145 D1:B6B6 DD E5 - - push ix + 146 D1:B6B8 CD 57 B6 D1 call vxClipDistance + 147 D1:B6BC EB - - - ex de, hl ; distance 0 + 148 D1:B6BD CD 57 B6 D1 call vxClipDistance + 149 D1:B6C1 - - - - vxMM2=$+1 + 150 D1:B6C1 E6 00 - - and 0 + 151 D1:B6C3 F5 - - - push af ; is edge leaving + 152 D1:B6C4 - - - - + 153 D1:B6C4 E5 - - - push hl + 154 D1:B6C5 B7 - - - or a, a + 155 D1:B6C6 ED 52 - - sbc hl, de ; d0/(d0-d1) + 156 D1:B6C8 D1 - - - pop de + 157 D1:B6C9 EB - - - ex de, hl + 158 D1:B6CA CD 6E B8 D1 call vxClipFactor + 159 D1:B6CE - - - - + 160 D1:B6CE FD 31 03 - ld ix, (iy+3) + 161 D1:B6D1 DD 17 0D - ld de, (ix+VX_VERTEX_RZ) + 162 D1:B6D4 FD 31 00 - ld ix, (iy+0) + 163 D1:B6D7 DD 27 0D - ld hl, (ix+VX_VERTEX_RZ) + 164 D1:B6DA CD 27 B8 D1 call vxClipMixWord + 165 D1:B6DE 22 B0 B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_RZ), hl + 166 D1:B6E2 - - - - + 167 D1:B6E2 FD 31 03 - ld ix, (iy+3) + 168 D1:B6E5 DD 17 07 - ld de, (ix+VX_VERTEX_RX) + 169 D1:B6E8 FD 31 00 - ld ix, (iy+0) + 170 D1:B6EB DD 27 07 - ld hl, (ix+VX_VERTEX_RX) + 171 D1:B6EE CD 27 B8 D1 call vxClipMixWord + 172 D1:B6F2 22 AA B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_RX), hl + 173 D1:B6F6 - - - - + 174 D1:B6F6 FD 31 03 - ld ix, (iy+3) + 175 D1:B6F9 DD 17 0A - ld de, (ix+VX_VERTEX_RY) + 176 D1:B6FC FD 31 00 - ld ix, (iy+0) + 177 D1:B6FF DD 27 0A - ld hl, (ix+VX_VERTEX_RY) + 178 D1:B702 CD 27 B8 D1 call vxClipMixWord + 179 D1:B706 22 AD B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_RY), hl + 180 D1:B70A - - - - + 181 D1:B70A 11 00 00 00 ld de, 0 + 182 D1:B70E FD 31 03 - ld ix, (iy+3) + 183 D1:B711 DD 5E 04 - ld e, (ix+VX_VERTEX_GPR0) + 184 D1:B714 FD 31 00 - ld ix, (iy+0) + 185 D1:B717 DD 56 04 - ld d, (ix+VX_VERTEX_GPR0) + 186 D1:B71A - - - - ;;call vxClipMixByte + 187 D1:B71A 7A - - - ld a, d + 188 D1:B71B 93 - - - sub e + 189 D1:B71C 6F - - - ld l, a + 190 D1:B71D 60 - - - ld h, b + 191 D1:B71E ED 6C - - mlt hl + 192 D1:B720 30 03 - - jr nc, $+5 + 193 D1:B722 7C - - - ld a, h + 194 D1:B723 90 - - - sub b + 195 D1:B724 67 - - - ld h, a + 196 D1:B725 53 - - - ld d, e + 197 D1:B726 1E 00 - - ld e, 0 + 198 D1:B728 19 - - - add hl, de + 199 D1:B729 7C - - - ld a, h + 200 D1:B72A - - - - + 201 D1:B72A 32 A7 B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_GPR0), a + 202 D1:B72E - - - - + 203 D1:B72E FD 31 03 - ld ix, (iy+3) + 204 D1:B731 DD 5E 05 - ld e, (ix+VX_VERTEX_GPR1) + 205 D1:B734 FD 31 00 - ld ix, (iy+0) + 206 D1:B737 DD 56 05 - ld d, (ix+VX_VERTEX_GPR1) + 207 D1:B73A - - - - ;call vxClipMixByte + 208 D1:B73A - - - - + 209 D1:B73A 7A - - - ld a, d + 210 D1:B73B 93 - - - sub e + 211 D1:B73C 6F - - - ld l, a + 212 D1:B73D 60 - - - ld h, b + 213 D1:B73E ED 6C - - mlt hl + 214 D1:B740 30 03 - - jr nc, $+5 + 215 D1:B742 7C - - - ld a, h + 216 D1:B743 90 - - - sub b + 217 D1:B744 67 - - - ld h, a + 218 D1:B745 53 - - - ld d, e + 219 D1:B746 1E 00 - - ld e, 0 + 220 D1:B748 19 - - - add hl, de + 221 D1:B749 7C - - - ld a, h + 222 D1:B74A - - - - + 223 D1:B74A 32 A8 B5 D1 ld (VX_CLIP_VERTEX0+VX_VERTEX_GPR1), a + 224 D1:B74E - - - - + 225 D1:B74E DD 21 A3 B5 + D1 - - - ld ix, VX_CLIP_VERTEX0+0 + 226 D1:B753 CD D4 B9 D1 call vxClipFrustrumCode + 227 D1:B757 F6 01 - - or a, $01 + 228 D1:B759 DD 77 00 - ld (ix+0), a + 229 D1:B75C - - - - + 230 D1:B75C - - - - ; do specific edge shift here + 231 D1:B75C F1 - - - pop af + 232 D1:B75D DD E1 - - pop ix + 233 D1:B75F - - - - + 234 D1:B75F C2 8F B7 D1 jp nz, vxEdgeRentring + 235 D1:B763 - - - - ; edge leaving + 236 D1:B763 - - - - ; copy clip vertex, output both v0 and intersection + 237 D1:B763 FD 27 00 - ld hl, (iy+0) + 238 D1:B766 DD 2F 00 - ld (ix+0), hl + 239 D1:B769 21 A3 B5 D1 ld hl, VX_CLIP_VERTEX0 + 240 D1:B76D ED 5B A0 B5 + D1 - - - ld de, (vxVertexAdress) + 241 D1:B772 DD 1F 03 - ld (ix+3), de + 242 D1:B775 01 10 00 00 ld bc, 16 + 243 D1:B779 ED B0 - - ldir + 244 D1:B77B ED 53 A0 B5 + D1 - - - ld (vxVertexAdress), de + 245 D1:B780 ED 32 06 - lea ix, ix+6 + 246 D1:B783 3A 9F B5 D1 ld a, (vxNewSize) + 247 D1:B787 C6 02 - - add a, 2 + 248 D1:B789 32 9F B5 D1 ld (vxNewSize), a + 249 D1:B78D 18 23 - - jr vxClipContinueX + 250 D1:B78F - - - - vxEdgeRentring: + 251 D1:B78F - - - - ; copy clip vertex, output intersection + 252 D1:B78F 21 A3 B5 D1 ld hl, VX_CLIP_VERTEX0 + 253 D1:B793 ED 5B A0 B5 + D1 - - - ld de, (vxVertexAdress) + 254 D1:B798 DD 1F 00 - ld (ix+0), de + 255 D1:B79B 01 10 00 00 ld bc, 16 + 256 D1:B79F ED B0 - - ldir + 257 D1:B7A1 ED 53 A0 B5 + D1 - - - ld (vxVertexAdress), de + 258 D1:B7A6 ED 32 03 - lea ix, ix+3 + 259 D1:B7A9 3A 9F B5 D1 ld a, (vxNewSize) + 260 D1:B7AD 3C - - - inc a + 261 D1:B7AE 32 9F B5 D1 ld (vxNewSize), a + 262 D1:B7B2 - - - - vxClipContinueX: + 263 D1:B7B2 ED 33 03 - lea iy, iy+3 + 264 D1:B7B5 C1 - - - pop bc + 265 D1:B7B6 05 - - - dec b + 266 D1:B7B7 C2 8D B6 D1 jp nz, vxClipSutherHodgmanLoop + 267 D1:B7BB 3A 9F B5 D1 ld a, (vxNewSize) + 268 D1:B7BF 47 - - - ld b, a + 269 D1:B7C0 FD 21 DF B4 + D1 - - - ld iy, VX_PATCH_OUTPUT + 270 D1:B7C5 - - - - ; make output cyclic + 271 D1:B7C5 FD 27 00 - ld hl, (iy+0) + 272 D1:B7C8 DD 2F 00 - ld (ix+0), hl + 273 D1:B7CB - - - - ; important is iy = new patch + 274 D1:B7CB C9 - - - ret + 275 D1:B7CC - - - - vxZDistance: + 276 D1:B7CC 01 0D 00 00 ld bc, VX_VERTEX_RZ + 277 D1:B7D0 09 - - - add hl, bc + 278 D1:B7D1 ED 27 - - ld hl, (hl) + 279 D1:B7D3 2B - - - dec hl + 280 D1:B7D4 C9 - - - ret + 281 D1:B7D5 - - - - vxRightDistance: + 282 D1:B7D5 - - - - tRT: + 283 D1:B7D5 - - - - ;1000 + 284 D1:B7D5 - - - - ; input hl, test for X>Z + 285 D1:B7D5 01 07 00 00 ld bc, VX_VERTEX_RX + 286 D1:B7D9 09 - - - add hl, bc + 287 D1:B7DA ED 07 - - ld bc, (hl) + 288 D1:B7DC 23 23 23 - inc hl \ inc hl \ inc hl + 289 D1:B7DF 23 23 23 - inc hl \ inc hl \ inc hl + 290 D1:B7E2 ED 27 - - ld hl, (hl) + 291 D1:B7E4 B7 - - - or a, a + 292 D1:B7E5 ED 42 - - sbc hl, bc ;Z-X, if > ; R<0 + 293 D1:B7E7 C9 - - - ret + 294 D1:B7E8 - - - - vxLeftDistance: + 295 D1:B7E8 - - - - ttLT: + 296 D1:B7E8 - - - - ; 0100 + 297 D1:B7E8 01 07 00 00 ld bc, VX_VERTEX_RX + 298 D1:B7EC 09 - - - add hl, bc + 299 D1:B7ED ED 07 - - ld bc, (hl) + 300 D1:B7EF 23 23 23 - inc hl \ inc hl \ inc hl + 301 D1:B7F2 23 23 23 - inc hl \ inc hl \ inc hl + 302 D1:B7F5 ED 27 - - ld hl, (hl) + 303 D1:B7F7 09 - - - add hl, bc + 304 D1:B7F8 C9 - - - ret + 305 D1:B7F9 - - - - vxDownDistance: + 306 D1:B7F9 - - - - tDWP: + 307 D1:B7F9 01 0A 00 00 ld bc, VX_VERTEX_RY + 308 D1:B7FD 09 - - - add hl, bc + 309 D1:B7FE ED 07 - - ld bc, (hl) + 310 D1:B800 23 23 23 - inc hl \ inc hl \ inc hl + 311 D1:B803 ED 27 - - ld hl, (hl) + 312 D1:B805 B7 - - - or a, a + 313 D1:B806 ED 42 - - sbc hl, bc + 314 D1:B808 C9 - - - ret + 315 D1:B809 - - - - vxUpDistance: + 316 D1:B809 - - - - tUPP: + 317 D1:B809 01 0A 00 00 ld bc, VX_VERTEX_RY + 318 D1:B80D 09 - - - add hl, bc + 319 D1:B80E ED 07 - - ld bc, (hl) + 320 D1:B810 23 23 23 - inc hl \ inc hl \ inc hl + 321 D1:B813 ED 27 - - ld hl, (hl) + 322 D1:B815 09 - - - add hl, bc + 323 D1:B816 C9 - - - ret + 324 D1:B817 - - - - + 325 D1:B817 - - - - vxClipMixByte: + 326 D1:B817 - - - - ; a = (d-e)*bc/65536+e + 327 D1:B817 7A - - - ld a, d + 328 D1:B818 93 - - - sub e + 329 D1:B819 6F - - - ld l, a + 330 D1:B81A 60 - - - ld h, b + 331 D1:B81B ED 6C - - mlt hl + 332 D1:B81D 30 03 - - jr nc, $+5 + 333 D1:B81F B7 - - - or a, a + 334 D1:B820 ED 42 - - sbc hl, bc + 335 D1:B822 53 - - - ld d, e + 336 D1:B823 1E 00 - - ld e, 0 + 337 D1:B825 19 - - - add hl, de + 338 D1:B826 C9 - - - ret + 339 D1:B827 - - - - + 340 D1:B827 - - - - vxClipMixWord: + 341 D1:B827 - - - - ; (hl-de)*bc/65536+de + 342 D1:B827 D5 - - - push de + 343 D1:B828 B7 - - - or a, a + 344 D1:B829 ED 52 - - sbc hl, de + 345 D1:B82B 22 C7 B5 D1 ld (vxMixWrite), hl + 346 D1:B82F DD 21 C7 B5 + D1 - - - ld ix, vxMixWrite + 347 D1:B834 - - - - + 348 D1:B834 DD 66 02 - ld h, (ix+2) + 349 D1:B837 CB 7C - - bit 7, h + 350 D1:B839 68 - - - ld l, b + 351 D1:B83A ED 6C - - mlt hl + 352 D1:B83C 28 03 - - jr z, $+5 + 353 D1:B83E B7 - - - or a, a + 354 D1:B83F ED 42 - - sbc hl, bc + 355 D1:B841 - - - - + 356 D1:B841 29 29 29 29 + 29 29 29 29 slhl +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxClipping.ez80" + 357 D1:B849 - - - - + 358 D1:B849 DD 56 01 - ld d, (ix+1) + 359 D1:B84C 58 - - - ld e, b + 360 D1:B84D ED 5C - - mlt de + 361 D1:B84F 19 - - - add hl, de + 362 D1:B850 - - - - + 363 D1:B850 DD 56 00 - ld d, (ix+0) + 364 D1:B853 58 - - - ld e, b + 365 D1:B854 ED 5C - - mlt de + 366 D1:B856 5A - - - ld e, d + 367 D1:B857 16 00 - - ld d, 0 + 368 D1:B859 19 - - - add hl, de + 369 D1:B85A - - - - + 370 D1:B85A DD 56 02 - ld d, (ix+2) + 371 D1:B85D 59 - - - ld e, c + 372 D1:B85E ED 5C - - mlt de + 373 D1:B860 19 - - - add hl, de + 374 D1:B861 - - - - + 375 D1:B861 DD 56 01 - ld d, (ix+1) + 376 D1:B864 59 - - - ld e, c + 377 D1:B865 ED 5C - - mlt de + 378 D1:B867 5A - - - ld e, d + 379 D1:B868 16 00 - - ld d, 0 + 380 D1:B86A 19 - - - add hl, de + 381 D1:B86B - - - - + 382 D1:B86B D1 - - - pop de + 383 D1:B86C 19 - - - add hl, de + 384 D1:B86D - - - - + 385 D1:B86D C9 - - - ret + 386 D1:B86E - - - - + 387 D1:B86E - - - - vxClipFactor: + 388 D1:B86E - - - - ; hl*65536/de, nz = do 65536-bc, z = bc + 389 D1:B86E - - - - ; 467 TStates + 390 D1:B86E 52 03 - - inc.s bc + 391 D1:B870 29 - - - add hl,hl + 392 D1:B871 30 10 - - jr nc, vxx + 393 D1:B873 D5 - - - push de + 394 D1:B874 EB - - - ex de, hl + 395 D1:B875 B7 - - - or a, a + 396 D1:B876 ED 62 - - sbc hl, hl + 397 D1:B878 ED 52 - - sbc hl, de + 398 D1:B87A D1 - - - pop de + 399 D1:B87B - - - - + 400 D1:B87B E5 - - - push hl + 401 D1:B87C B7 - - - or a, a + 402 D1:B87D ED 62 - - sbc hl, hl + 403 D1:B87F ED 52 - - sbc hl, de + 404 D1:B881 EB - - - ex de, hl + 405 D1:B882 E1 - - - pop hl + 406 D1:B883 - - - - + 407 D1:B883 - - - - vxx: + 408 D1:B883 ED 52 30 01 + 19 8F - - sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 409 D1:B889 29 ED 52 30 + 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 410 D1:B890 29 ED 52 30 + 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 411 D1:B897 29 ED 52 30 + 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 412 D1:B89E 29 ED 52 30 + 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 413 D1:B8A5 29 ED 52 30 + 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 414 D1:B8AC 29 ED 52 30 + 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 415 D1:B8B3 29 ED 52 30 + 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 416 D1:B8BA 2F - - - cpl + 417 D1:B8BB 47 - - - ld b, a + 418 D1:B8BC 29 ED 52 30 + 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 419 D1:B8C3 29 ED 52 30 + 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 420 D1:B8CA 29 ED 52 30 + 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 421 D1:B8D1 29 ED 52 30 + 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 422 D1:B8D8 29 ED 52 30 + 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 423 D1:B8DF 29 ED 52 30 + 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 424 D1:B8E6 29 ED 52 30 + 01 19 8F - add hl,hl \ sbc hl,de \ jr nc,$+3 \ add hl,de \ adc a,a + 425 D1:B8ED 29 ED 52 8F add hl,hl \ sbc hl,de \ adc a,a + 426 D1:B8F1 2F - - - cpl + 427 D1:B8F2 4F - - - ld c, a + 428 D1:B8F3 C9 - - - ret + 429 D1:B8F4 - - - - + 430 D1:B8F4 - - - - vxClipDivide: + 431 D1:B8F4 FD 07 0D - ld bc, (iy+VX_VERTEX_RZ) + 432 D1:B8F7 FD CB 0F 7E bit 7, (iy+VX_VERTEX_RZ+2) + 433 D1:B8FB 28 04 - - jr z, vxClampZ + 434 D1:B8FD 01 02 00 00 ld bc, 2 + 435 D1:B901 - - - - vxClampZ: + 436 D1:B901 FD 27 0A - ld hl, (iy+VX_VERTEX_RY) + 437 D1:B904 AF - - - xor a, a + 438 D1:B905 29 - - - add hl, hl + 439 D1:B906 30 06 - - jr nc, $+8 + 440 D1:B908 17 - - - rla + 441 D1:B909 EB - - - ex de, hl + 442 D1:B90A ED 62 - - sbc hl, hl + 443 D1:B90C ED 52 - - sbc hl, de + 444 D1:B90E - - - - + 445 D1:B90E ED 42 FA 25 + B9 D1 - - sbc hl, bc \ jp m, vxClipNextY + 446 D1:B914 B7 - - - or a, a + 447 D1:B915 - - - - ; potential clipping issue + 448 D1:B915 ED 42 - - sbc hl, bc + 449 D1:B917 FA 24 B9 D1 jp m, vxClipNextYCarry + 450 D1:B91B 1F - - - rra + 451 D1:B91C 3E 00 - - ld a, VX_SCREEN_HCENTER-(VX_SCREEN_HEIGHT/2) + 452 D1:B91E 30 3B - - jr nc, vxClipWriteY + 453 D1:B920 3E F0 - - ld a, VX_SCREEN_HCENTER+(VX_SCREEN_HEIGHT/2) + 454 D1:B922 18 37 - - jr vxClipWriteY + 455 D1:B924 - - - - vxClipNextYCarry: + 456 D1:B924 B7 - - - or a, a + 457 D1:B925 - - - - vxClipNextY: + 458 D1:B925 8F 09 - - adc a,a \ add hl,bc + 459 D1:B927 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 460 D1:B92E 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 461 D1:B935 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 462 D1:B93C 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 463 D1:B943 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 464 D1:B94A 29 ED 42 8F add hl,hl \ sbc hl,bc \ adc a,a + 465 D1:B94E 2F - - - cpl + 466 D1:B94F - - - - + 467 D1:B94F 87 - - - add a, a + 468 D1:B950 2E 79 - - ld l, VX_SCREEN_HEIGHT/2+1 ;precision stuffs + 469 D1:B952 67 - - - ld h, a + 470 D1:B953 ED 6C - - mlt hl + 471 D1:B955 7C - - - ld a, h + 472 D1:B956 30 01 - - jr nc, $+3 + 473 D1:B958 2F - - - cpl + 474 D1:B959 CE 78 - - adc a, VX_SCREEN_HCENTER + 475 D1:B95B - - - - vxClipWriteY: + 476 D1:B95B FD 77 01 - ld (iy+VX_VERTEX_SY), a + 477 D1:B95E - - - - + 478 D1:B95E FD 27 07 - ld hl, (iy+VX_VERTEX_RX) + 479 D1:B961 AF - - - xor a, a + 480 D1:B962 29 - - - add hl, hl + 481 D1:B963 30 06 - - jr nc, $+8 + 482 D1:B965 17 - - - rla + 483 D1:B966 EB - - - ex de, hl + 484 D1:B967 ED 62 - - sbc hl, hl + 485 D1:B969 ED 52 - - sbc hl, de + 486 D1:B96B - - - - + 487 D1:B96B ED 42 FA 86 + B9 D1 - - sbc hl, bc \ jp m, vxClipNextX + 488 D1:B971 B7 - - - or a, a + 489 D1:B972 - - - - ; potential clipping issue + 490 D1:B972 ED 42 - - sbc hl, bc + 491 D1:B974 FA 85 B9 D1 jp m, vxClipNextXCarry + 492 D1:B978 1F - - - rra + 493 D1:B979 21 00 00 00 ld hl, VX_SCREEN_WCENTER-(VX_SCREEN_WIDTH/2) + 494 D1:B97D 38 4A - - jr c, vxClipWriteX + 495 D1:B97F 21 40 01 00 ld hl, VX_SCREEN_WCENTER+(VX_SCREEN_WIDTH/2) + 496 D1:B983 18 44 - - jr vxClipWriteX + 497 D1:B985 - - - - vxClipNextXCarry: + 498 D1:B985 B7 - - - or a, a + 499 D1:B986 - - - - vxClipNextX: + 500 D1:B986 8F 09 - - adc a,a \ add hl,bc + 501 D1:B988 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 502 D1:B98F 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 503 D1:B996 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 504 D1:B99D 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 505 D1:B9A4 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 506 D1:B9AB 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 507 D1:B9B2 29 ED 42 8F add hl,hl \ sbc hl,bc \ adc a,a + 508 D1:B9B6 2F - - - cpl + 509 D1:B9B7 5F - - - ld e, a + 510 D1:B9B8 16 A1 - - ld d, VX_SCREEN_WIDTH/2+1 + 511 D1:B9BA ED 5C - - mlt de + 512 D1:B9BC 7A - - - ld a, d + 513 D1:B9BD ED 62 - - sbc hl, hl + 514 D1:B9BF 30 01 - - jr nc, $+3 + 515 D1:B9C1 2F - - - cpl + 516 D1:B9C2 6F - - - ld l, a + 517 D1:B9C3 11 A0 00 00 ld de, VX_SCREEN_WCENTER + 518 D1:B9C7 ED 5A - - adc hl, de + 519 D1:B9C9 - - - - vxClipWriteX: + 520 D1:B9C9 FD 75 02 - ld (iy+VX_VERTEX_SX), l + 521 D1:B9CC FD 74 03 - ld (iy+VX_VERTEX_SX+1), h + 522 D1:B9CF AF - - - xor a, a + 523 D1:B9D0 FD 77 00 - ld (iy+VX_VERTEX_CODE), a + 524 D1:B9D3 C9 - - - ret + 525 D1:B9D4 - - - - + 526 D1:B9D4 - - - - vxClipFrustrumCode: + 527 D1:B9D4 DD 27 0A - ld hl, (ix+VX_VERTEX_RY) + 528 D1:B9D7 DD 17 07 - ld de, (ix+VX_VERTEX_RX) + 529 D1:B9DA DD 07 0D - ld bc, (ix+VX_VERTEX_RZ) + 530 D1:B9DD AF - - - xor a, a + 531 D1:B9DE ED 42 - - sbc hl, bc + 532 D1:B9E0 FA E6 B9 D1 jp m, vxClipError0 + 533 D1:B9E4 F6 20 - - or %00100000 + 534 D1:B9E6 - - - - vxClipError0: + 535 D1:B9E6 09 - - - add hl, bc + 536 D1:B9E7 B7 - - - or a, a + 537 D1:B9E8 ED 4A - - adc hl, bc + 538 D1:B9EA F2 F0 B9 D1 jp p, vxClipError1 + 539 D1:B9EE F6 10 - - or %00010000 + 540 D1:B9F0 - - - - vxClipError1: + 541 D1:B9F0 - - - - ; y cliping was handled + 542 D1:B9F0 EB - - - ex de, hl + 543 D1:B9F1 ED 42 - - sbc hl, bc + 544 D1:B9F3 FA F9 B9 D1 jp m, vxClipError2 + 545 D1:B9F7 F6 80 - - or a, %10000000 + 546 D1:B9F9 - - - - vxClipError2: + 547 D1:B9F9 09 - - - add hl, bc + 548 D1:B9FA B7 - - - or a, a + 549 D1:B9FB ED 4A - - adc hl, bc + 550 D1:B9FD F2 03 BA D1 jp p, vxClipError3 + 551 D1:BA01 F6 40 - - or a, %01000000 + 552 D1:BA03 - - - - vxClipError3: + 553 D1:BA03 - - - - ; x clipping handled + 554 D1:BA03 DD CB 0F 7E bit 7, (ix+VX_VERTEX_RZ+2) + 555 D1:BA07 C8 - - - ret z + 556 D1:BA08 F6 08 - - or %00001000 + 557 D1:BA0A C9 - - - ret +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" + 8 D1:BA0B - - - - #include "vxPipeline.ez80" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" + 1 D1:BA0B - - - - + 2 D1:BA0B - - - - #include "vxVertexShader.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxVertexShader.inc" + 1 D1:BA0B - - - - ; cache data register (de) ; + 2 D1:BA0B - - - - + 3 D1:BA0B - - - - #define VX_VERTEX_CODE 0 + 4 D1:BA0B - - - - #define VX_VERTEX_SY 1 + 5 D1:BA0B - - - - #define VX_VERTEX_SX 2 + 6 D1:BA0B - - - - #define VX_VERTEX_GPR0 4 + 7 D1:BA0B - - - - #define VX_VERTEX_GPR1 5 + 8 D1:BA0B - - - - #define VX_VERTEX_UNIFORM 6 + 9 D1:BA0B - - - - #define VX_VERTEX_RX 7 + 10 D1:BA0B - - - - #define VX_VERTEX_RY 10 + 11 D1:BA0B - - - - #define VX_VERTEX_RZ 13 + 12 D1:BA0B - - - - + 13 D1:BA0B - - - - ; vertex input register (iy) ; + 14 D1:BA0B - - - - + 15 D1:BA0B - - - - #define VX_VERTEX_POSITION 0 + 16 D1:BA0B - - - - #define VX_VERTEX_VX 0 + 17 D1:BA0B - - - - #define VX_VERTEX_VY 2 + 18 D1:BA0B - - - - #define VX_VERTEX_VZ 4 + 19 D1:BA0B - - - - #define VX_VERTEX_NORMAL 6 + 20 D1:BA0B - - - - #define VX_VERTEX_NX 6 + 21 D1:BA0B - - - - #define VX_VERTEX_NY 7 + 22 D1:BA0B - - - - #define VX_VERTEX_NZ 8 + 23 D1:BA0B - - - - + 24 D1:BA0B - - - - ; global data input register (ix) ; + 25 D1:BA0B - - - - + 26 D1:BA0B - - - - #define VX_MATRIX0 0 + 27 D1:BA0B - - - - #define VX_MATRIX0_C0 0 + 28 D1:BA0B - - - - #define VX_MATRIX0_C1 1 + 29 D1:BA0B - - - - #define VX_MATRIX0_C2 2 + 30 D1:BA0B - - - - #define VX_MATRIX0_C3 3 + 31 D1:BA0B - - - - #define VX_MATRIX0_C4 4 + 32 D1:BA0B - - - - #define VX_MATRIX0_C5 5 + 33 D1:BA0B - - - - #define VX_MATRIX0_C6 6 + 34 D1:BA0B - - - - #define VX_MATRIX0_C7 7 + 35 D1:BA0B - - - - #define VX_MATRIX0_C8 8 + 36 D1:BA0B - - - - #define VX_MATRIX0_TX 9 + 37 D1:BA0B - - - - #define VX_MATRIX0_TY 12 + 38 D1:BA0B - - - - #define VX_MATRIX0_TZ 15 + 39 D1:BA0B - - - - + 40 D1:BA0B - - - - #define VX_LIGHT0_VECTOR 18 + 41 D1:BA0B - - - - #define VX_LIGHT0_AMBIANT 21 + 42 D1:BA0B - - - - #define VX_LIGHT0_POSITION 22 + 43 D1:BA0B - - - - + 44 D1:BA0B - - - - ; constant ; + 45 D1:BA0B - - - - + 46 D1:BA0B - - - - #define VX_MATRIX_SIZE 18 + 47 D1:BA0B - - - - #define VX_MATRIX_C0 0 + 48 D1:BA0B - - - - #define VX_MATRIX_C1 1 + 49 D1:BA0B - - - - #define VX_MATRIX_C2 2 + 50 D1:BA0B - - - - #define VX_MATRIX_C3 3 + 51 D1:BA0B - - - - #define VX_MATRIX_C4 4 + 52 D1:BA0B - - - - #define VX_MATRIX_C5 5 + 53 D1:BA0B - - - - #define VX_MATRIX_C6 6 + 54 D1:BA0B - - - - #define VX_MATRIX_C7 7 + 55 D1:BA0B - - - - #define VX_MATRIX_C8 8 + 56 D1:BA0B - - - - #define VX_MATRIX_TX 9 + 57 D1:BA0B - - - - #define VX_MATRIX_TY 12 + 58 D1:BA0B - - - - #define VX_MATRIX_TZ 15 + 59 D1:BA0B - - - - + 60 D1:BA0B - - - - #define VX_LIGHT_SIZE 10 + 61 D1:BA0B - - - - #define VX_LIGHT_VECTOR 0 + 62 D1:BA0B - - - - #define VX_LIGHT_AMBIANT 3 + 63 D1:BA0B - - - - #define VX_LIGHT_POSITION 4 + 64 D1:BA0B - - - - + 65 D1:BA0B - - - - #define VX_SHADER_VERTEX_SIZE 16 ; per vertex data in pipeline + 66 D1:BA0B - - - - #define VX_DATA_VERTEX_SIZE 9 ; this should be changed if you suppress vertex normal data + 67 D1:BA0B - - - - + 68 D1:BA0B - - - - #define VX_VERTEX_SHADER_SIZE 1024 ; allowed shader size + 69 D1:BA0B - - - - #define VX_VERTEX_SHADER_DATA $E30800 + 70 D1:BA0B - - - - #define VX_VERTEX_SHADER_CODE $E30800 + 71 D1:BA0B - - - - + 72 D1:BA0B - - - - ; return shader ; + 73 D1:BA0B - - - - + 74 D1:BA0B - - - - ; shader will copy 1024 bytes from global_data to VX_VRAM. This load occurs at begin of stream instruction, to ensure maximum vertex throughput. About 2200 cycles per vertex are needed. + 75 D1:BA0B - - - - + 76 D1:BA0B - - - - VX_VERTEX_SHADER_COPY: + 77 D1:BA0B - - - - + 78 D1:BA0B - - - - ; relocate the shader to fast VRAM ($E30800) + 79 D1:BA0B - - - - + 80 D1:BA0B - - - - .relocate VX_VERTEX_SHADER_CODE +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxVertexShader.inc" + 81 E3:0800 - - - - + 82 E3:0800 - - - - vxModelView: + 83 E3:0800 00 00 00 - .db 0,0,0 + 84 E3:0803 00 00 00 - .db 0,0,0 + 85 E3:0806 00 00 00 - .db 0,0,0 + 86 E3:0809 00 00 00 00 + 00 00 00 00 + 00 - - - .dl 0,0,0 + 87 E3:0812 - - - - vxLight0: + 88 E3:0812 00 00 C0 - .db 0,0,-64 + 89 E3:0815 00 - - - .db 0 + 90 E3:0816 00 00 00 00 + 00 00 - - .dw 0,0,0 + 91 E3:081C - - - - + 92 E3:081C - - - - ; global shader call + 93 E3:081C - - - - + 94 E3:081C - - - - vxVertexShader: + 95 E3:081C - - - - ; ix = global data register [MC[0-8],MTX,MTY,MTZ,LV[0-2],LA,LE] + 96 E3:081C - - - - ; iy = vertex data register [VX,VY,VZ,VN[0-2]] + 97 E3:081C - - - - ; de = output data register [RC,SY,SX,RI[0-1],RX,RY,RZ] + 98 E3:081C - - - - ; bc = x vertex coordinate [16bits] + 99 E3:081C - - - - ; OUT register + 100 E3:081C - - - - ; de = de + VX_SHADER_VERTEX_SIZE + 101 E3:081C - - - - ; iy = iy + VX_DATA_VERTEX_SIZE + 102 E3:081C - - - - ; data copied to memory + 103 E3:081C ED 66 09 - pea iy+VX_DATA_VERTEX_SIZE + 104 E3:081F D5 - - - push de + 105 E3:0820 - - - - ; X coordinate + 106 E3:0820 - - - - ; ld bc, (iy+0) + 107 E3:0820 DD 17 09 - ld de, (ix+VX_MATRIX0_TX) + 108 E3:0823 DD 7E 00 - ld a, (ix+VX_MATRIX0_C0) + 109 E3:0826 60 - - - ld h, b + 110 E3:0827 6F - - - ld l, a + 111 E3:0828 ED 6C - - mlt hl + 112 E3:082A FE 80 - - cp $80 + 113 E3:082C 38 02 - - jr c, $+4 + 114 E3:082E ED 42 - - sbc hl, bc + 115 E3:0830 CB 78 - - bit 7, b + 116 E3:0832 47 - - - ld b, a + 117 E3:0833 28 03 - - jr z, $+5 + 118 E3:0835 2F - - - cpl + 119 E3:0836 8C - - - adc a, h + 120 E3:0837 67 - - - ld h, a + 121 E3:0838 29 - - - add hl, hl + 122 E3:0839 29 - - - add hl, hl + 123 E3:083A 29 - - - add hl, hl + 124 E3:083B 29 - - - add hl, hl + 125 E3:083C 29 - - - add hl, hl + 126 E3:083D 29 - - - add hl, hl + 127 E3:083E 29 - - - add hl, hl + 128 E3:083F 29 - - - add hl, hl + 129 E3:0840 ED 4C - - mlt bc + 130 E3:0842 09 - - - add hl, bc + 131 E3:0843 19 - - - add hl, de + 132 E3:0844 DD 7E 01 - ld a, (ix+VX_MATRIX0_C1) + 133 E3:0847 B7 - - - or a, a + 134 E3:0848 28 22 - - jr z, vxVertexSkip0 + 135 E3:084A FD 07 02 - ld bc, (iy+VX_VERTEX_VY) + 136 E3:084D EB - - - ex de, hl + 137 E3:084E 60 - - - ld h, b + 138 E3:084F 6F - - - ld l, a + 139 E3:0850 ED 6C - - mlt hl + 140 E3:0852 FE 80 - - cp $80 + 141 E3:0854 38 02 - - jr c, $+4 + 142 E3:0856 ED 42 - - sbc hl, bc + 143 E3:0858 CB 78 - - bit 7, b + 144 E3:085A 47 - - - ld b, a + 145 E3:085B 28 03 - - jr z, $+5 + 146 E3:085D 2F - - - cpl + 147 E3:085E 8C - - - adc a, h + 148 E3:085F 67 - - - ld h, a + 149 E3:0860 29 - - - add hl, hl + 150 E3:0861 29 - - - add hl, hl + 151 E3:0862 29 - - - add hl, hl + 152 E3:0863 29 - - - add hl, hl + 153 E3:0864 29 - - - add hl, hl + 154 E3:0865 29 - - - add hl, hl + 155 E3:0866 29 - - - add hl, hl + 156 E3:0867 29 - - - add hl, hl + 157 E3:0868 ED 4C - - mlt bc + 158 E3:086A 09 - - - add hl, bc + 159 E3:086B 19 - - - add hl, de + 160 E3:086C - - - - vxVertexSkip0: + 161 E3:086C DD 7E 02 - ld a, (ix+VX_MATRIX0_C2) + 162 E3:086F FD 07 04 - ld bc, (iy+VX_VERTEX_VZ) + 163 E3:0872 51 - - - ld d, c + 164 E3:0873 5F - - - ld e, a + 165 E3:0874 ED 5C - - mlt de + 166 E3:0876 19 - - - add hl, de + 167 E3:0877 EB - - - ex de, hl + 168 E3:0878 60 - - - ld h, b + 169 E3:0879 6F - - - ld l, a + 170 E3:087A ED 6C - - mlt hl + 171 E3:087C FE 80 - - cp $80 + 172 E3:087E 38 02 - - jr c, $+4 + 173 E3:0880 ED 42 - - sbc hl, bc + 174 E3:0882 CB 78 - - bit 7, b + 175 E3:0884 28 03 - - jr z, $+5 + 176 E3:0886 2F - - - cpl + 177 E3:0887 8C - - - adc a, h + 178 E3:0888 67 - - - ld h, a + 179 E3:0889 29 - - - add hl, hl + 180 E3:088A 29 - - - add hl, hl + 181 E3:088B 29 - - - add hl, hl + 182 E3:088C 29 - - - add hl, hl + 183 E3:088D 29 - - - add hl, hl + 184 E3:088E 29 - - - add hl, hl + 185 E3:088F 29 - - - add hl, hl + 186 E3:0890 29 - - - add hl, hl + 187 E3:0891 19 - - - add hl, de + 188 E3:0892 E5 - - - push hl + 189 E3:0893 - - - - ; Z coordinate + 190 E3:0893 DD 17 0F - ld de, (ix+VX_MATRIX0_TZ) + 191 E3:0896 DD 7E 08 - ld a, (ix+VX_MATRIX0_C8) + 192 E3:0899 60 - - - ld h, b + 193 E3:089A 6F - - - ld l, a + 194 E3:089B ED 6C - - mlt hl + 195 E3:089D FE 80 - - cp $80 + 196 E3:089F 38 02 - - jr c, $+4 + 197 E3:08A1 ED 42 - - sbc hl, bc + 198 E3:08A3 CB 78 - - bit 7, b + 199 E3:08A5 47 - - - ld b, a + 200 E3:08A6 28 03 - - jr z, $+5 + 201 E3:08A8 2F - - - cpl + 202 E3:08A9 8C - - - adc a, h + 203 E3:08AA 67 - - - ld h, a + 204 E3:08AB 29 - - - add hl, hl + 205 E3:08AC 29 - - - add hl, hl + 206 E3:08AD 29 - - - add hl, hl + 207 E3:08AE 29 - - - add hl, hl + 208 E3:08AF 29 - - - add hl, hl + 209 E3:08B0 29 - - - add hl, hl + 210 E3:08B1 29 - - - add hl, hl + 211 E3:08B2 29 - - - add hl, hl + 212 E3:08B3 ED 4C - - mlt bc + 213 E3:08B5 09 - - - add hl, bc + 214 E3:08B6 19 - - - add hl, de + 215 E3:08B7 DD 7E 07 - ld a, (ix+VX_MATRIX0_C7) + 216 E3:08BA FD 07 02 - ld bc, (iy+VX_VERTEX_VY) + 217 E3:08BD EB - - - ex de, hl + 218 E3:08BE 60 - - - ld h, b + 219 E3:08BF 6F - - - ld l, a + 220 E3:08C0 ED 6C - - mlt hl + 221 E3:08C2 FE 80 - - cp $80 + 222 E3:08C4 38 02 - - jr c, $+4 + 223 E3:08C6 ED 42 - - sbc hl, bc + 224 E3:08C8 CB 78 - - bit 7, b + 225 E3:08CA 47 - - - ld b, a + 226 E3:08CB 28 03 - - jr z, $+5 + 227 E3:08CD 2F - - - cpl + 228 E3:08CE 8C - - - adc a, h + 229 E3:08CF 67 - - - ld h, a + 230 E3:08D0 29 - - - add hl, hl + 231 E3:08D1 29 - - - add hl, hl + 232 E3:08D2 29 - - - add hl, hl + 233 E3:08D3 29 - - - add hl, hl + 234 E3:08D4 29 - - - add hl, hl + 235 E3:08D5 29 - - - add hl, hl + 236 E3:08D6 29 - - - add hl, hl + 237 E3:08D7 29 - - - add hl, hl + 238 E3:08D8 ED 4C - - mlt bc + 239 E3:08DA 09 - - - add hl, bc + 240 E3:08DB 19 - - - add hl, de + 241 E3:08DC DD 7E 06 - ld a, (ix+VX_MATRIX0_C6) + 242 E3:08DF FD 07 00 - ld bc, (iy+VX_VERTEX_VX) + 243 E3:08E2 51 - - - ld d, c + 244 E3:08E3 5F - - - ld e, a + 245 E3:08E4 ED 5C - - mlt de + 246 E3:08E6 19 - - - add hl, de + 247 E3:08E7 EB - - - ex de, hl + 248 E3:08E8 60 - - - ld h, b + 249 E3:08E9 6F - - - ld l, a + 250 E3:08EA ED 6C - - mlt hl + 251 E3:08EC FE 80 - - cp $80 + 252 E3:08EE 38 02 - - jr c, $+4 + 253 E3:08F0 ED 42 - - sbc hl, bc + 254 E3:08F2 CB 78 - - bit 7, b + 255 E3:08F4 28 03 - - jr z, $+5 + 256 E3:08F6 2F - - - cpl + 257 E3:08F7 8C - - - adc a, h + 258 E3:08F8 67 - - - ld h, a + 259 E3:08F9 29 - - - add hl, hl + 260 E3:08FA 29 - - - add hl, hl + 261 E3:08FB 29 - - - add hl, hl + 262 E3:08FC 29 - - - add hl, hl + 263 E3:08FD 29 - - - add hl, hl + 264 E3:08FE 29 - - - add hl, hl + 265 E3:08FF 29 - - - add hl, hl + 266 E3:0900 29 - - - add hl, hl + 267 E3:0901 19 - - - add hl, de + 268 E3:0902 E5 - - - push hl + 269 E3:0903 - - - - ; Y coordinate + 270 E3:0903 DD 17 0C - ld de, (ix+VX_MATRIX0_TY) + 271 E3:0906 DD 7E 03 - ld a, (ix+VX_MATRIX0_C3) + 272 E3:0909 60 - - - ld h, b + 273 E3:090A 6F - - - ld l, a + 274 E3:090B ED 6C - - mlt hl + 275 E3:090D FE 80 - - cp $80 + 276 E3:090F 38 02 - - jr c, $+4 + 277 E3:0911 ED 42 - - sbc hl, bc + 278 E3:0913 CB 78 - - bit 7, b + 279 E3:0915 47 - - - ld b, a + 280 E3:0916 28 03 - - jr z, $+5 + 281 E3:0918 2F - - - cpl + 282 E3:0919 8C - - - adc a, h + 283 E3:091A 67 - - - ld h, a + 284 E3:091B 29 - - - add hl, hl + 285 E3:091C 29 - - - add hl, hl + 286 E3:091D 29 - - - add hl, hl + 287 E3:091E 29 - - - add hl, hl + 288 E3:091F 29 - - - add hl, hl + 289 E3:0920 29 - - - add hl, hl + 290 E3:0921 29 - - - add hl, hl + 291 E3:0922 29 - - - add hl, hl + 292 E3:0923 ED 4C - - mlt bc + 293 E3:0925 09 - - - add hl, bc + 294 E3:0926 19 - - - add hl, de + 295 E3:0927 DD 7E 04 - ld a, (ix+VX_MATRIX0_C4) + 296 E3:092A FD 07 02 - ld bc, (iy+VX_VERTEX_VY) + 297 E3:092D EB - - - ex de, hl + 298 E3:092E 60 - - - ld h, b + 299 E3:092F 6F - - - ld l, a + 300 E3:0930 ED 6C - - mlt hl + 301 E3:0932 FE 80 - - cp $80 + 302 E3:0934 38 02 - - jr c, $+4 + 303 E3:0936 ED 42 - - sbc hl, bc + 304 E3:0938 CB 78 - - bit 7, b + 305 E3:093A 47 - - - ld b, a + 306 E3:093B 28 03 - - jr z, $+5 + 307 E3:093D 2F - - - cpl + 308 E3:093E 8C - - - adc a, h + 309 E3:093F 67 - - - ld h, a + 310 E3:0940 29 - - - add hl, hl + 311 E3:0941 29 - - - add hl, hl + 312 E3:0942 29 - - - add hl, hl + 313 E3:0943 29 - - - add hl, hl + 314 E3:0944 29 - - - add hl, hl + 315 E3:0945 29 - - - add hl, hl + 316 E3:0946 29 - - - add hl, hl + 317 E3:0947 29 - - - add hl, hl + 318 E3:0948 ED 4C - - mlt bc + 319 E3:094A 09 - - - add hl, bc + 320 E3:094B 19 - - - add hl, de + 321 E3:094C DD 7E 05 - ld a, (ix+VX_MATRIX0_C5) + 322 E3:094F FD 07 04 - ld bc, (iy+VX_VERTEX_VZ) + 323 E3:0952 EB - - - ex de, hl + 324 E3:0953 60 - - - ld h, b + 325 E3:0954 6F - - - ld l, a + 326 E3:0955 ED 6C - - mlt hl + 327 E3:0957 FE 80 - - cp $80 + 328 E3:0959 38 02 - - jr c, $+4 + 329 E3:095B ED 42 - - sbc hl, bc + 330 E3:095D CB 78 - - bit 7, b + 331 E3:095F 47 - - - ld b, a + 332 E3:0960 28 03 - - jr z, $+5 + 333 E3:0962 2F - - - cpl + 334 E3:0963 8C - - - adc a, h + 335 E3:0964 67 - - - ld h, a + 336 E3:0965 29 - - - add hl, hl + 337 E3:0966 29 - - - add hl, hl + 338 E3:0967 29 - - - add hl, hl + 339 E3:0968 29 - - - add hl, hl + 340 E3:0969 29 - - - add hl, hl + 341 E3:096A 29 - - - add hl, hl + 342 E3:096B 29 - - - add hl, hl + 343 E3:096C 29 - - - add hl, hl + 344 E3:096D ED 4C - - mlt bc + 345 E3:096F 09 - - - add hl, bc + 346 E3:0970 19 - - - add hl, de + 347 E3:0971 - - - - ; lightning model is here, infinite directionnal light, no pow + 348 E3:0971 AF - - - xor a, a + 349 E3:0972 FD 4E 06 - ld c, (iy+VX_VERTEX_NX) + 350 E3:0975 DD 46 12 - ld b, (ix+VX_LIGHT0_VECTOR+0) + 351 E3:0978 CB 79 28 01 + 90 - - - bit 7, c \ jr z, $+3 \ sub a,b + 352 E3:097D CB 78 28 01 + 91 - - - bit 7, b \ jr z, $+3 \ sub a,c + 353 E3:0982 ED 4C - - mlt bc + 354 E3:0984 80 - - - add a, b + 355 E3:0985 FD 4E 07 - ld c, (iy+VX_VERTEX_NY) + 356 E3:0988 DD 46 13 - ld b, (ix+VX_LIGHT0_VECTOR+1) + 357 E3:098B CB 79 28 01 + 90 - - - bit 7, c \ jr z, $+3 \ sub a,b + 358 E3:0990 CB 78 28 01 + 91 - - - bit 7, b \ jr z, $+3 \ sub a,c + 359 E3:0995 ED 4C - - mlt bc + 360 E3:0997 80 - - - add a, b + 361 E3:0998 FD 4E 08 - ld c, (iy+VX_VERTEX_NZ) + 362 E3:099B DD 46 14 - ld b, (ix+VX_LIGHT0_VECTOR+2) + 363 E3:099E CB 79 28 01 + 90 - - - bit 7, c \ jr z, $+3 \ sub a,b + 364 E3:09A3 CB 78 28 01 + 91 - - - bit 7, b \ jr z, $+3 \ sub a,c + 365 E3:09A8 ED 4C - - mlt bc + 366 E3:09AA 80 - - - add a, b + 367 E3:09AB - - - - ; max(a,0) + 368 E3:09AB F2 B0 09 E3 jp p, $+5 + 369 E3:09AF AF - - - xor a, a + 370 E3:09B0 - - - - ; ambiant lightning=12 + 371 E3:09B0 C6 0C - - add a, 12 + 372 E3:09B2 - - - - ; min(a,31) + 373 E3:09B2 FE 20 - - cp 32 + 374 E3:09B4 38 02 - - jr c, $+4 + 375 E3:09B6 3E 1F - - ld a, 31 + 376 E3:09B8 C1 - - - pop bc + 377 E3:09B9 D1 - - - pop de + 378 E3:09BA FD E1 - - pop iy + 379 E3:09BC FD 77 06 - ld (iy+VX_VERTEX_UNIFORM), a + 380 E3:09BF FD 1F 07 - ld (iy+VX_VERTEX_RX), de + 381 E3:09C2 FD 2F 0A - ld (iy+VX_VERTEX_RY), hl + 382 E3:09C5 FD 0F 0D - ld (iy+VX_VERTEX_RZ), bc + 383 E3:09C8 AF - - - xor a, a + 384 E3:09C9 29 - - - add hl, hl + 385 E3:09CA 30 09 - - jr nc, $+11 + 386 E3:09CC 17 - - - rla + 387 E3:09CD D5 - - - push de + 388 E3:09CE EB - - - ex de, hl + 389 E3:09CF ED 62 - - sbc hl, hl + 390 E3:09D1 ED 52 - - sbc hl, de + 391 E3:09D3 D1 - - - pop de + 392 E3:09D4 B7 - - - or a, a + 393 E3:09D5 ED 42 - - sbc hl, bc + 394 E3:09D7 FA E3 09 E3 jp m, vxDivideNext0 + 395 E3:09DB B7 - - - or a, a + 396 E3:09DC - - - - ; potential clipping issue + 397 E3:09DC ED 42 - - sbc hl, bc + 398 E3:09DE F2 86 0A E3 jp p, vxPerspectiveClip0 + 399 E3:09E2 B7 - - - or a, a + 400 E3:09E3 - - - - vxDivideNext0: + 401 E3:09E3 8F 09 - - adc a,a \ add hl,bc + 402 E3:09E5 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 403 E3:09EC 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 404 E3:09F3 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 405 E3:09FA 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 406 E3:0A01 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 407 E3:0A08 29 ED 42 8F add hl,hl \ sbc hl,bc \ adc a,a + 408 E3:0A0C 2F - - - cpl + 409 E3:0A0D 87 - - - add a, a + 410 E3:0A0E 2E 79 - - ld l, VX_SCREEN_HEIGHT/2+1 ;precision stuffs + 411 E3:0A10 67 - - - ld h, a + 412 E3:0A11 ED 6C - - mlt hl + 413 E3:0A13 7C - - - ld a, h + 414 E3:0A14 30 01 - - jr nc, $+3 + 415 E3:0A16 2F - - - cpl + 416 E3:0A17 CE 78 - - adc a, VX_SCREEN_HCENTER + 417 E3:0A19 FD 77 01 - ld (iy+VX_VERTEX_SY), a + 418 E3:0A1C EB - - - ex de, hl + 419 E3:0A1D AF - - - xor a, a + 420 E3:0A1E 29 - - - add hl, hl + 421 E3:0A1F 30 07 - - jr nc, $+9 + 422 E3:0A21 17 - - - rla + 423 E3:0A22 EB - - - ex de, hl + 424 E3:0A23 ED 62 - - sbc hl, hl + 425 E3:0A25 ED 52 - - sbc hl, de + 426 E3:0A27 B7 - - - or a, a + 427 E3:0A28 ED 42 - - sbc hl, bc + 428 E3:0A2A FA 36 0A E3 jp m, vxNext0 + 429 E3:0A2E B7 - - - or a, a + 430 E3:0A2F - - - - ; potential clipping issue + 431 E3:0A2F ED 42 - - sbc hl, bc + 432 E3:0A31 F2 9C 0A E3 jp p, vxPerspectiveClip2 + 433 E3:0A35 B7 - - - or a, a + 434 E3:0A36 - - - - vxNext0: + 435 E3:0A36 8F 09 - - adc a,a \ add hl,bc + 436 E3:0A38 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 437 E3:0A3F 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 438 E3:0A46 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 439 E3:0A4D 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 440 E3:0A54 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 441 E3:0A5B 29 ED 42 30 + 01 09 8F - add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 442 E3:0A62 29 ED 42 8F add hl,hl \ sbc hl,bc \ adc a,a + 443 E3:0A66 2F - - - cpl + 444 E3:0A67 5F - - - ld e, a + 445 E3:0A68 16 A1 - - ld d, VX_SCREEN_WIDTH/2+1 + 446 E3:0A6A ED 5C - - mlt de + 447 E3:0A6C 7A - - - ld a, d + 448 E3:0A6D ED 62 - - sbc hl, hl + 449 E3:0A6F 30 01 - - jr nc, $+3 + 450 E3:0A71 2F - - - cpl + 451 E3:0A72 6F - - - ld l, a + 452 E3:0A73 11 A0 00 00 ld de, VX_SCREEN_WCENTER + 453 E3:0A77 ED 5A - - adc hl, de + 454 E3:0A79 FD 2F 02 - ld (iy+VX_VERTEX_SX), hl + 455 E3:0A7C AF - - - xor a, a + 456 E3:0A7D FD 77 00 - ld (iy+VX_VERTEX_CODE), a + 457 E3:0A80 ED 13 10 - lea de, iy+VX_SHADER_VERTEX_SIZE + 458 E3:0A83 FD E1 - - pop iy + 459 E3:0A85 C9 - - - ret + 460 E3:0A86 - - - - + 461 E3:0A86 - - - - vxPerspectiveClip0: + 462 E3:0A86 FD 27 0A - ld hl, (iy+VX_VERTEX_RY) + 463 E3:0A89 AF - - - xor a, a + 464 E3:0A8A ED 42 - - sbc hl, bc + 465 E3:0A8C FA 92 0A E3 jp m, vxPerspectiveClip1 + 466 E3:0A90 F6 20 - - or %00100000 + 467 E3:0A92 - - - - vxPerspectiveClip1: + 468 E3:0A92 09 - - - add hl, bc + 469 E3:0A93 B7 - - - or a, a + 470 E3:0A94 ED 4A - - adc hl, bc + 471 E3:0A96 F2 9C 0A E3 jp p, vxPerspectiveClip2 + 472 E3:0A9A F6 10 - - or %00010000 + 473 E3:0A9C - - - - vxPerspectiveClip2: + 474 E3:0A9C - - - - ; y cliping was handled + 475 E3:0A9C FD 27 07 - ld hl, (iy+VX_VERTEX_RX) + 476 E3:0A9F B7 - - - or a, a + 477 E3:0AA0 ED 42 - - sbc hl, bc + 478 E3:0AA2 FA A8 0A E3 jp m, vxPerspectiveClip3 + 479 E3:0AA6 F6 80 - - or a, %10000000 + 480 E3:0AA8 - - - - vxPerspectiveClip3: + 481 E3:0AA8 09 - - - add hl, bc + 482 E3:0AA9 B7 - - - or a, a + 483 E3:0AAA ED 4A - - adc hl, bc + 484 E3:0AAC F2 B2 0A E3 jp p, vxPerspectiveClip4 + 485 E3:0AB0 F6 40 - - or a, %01000000 + 486 E3:0AB2 - - - - vxPerspectiveClip4: + 487 E3:0AB2 - - - - ; x clipping handled + 488 E3:0AB2 FD CB 0F 7E bit 7,(iy+VX_VERTEX_RZ+2) + 489 E3:0AB6 28 02 - - jr z, $+4 + 490 E3:0AB8 F6 08 - - or %00001000 + 491 E3:0ABA FD 77 00 - ld (iy+VX_VERTEX_CODE), a + 492 E3:0ABD ED 13 10 - lea de, iy+VX_SHADER_VERTEX_SIZE + 493 E3:0AC0 FD E1 - - pop iy + 494 E3:0AC2 C9 - - - ret + 495 E3:0AC3 - - - - + 496 E3:0AC3 - - - - .endrelocate +Listing for file "include\\relocate.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxVertexShader.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" + 3 D1:BCCE - - - - #include "vxGeometryShader.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxGeometryShader.inc" + 1 D1:BCCE - - - - #define VX_INDEX0 0 + 2 D1:BCCE - - - - #define VX_INDEX1 3 + 3 D1:BCCE - - - - #define VX_INDEX2 6 + 4 D1:BCCE - - - - + 5 D1:BCCE - - - - #define VX_GEOMETRY_DEPTH 0 + 6 D1:BCCE - - - - #define VX_GEOMETRY_INDEX 3 + 7 D1:BCCE - - - - #define VX_GEOMETRY_ID 6 + 8 D1:BCCE - - - - + 9 D1:BCCE - - - - #define VX_GEOMETRY_SHADER_DATA $E30800 + 10 D1:BCCE - - - - #define VX_GEOMETRY_SHADER_CODE $E30800 + 11 D1:BCCE - - - - + 12 D1:BCCE - - - - vxGeometryShader: + 13 D1:BCCE C5 - - - push bc + 14 D1:BCCF - - - - vxBufferOffset=$+1 + 15 D1:BCCF 11 00 00 00 ld de, $000000 + 16 D1:BCD3 - - - - + 17 D1:BCD3 FD 27 06 - ld hl, (iy+VX_INDEX2) + 18 D1:BCD6 19 - - - add hl, de + 19 D1:BCD7 E5 - - - push hl + 20 D1:BCD8 FD 27 03 - ld hl, (iy+VX_INDEX1) + 21 D1:BCDB 19 - - - add hl, de + 22 D1:BCDC EB - - - ex de, hl + 23 D1:BCDD FD 07 00 - ld bc, (iy+VX_INDEX0) + 24 D1:BCE0 09 - - - add hl, bc + 25 D1:BCE1 C1 - - - pop bc + 26 D1:BCE2 - - - - + 27 D1:BCE2 0A - - - ld a, (bc) + 28 D1:BCE3 A6 - - - and (hl) + 29 D1:BCE4 EB - - - ex de, hl + 30 D1:BCE5 A6 - - - and (hl) + 31 D1:BCE6 20 45 - - jr nz, vxGeometryDiscard + 32 D1:BCE8 0A - - - ld a, (bc) + 33 D1:BCE9 B6 - - - or (hl) + 34 D1:BCEA EB - - - ex de, hl + 35 D1:BCEB B6 - - - or (hl) + 36 D1:BCEC 20 06 - - jr nz, vxGeometryPass + 37 D1:BCEE CD 37 BD D1 call vxNClip + 38 D1:BCF2 38 39 - - jr c, vxGeometryDiscard + 39 D1:BCF4 - - - - vxGeometryPass: + 40 D1:BCF4 - - - - ; compute depth and submit polygon to list (ix) + 41 D1:BCF4 - - - - vxBufferOffsetAddRZ: + 42 D1:BCF4 01 00 00 00 ld bc, $000000 + 43 D1:BCF8 - - - - ; index 0 - rz + 44 D1:BCF8 FD 27 00 - ld hl, (iy+VX_INDEX0) + 45 D1:BCFB 09 - - - add hl, bc + 46 D1:BCFC ED 17 - - ld de, (hl) + 47 D1:BCFE - - - - ; index 1 - rz + 48 D1:BCFE FD 27 03 - ld hl, (iy+VX_INDEX1) + 49 D1:BD01 09 - - - add hl, bc + 50 D1:BD02 ED 27 - - ld hl, (hl) + 51 D1:BD04 19 - - - add hl, de + 52 D1:BD05 EB - - - ex de, hl + 53 D1:BD06 - - - - ; index 2 - re + 54 D1:BD06 FD 27 06 - ld hl, (iy+VX_INDEX2) + 55 D1:BD09 09 - - - add hl, bc + 56 D1:BD0A ED 27 - - ld hl, (hl) + 57 D1:BD0C ED 5A - - adc hl, de + 58 D1:BD0E - - - - ; no div - way too slow ! + 59 D1:BD0E F2 15 BD D1 jp p, vxGeometryDepthClamp + 60 D1:BD12 B7 - - - or a, a + 61 D1:BD13 ED 62 - - sbc hl, hl + 62 D1:BD15 - - - - vxGeometryDepthClamp: + 63 D1:BD15 - - - - ; write everything to tmp buffer + 64 D1:BD15 DD 2F 00 - ld (ix+VX_GEOMETRY_DEPTH), hl + 65 D1:BD18 - - - - ; fill depth bucket + 66 D1:BD18 EB - - - ex de, hl + 67 D1:BD19 21 07 32 D0 ld hl, VX_DEPTH_BUCKET+7 + 68 D1:BD1D 7D - - - ld a, l + 69 D1:BD1E 6B - - - ld l, e + 70 D1:BD1F 86 - - - add a, (hl) + 71 D1:BD20 77 - - - ld (hl), a + 72 D1:BD21 30 02 - - jr nc, vxGeometryBucket + 73 D1:BD23 24 - - - inc h + 74 D1:BD24 34 - - - inc (hl) + 75 D1:BD25 - - - - vxGeometryBucket: + 76 D1:BD25 DD 3E 03 - ld (ix+VX_GEOMETRY_INDEX), iy + 77 D1:BD28 - - - - vxBatchOffset=$+1 + 78 D1:BD28 3E 00 - - ld a, $00 + 79 D1:BD2A DD 77 06 - ld (ix+VX_GEOMETRY_ID), a + 80 D1:BD2D - - - - vxGeometryDiscard: + 81 D1:BD2D - - - - vxFormatOffset=$+2 + 82 D1:BD2D ED 33 10 - lea iy, iy+16 + 83 D1:BD30 C1 - - - pop bc + 84 D1:BD31 10 9B - - djnz vxGeometryShader + 85 D1:BD33 0D - - - dec c + 86 D1:BD34 20 98 - - jr nz, vxGeometryShader + 87 D1:BD36 C9 - - - ret + 88 D1:BD37 - - - - + 89 D1:BD37 - - - - + 90 D1:BD37 - - - - vxNClip: + 91 D1:BD37 - - - - ; vec e0 = v1 - v0; + 92 D1:BD37 - - - - ; vec e1 = v2 - v0; + 93 D1:BD37 - - - - ; return e0.x * e1.y - e0.y * e1.x > 0 ? 1 : 0; + 94 D1:BD37 - - - - ; + 95 D1:BD37 - - - - ; (x1-x0)*(y2-y1) - (y1-y0)*(x2-x1) + 96 D1:BD37 - - - - ; + 97 D1:BD37 - - - - ; we'll compute (y1-y0)*(x2-x1)+(y2-y1)*(x0-x1) + 98 D1:BD37 23 03 13 - inc hl \ inc bc \ inc de + 99 D1:BD3A - - - - + 100 D1:BD3A E5 - - - push hl + 101 D1:BD3B C5 - - - push bc + 102 D1:BD3C - - - - + 103 D1:BD3C 0A - - - ld a, (bc) + 104 D1:BD3D 23 - - - inc hl + 105 D1:BD3E ED 27 - - ld hl, (hl) + 106 D1:BD40 EB - - - ex de, hl + 107 D1:BD41 23 - - - inc hl + 108 D1:BD42 ED 07 - - ld bc, (hl) + 109 D1:BD44 EB - - - ex de, hl + 110 D1:BD45 - - - - ; hl-bc is x0-x1 + 111 D1:BD45 B7 - - - or a, a + 112 D1:BD46 ED 42 - - sbc hl, bc + 113 D1:BD48 CB 2C CB 1D sra h \ rr l + 114 D1:BD4C 4C - - - ld c, h + 115 D1:BD4D EB - - - ex de, hl + 116 D1:BD4E 2B - - - dec hl + 117 D1:BD4F 96 - - - sub a, (hl) + 118 D1:BD50 57 - - - ld d, a + 119 D1:BD51 3E 00 - - ld a, 0 + 120 D1:BD53 30 01 93 - jr nc, $+3 \ sub a, e + 121 D1:BD56 CB 79 28 01 + 92 - - - bit 7, c \ jr z, $+3 \ sub a, d + 122 D1:BD5B ED 5C - - mlt de + 123 D1:BD5D 82 - - - add a, d + 124 D1:BD5E 57 - - - ld d, a + 125 D1:BD5F - - - - ; bc and hl need a restore + 126 D1:BD5F - - - - ; (y1-y0)*(x2-x1) + 127 D1:BD5F - - - - ; a - (hl)*hl-bc + 128 D1:BD5F 7E - - - ld a, (hl) + 129 D1:BD60 23 - - - inc hl + 130 D1:BD61 - - - - ; ld bc, (hl) + 131 D1:BD61 4E - - - ld c, (hl) ; b still hold correct value + 132 D1:BD62 E1 - - - pop hl ; pop bc + 133 D1:BD63 23 - - - inc hl + 134 D1:BD64 ED 27 - - ld hl, (hl) + 135 D1:BD66 B7 - - - or a, a + 136 D1:BD67 ED 42 - - sbc hl, bc + 137 D1:BD69 CB 2C CB 1D sra h \ rr l + 138 D1:BD6D 4C - - - ld c, h + 139 D1:BD6E EB - - - ex de, hl + 140 D1:BD6F E3 - - - ex (sp), hl ; save previous de + 141 D1:BD70 96 - - - sub a, (hl) + 142 D1:BD71 57 - - - ld d, a + 143 D1:BD72 3E 00 - - ld a, 0 + 144 D1:BD74 30 01 93 - jr nc, $+3 \ sub a, e + 145 D1:BD77 CB 79 28 01 + 92 - - - bit 7, c \ jr z, $+3 \ sub a, d + 146 D1:BD7C ED 5C - - mlt de + 147 D1:BD7E 82 - - - add a, d + 148 D1:BD7F 57 - - - ld d, a + 149 D1:BD80 - - - - ; do de + temp_value + 150 D1:BD80 E1 - - - pop hl + 151 D1:BD81 19 - - - add hl, de + 152 D1:BD82 2B - - - dec hl + 153 D1:BD83 CB 14 - - rl h + 154 D1:BD85 C9 - - - ret + 155 D1:BD86 - - - - + 156 D1:BD86 - - - - + 157 D1:BD86 - - - - + 158 D1:BD86 - - - - #comment + 159 D1:BD86 ld ix, (iy+VX_INDEX0) + 160 D1:BD86 add ix, bc + 161 D1:BD86 ld hl, (ix+VX_VERTEX_RZ) + 162 D1:BD86 ld ix, (iy+VX_INDEX1) + 163 D1:BD86 add ix, bc + 164 D1:BD86 ld de, (ix+VX_VERTEX_RZ) + 165 D1:BD86 add hl, de + 166 D1:BD86 ld ix, (iy+VX_INDEX2) + 167 D1:BD86 add ix, bc ; shouldn't carry + 168 D1:BD86 ld de, (ix+VX_VERTEX_RZ) + 169 D1:BD86 adc hl, de + 170 D1:BD86 jp p, vxAvgDepthPositive + 171 D1:BD86 or a, a + 172 D1:BD86 sbc hl, hl + 173 D1:BD86 vxAvgDepthPositive: + 174 D1:BD86 + 175 D1:BD86 #endcomment +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" + 4 D1:BD86 - - - - + 5 D1:BD86 - - - - + 6 D1:BD86 - - - - #define VX_GEOMETRY_N3TI9 %00010011 ; 19 + 7 D1:BD86 - - - - #define VX_GEOMETRY_TI9 %00010000 ; 16 + 8 D1:BD86 - - - - #define VX_GEOMETRY_N3CI9 %00001101 ; 13 ; in theory not needed anymore + 9 D1:BD86 - - - - #define VX_GEOMETRY_CI9 %00001010 ; 10 + 10 D1:BD86 - - - - + 11 D1:BD86 - - - - #define VX_GEOMETRY_COLOR %00001010 + 12 D1:BD86 - - - - #define VX_GEOMETRY_TEXTURE %00010000 + 13 D1:BD86 - - - - + 14 D1:BD86 - - - - #define VX_ANIMATION_MATRIX_SIZE 15 + 15 D1:BD86 - - - - #define VX_ANIMATION_BONE 32768 + 16 D1:BD86 - - - - + 17 D1:BD86 - - - - #define VX_GEOMETRY_QUEUE $D10000 ; 4*4096 (16K) + 18 D1:BD86 - - - - #define VX_VERTEX_BUFFER $D08000 ; 16*2048 (32K) + 19 D1:BD86 - - - - #define VX_MAX_TRIANGLE 4096 + 20 D1:BD86 - - - - #define VX_MAX_VERTEX 2048 + 21 D1:BD86 - - - - #define VX_MAX_BATCH 64 + 22 D1:BD86 - - - - + 23 D1:BD86 - - - - #define VX_VERTEX_BOX 8 + 24 D1:BD86 - - - - + 25 D1:BD86 - - - - #define vxPosition $D03406 + 26 D1:BD86 - - - - #define VX_DEPTH_BUCKET $D03200 + 27 D1:BD86 - - - - #define vxDepthSortTemp $E30014 + 28 D1:BD86 - - - - + 29 D1:BD86 - - - - ; TODO : create geometry shader in submission + 30 D1:BD86 - - - - ; Better vertex shader with decoupled projection + 31 D1:BD86 - - - - ; Put all the code in fast ram, use sha256 + 32 D1:BD86 - - - - + 33 D1:BD86 - - - - vxSubmissionQueue: + 34 D1:BD86 00 00 00 - .dl 0 + 35 D1:BD89 - - - - vxGeometrySize: + 36 D1:BD89 00 00 00 - .dl 0 + 37 D1:BD8C - - - - vxBatchData: + 38 D1:BD8C 00 00 00 - .dl 0 + 39 D1:BD8F - - - - vxVertexCacheFill: + 40 D1:BD8F 00 00 00 - .dl 0 + 41 D1:BD92 - - - - vxModelViewCache: + 42 D1:BD92 00 00 00 - .db 0,0,0 + 43 D1:BD95 00 00 00 - .db 0,0,0 + 44 D1:BD98 00 00 00 - .db 0,0,0 + 45 D1:BD9B 00 00 00 00 + 00 00 00 00 + 00 - - - .dl 0,0,0 + 46 D1:BDA4 - - - - vxModelWorld: + 47 D1:BDA4 00 00 00 - .db 0,0,0 + 48 D1:BDA7 00 00 00 - .db 0,0,0 + 49 D1:BDAA 00 00 00 - .db 0,0,0 + 50 D1:BDAD 00 00 00 00 + 00 00 00 00 + 00 - - - .dl 0,0,0 + 51 D1:BDB6 - - - - vxTModelWorld: + 52 D1:BDB6 00 00 00 - .db 0,0,0 + 53 D1:BDB9 00 00 00 - .db 0,0,0 + 54 D1:BDBC 00 00 00 - .db 0,0,0 + 55 D1:BDBF 00 00 00 00 + 00 00 00 00 + 00 - - - .dl 0,0,0 + 56 D1:BDC8 - - - - vxLight0Cache: + 57 D1:BDC8 00 00 00 - .db 0,0,0 + 58 D1:BDCB 00 - - - .db 0 + 59 D1:BDCC 00 00 00 00 + 00 00 - - .dw 0,0,0 + 60 D1:BDD2 - - - - vxKeyAnimation: + 61 D1:BDD2 00 - - - .db 0 + 62 D1:BDD3 - - - - + 63 D1:BDD3 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 - - - .align 256 +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" + 64 D1:BE00 - - - - VX_BATCH_DATA: + 65 D1:BE00 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 .fill 256 + 66 D1:BF00 - - - - + 67 D1:BF00 - - - - vxCmdExecute: + 68 D1:BF00 FD 21 00 00 + D1 - - - ld iy, VX_GEOMETRY_QUEUE + 69 D1:BF05 FD 22 86 BD + D1 - - - ld (vxSubmissionQueue), iy + 70 D1:BF0A 21 00 BE D1 ld hl, VX_BATCH_DATA + 71 D1:BF0E 22 8C BD D1 ld (vxBatchData), hl + 72 D1:BF12 - - - - ; various reset blahblah + 73 D1:BF12 - - - - + 74 D1:BF12 21 1F D4 D1 ld hl, VX_SHADER_INTERPOLATION_COPY + 75 D1:BF16 11 00 08 E3 ld de, VX_SHADER_INTERPOLATION_CODE + 76 D1:BF1A 01 00 04 00 ld bc, 1024 + 77 D1:BF1E ED B0 - - ldir + 78 D1:BF20 21 7F D7 D1 ld hl, VX_PIXEL_SHADER_COPY + 79 D1:BF24 11 10 00 E1 ld de, VX_PIXEL_SHADER_CODE + 80 D1:BF28 01 40 00 00 ld bc, 64 + 81 D1:BF2C ED B0 - - ldir + 82 D1:BF2E - - - - + 83 D1:BF2E ED 4B 89 BD + D1 - - - ld bc, (vxGeometrySize) + 84 D1:BF33 21 00 00 00 ld hl, 0 + 85 D1:BF37 22 89 BD D1 ld (vxGeometrySize), hl + 86 D1:BF3B 78 - - - ld a, b + 87 D1:BF3C B1 - - - or c + 88 D1:BF3D - - - - ; jp z, vxResetCache + 89 D1:BF3D C8 - - - ret z + 90 D1:BF3E 79 - - - ld a, c + 91 D1:BF3F 0B - - - dec bc + 92 D1:BF40 04 - - - inc b + 93 D1:BF41 48 - - - ld c, b + 94 D1:BF42 47 - - - ld b, a + 95 D1:BF43 - - - - vxCmdExeLoop: + 96 D1:BF43 C5 - - - push bc + 97 D1:BF44 - - - - + 98 D1:BF44 21 00 BE D1 ld hl, VX_BATCH_DATA + 99 D1:BF48 FD 6E 00 - ld l, (iy+0) + 100 D1:BF4B 7E - - - ld a, (hl) ; format + 101 D1:BF4C 23 - - - inc hl + 102 D1:BF4D ED 07 - - ld bc, (hl) ; subcache + 103 D1:BF4F ED 66 04 - pea iy+4 + 104 D1:BF52 FD 37 01 - ld iy, (iy+1) ; read triangle data + 105 D1:BF55 - - - - ; switch(format) + 106 D1:BF55 FE 10 - - cp VX_GEOMETRY_TI9 + 107 D1:BF57 30 3F - - jr nc, vxCmdFormatTex + 108 D1:BF59 - - - - vxCmdFormatCol: + 109 D1:BF59 FD 31 00 - ld ix, (iy+0) + 110 D1:BF5C DD 09 - - add ix, bc + 111 D1:BF5E DD 7E 06 - ld a, (ix+VX_VERTEX_UNIFORM) + 112 D1:BF61 ED 22 00 - lea hl, ix+0 + 113 D1:BF64 FD 31 03 - ld ix, (iy+3) + 114 D1:BF67 DD 09 - - add ix, bc + 115 D1:BF69 DD 86 06 - add a, (ix+VX_VERTEX_UNIFORM) + 116 D1:BF6C ED 12 00 - lea de, ix+0 + 117 D1:BF6F FD 31 06 - ld ix, (iy+6) + 118 D1:BF72 DD 09 - - add ix, bc + 119 D1:BF74 DD 86 06 - add a, (ix+VX_VERTEX_UNIFORM) + 120 D1:BF77 47 - - - ld b, a + 121 D1:BF78 0E 53 - - ld c, 83 + 122 D1:BF7A ED 4C - - mlt bc + 123 D1:BF7C 78 - - - ld a, b + 124 D1:BF7D 01 00 00 D0 ld bc, $D00000 + 125 D1:BF81 FD 4E 09 - ld c, (iy+9) + 126 D1:BF84 47 - - - ld b, a + 127 D1:BF85 0A - - - ld a, (bc) + 128 D1:BF86 ED 02 00 - lea bc, ix+0 + 129 D1:BF89 CD 79 AA D1 call vxFlatTriangle + 130 D1:BF8D FD E1 - - pop iy + 131 D1:BF8F C1 - - - pop bc + 132 D1:BF90 10 B1 - - djnz vxCmdExeLoop + 133 D1:BF92 0D - - - dec c + 134 D1:BF93 C2 43 BF D1 jp nz, vxCmdExeLoop + 135 D1:BF97 C9 - - - ret + 136 D1:BF98 - - - - vxCmdFormatTex: + 137 D1:BF98 - - - - + 138 D1:BF98 - - - - ;; push bc + 139 D1:BF98 - - - - ;;; ;ld ix, vxWorldView+6 + 140 D1:BF98 - - - - ;; ld ix, LIGHT + 141 D1:BF98 - - - - + 142 D1:BF98 - - - - #comment + 143 D1:BF98 call vxDotProduct + 144 D1:BF98 or a, a + 145 D1:BF98 ex de, hl + 146 D1:BF98 sbc hl, hl + 147 D1:BF98 sbc hl, de + 148 D1:BF98 bit 7, h + 149 D1:BF98 jr z, _InRange + 150 D1:BF98 ld hl, 0 + 151 D1:BF98 _InRange: + 152 D1:BF98 add hl, hl + 153 D1:BF98 ld a, 12 + 154 D1:BF98 add a, h + 155 D1:BF98 cp 32 + 156 D1:BF98 jr c, $+4 + 157 D1:BF98 ld a, 31 + 158 D1:BF98 ld (INCREMENT), a + 159 D1:BF98 #endcomment + 160 D1:BF98 - - - - #comment + 161 D1:BF98 xor a, a + 162 D1:BF98 ld c, (iy+16) + 163 D1:BF98 ld b, (ix+0) + 164 D1:BF98 bit 7, c \ jr z, $+3 \ sub a,b + 165 D1:BF98 bit 7, b \ jr z, $+3 \ sub a,c + 166 D1:BF98 mlt bc + 167 D1:BF98 add a, b + 168 D1:BF98 ld c, (iy+17) + 169 D1:BF98 ld b, (ix+1) + 170 D1:BF98 bit 7, c \ jr z, $+3 \ sub a,b + 171 D1:BF98 bit 7, b \ jr z, $+3 \ sub a,c + 172 D1:BF98 mlt bc + 173 D1:BF98 add a, b + 174 D1:BF98 ld c, (iy+18) + 175 D1:BF98 ld b, (ix+2) + 176 D1:BF98 bit 7, c \ jr z, $+3 \ sub a,b + 177 D1:BF98 bit 7, b \ jr z, $+3 \ sub a,c + 178 D1:BF98 mlt bc + 179 D1:BF98 add a, b + 180 D1:BF98 ; max(a,0) + 181 D1:BF98 jp p, $+4+1 + 182 D1:BF98 xor a, a + 183 D1:BF98 ; lightning model is here, infinite directionnal light, no pow=1 + 184 D1:BF98 ; ambiant lightning=12 + 185 D1:BF98 ;; add a, 8 + 186 D1:BF98 add a, 12 + 187 D1:BF98 ; min(a,31) + 188 D1:BF98 cp 32 + 189 D1:BF98 jr c, $+4 + 190 D1:BF98 ld a, 31 + 191 D1:BF98 ld (INCREMENT), a + 192 D1:BF98 pop bc + 193 D1:BF98 + 194 D1:BF98 ld de, (iy+12) + 195 D1:BF98 ld ix, (iy+3) + 196 D1:BF98 add ix, bc + 197 D1:BF98 ld (ix+5), e + 198 D1:BF98 ld (ix+6), d + 199 D1:BF98 lea de, ix+0 + 200 D1:BF98 + 201 D1:BF98 ld hl, (iy+10) + 202 D1:BF98 ld ix, (iy+0) + 203 D1:BF98 add ix, bc + 204 D1:BF98 ld (ix+5), l + 205 D1:BF98 ld (ix+6), h + 206 D1:BF98 ;; lea hl, ix+0 + 207 D1:BF98 + 208 D1:BF98 ld hl, (iy+14) + 209 D1:BF98 ld iy, (iy+6) + 210 D1:BF98 add iy, bc + 211 D1:BF98 ld (iy+5), l + 212 D1:BF98 ld (iy+6), h + 213 D1:BF98 lea bc, iy+0 + 214 D1:BF98 + 215 D1:BF98 lea hl, ix+0 + 216 D1:BF98 + 217 D1:BF98 ld ix, (iy+3) + 218 D1:BF98 add ix, bc + 219 D1:BF98 ld a, (ix+5) + 220 D1:BF98 lea de, ix+0 + 221 D1:BF98 + 222 D1:BF98 ld ix, (iy+0) + 223 D1:BF98 add ix, bc + 224 D1:BF98 add a, (ix+5) + 225 D1:BF98 lea hl, ix+0 + 226 D1:BF98 + 227 D1:BF98 ld ix, (iy+6) + 228 D1:BF98 add ix, bc + 229 D1:BF98 add a, (ix+5) + 230 D1:BF98 lea bc, ix+0 + 231 D1:BF98 + 232 D1:BF98 lea ix, iy+10 + 233 D1:BF98 #endcomment + 234 D1:BF98 - - - - + 235 D1:BF98 FD 31 00 - ld ix, (iy+0) + 236 D1:BF9B DD 09 - - add ix, bc + 237 D1:BF9D FD 27 0A - ld hl, (iy+10) + 238 D1:BFA0 DD 75 04 - ld (ix+VX_VERTEX_GPR0), l + 239 D1:BFA3 DD 74 05 - ld (ix+VX_VERTEX_GPR1), h + 240 D1:BFA6 DD 7E 06 - ld a, (ix+VX_VERTEX_UNIFORM) + 241 D1:BFA9 ED 22 00 - lea hl, ix+0 + 242 D1:BFAC - - - - + 243 D1:BFAC FD 31 03 - ld ix, (iy+3) + 244 D1:BFAF DD 09 - - add ix, bc + 245 D1:BFB1 FD 17 0C - ld de, (iy+12) + 246 D1:BFB4 DD 73 04 - ld (ix+VX_VERTEX_GPR0), e + 247 D1:BFB7 DD 72 05 - ld (ix+VX_VERTEX_GPR1), d + 248 D1:BFBA DD 86 06 - add a, (ix+VX_VERTEX_UNIFORM) + 249 D1:BFBD ED 12 00 - lea de, ix+0 + 250 D1:BFC0 - - - - + 251 D1:BFC0 FD 31 06 - ld ix, (iy+6) + 252 D1:BFC3 DD 09 - - add ix, bc + 253 D1:BFC5 FD 07 0E - ld bc, (iy+14) + 254 D1:BFC8 DD 71 04 - ld (ix+VX_VERTEX_GPR0), c + 255 D1:BFCB DD 70 05 - ld (ix+VX_VERTEX_GPR1), b + 256 D1:BFCE DD 86 06 - add a, (ix+VX_VERTEX_UNIFORM) + 257 D1:BFD1 - - - - ; compute uniform value + 258 D1:BFD1 47 - - - ld b, a + 259 D1:BFD2 0E 53 - - ld c, 83 + 260 D1:BFD4 ED 4C - - mlt bc + 261 D1:BFD6 78 - - - ld a, b + 262 D1:BFD7 32 4D 0B E3 ld (vxShaderUniform0+1), a + 263 D1:BFDB ED 02 00 - lea bc, ix+0 + 264 D1:BFDE - - - - + 265 D1:BFDE CD 00 08 E3 call vxTextureTriangle + 266 D1:BFE2 FD E1 - - pop iy + 267 D1:BFE4 C1 - - - pop bc + 268 D1:BFE5 05 - - - dec b + 269 D1:BFE6 C2 43 BF D1 jp nz, vxCmdExeLoop + 270 D1:BFEA 0D - - - dec c + 271 D1:BFEB C2 43 BF D1 jp nz, vxCmdExeLoop + 272 D1:BFEF C9 - - - ret + 273 D1:BFF0 - - - - ;; jp vxResetCache + 274 D1:BFF0 - - - - + 275 D1:BFF0 - - - - vxCmdDraw: + 276 D1:BFF0 - - - - ; hl - vertex source bc - cache area : de - triangle source : ix - matrix world matrix followed with iy model matrix + 277 D1:BFF0 - - - - ; format : a + 278 D1:BFF0 - - - - ; now write batch id, batch data (format, cache) + 279 D1:BFF0 E5 - - - push hl + 280 D1:BFF1 2A 8C BD D1 ld hl, (vxBatchData) + 281 D1:BFF5 77 - - - ld (hl), a ; format + 282 D1:BFF6 32 54 C0 D1 ld (vxFormatOffset0), a + 283 D1:BFFA 7D - - - ld a, l + 284 D1:BFFB 23 - - - inc hl + 285 D1:BFFC ED 0F - - ld (hl), bc + 286 D1:BFFE 23 23 23 - inc hl \ inc hl \ inc hl + 287 D1:C001 22 8C BD D1 ld (vxBatchData), hl + 288 D1:C005 32 48 C0 D1 ld (vxBatchOffset0), a + 289 D1:C009 E1 - - - pop hl + 290 D1:C00A - - - - + 291 D1:C00A C5 - - - push bc + 292 D1:C00B D5 - - - push de + 293 D1:C00C CD 7E C0 D1 call vxCmdStream ; stream vertex data to cache + 294 D1:C010 FD E1 - - pop iy ; polygon list + 295 D1:C012 D1 - - - pop de + 296 D1:C013 D8 - - - ret c + 297 D1:C014 FD 07 01 - ld bc, (iy+1) + 298 D1:C017 79 - - - ld a, c + 299 D1:C018 0B - - - dec bc + 300 D1:C019 04 - - - inc b + 301 D1:C01A 48 - - - ld c, b + 302 D1:C01B 47 - - - ld b, a + 303 D1:C01C ED 33 03 - lea iy, iy+3 + 304 D1:C01F DD 2A 86 BD + D1 - - - ld ix, (vxSubmissionQueue) + 305 D1:C024 - - - - + 306 D1:C024 - - - - #comment + 307 D1:C024 vxSubmission0: + 308 D1:C024 ld hl, (iy+0) + 309 D1:C024 add hl, de + 310 D1:C024 ld a, (hl) + 311 D1:C024 ld hl, (iy+3) + 312 D1:C024 add hl, de + 313 D1:C024 and (hl) + 314 D1:C024 ld hl, (iy+6) + 315 D1:C024 add hl, de + 316 D1:C024 and (hl) + 317 D1:C024 jr nz, vxDiscard1 + 318 D1:C024 + 319 D1:C024 ld hl, (iy+0) + 320 D1:C024 add hl, de + 321 D1:C024 ld a, (hl) + 322 D1:C024 ld hl, (iy+3) + 323 D1:C024 add hl, de + 324 D1:C024 or (hl) + 325 D1:C024 ld hl, (iy+6) + 326 D1:C024 add hl, de + 327 D1:C024 or (hl) + 328 D1:C024 jr nz, +_ + 329 D1:C024 ; try for bfc + 330 D1:C024 push bc + 331 D1:C024 + 332 D1:C024 call vxCmdBFC + 333 D1:C024 + 334 D1:C024 pop bc + 335 D1:C024 jp p, vxDiscard1 + 336 D1:C024 _: + 337 D1:C024 ; compute depth and submit polygon to list (ix) + 338 D1:C024 vxBatchOffset0=$+1 + 339 D1:C024 ld a, $00 + 340 D1:C024 ld (ix+0), a + 341 D1:C024 ld (ix+1), iy + 342 D1:C024 lea ix, ix+4 + 343 D1:C024 vxDiscard1: + 344 D1:C024 vxFormatOffset0=$+2 + 345 D1:C024 lea iy, iy+16 + 346 D1:C024 djnz vxSubmission0 + 347 D1:C024 dec c + 348 D1:C024 jr nz, vxSubmission0 + 349 D1:C024 #endcomment + 350 D1:C024 - - - - + 351 D1:C024 - - - - vxSubmission0: + 352 D1:C024 D5 - - - push de + 353 D1:C025 C5 - - - push bc + 354 D1:C026 - - - - + 355 D1:C026 FD 27 06 - ld hl, (iy+6) + 356 D1:C029 19 - - - add hl, de + 357 D1:C02A E5 - - - push hl + 358 D1:C02B FD 27 03 - ld hl, (iy+3) + 359 D1:C02E 19 - - - add hl, de + 360 D1:C02F EB - - - ex de, hl + 361 D1:C030 FD 07 00 - ld bc, (iy+0) + 362 D1:C033 09 - - - add hl, bc + 363 D1:C034 C1 - - - pop bc + 364 D1:C035 - - - - ; bc = 2 , de = 1, hl =0 + 365 D1:C035 - - - - + 366 D1:C035 0A - - - ld a, (bc) + 367 D1:C036 A6 - - - and (hl) + 368 D1:C037 EB - - - ex de, hl + 369 D1:C038 A6 - - - and (hl) + 370 D1:C039 20 17 - - jr nz, vxDiscard + 371 D1:C03B 0A - - - ld a, (bc) + 372 D1:C03C B6 - - - or (hl) + 373 D1:C03D EB - - - ex de, hl + 374 D1:C03E B6 - - - or (hl) + 375 D1:C03F 20 06 - - jr nz, vxPass + 376 D1:C041 - - - - ; try for bfc + 377 D1:C041 - - - - ;; call HELLO + 378 D1:C041 CD 37 BD D1 call vxNClip + 379 D1:C045 - - - - ;; jp p, vxDiscard + 380 D1:C045 38 0B - - jr c, vxDiscard + 381 D1:C047 - - - - vxPass: + 382 D1:C047 - - - - ; compute depth and submit polygon to list (ix) + 383 D1:C047 - - - - vxBatchOffset0=$+1 + 384 D1:C047 3E 00 - - ld a, $00 + 385 D1:C049 DD 77 00 - ld (ix+0), a + 386 D1:C04C DD 3E 01 - ld (ix+1), iy + 387 D1:C04F ED 32 04 - lea ix, ix+4 + 388 D1:C052 - - - - vxDiscard: + 389 D1:C052 - - - - vxFormatOffset0=$+2 + 390 D1:C052 ED 33 10 - lea iy, iy+16 + 391 D1:C055 - - - - + 392 D1:C055 C1 - - - pop bc + 393 D1:C056 D1 - - - pop de + 394 D1:C057 10 CB - - djnz vxSubmission0 + 395 D1:C059 0D - - - dec c + 396 D1:C05A 20 C8 - - jr nz, vxSubmission0 + 397 D1:C05C - - - - + 398 D1:C05C - - - - ; need to update count & queue position + 399 D1:C05C - - - - ; simple : new-previous / 4 + 400 D1:C05C ED 5B 86 BD + D1 - - - ld de, (vxSubmissionQueue) + 401 D1:C061 ED 22 00 - lea hl, ix+0 + 402 D1:C064 22 86 BD D1 ld (vxSubmissionQueue), hl + 403 D1:C068 B7 - - - or a, a + 404 D1:C069 ED 52 - - sbc hl, de + 405 D1:C06B CB 2C CB 1D sra h \ rr l + 406 D1:C06F CB 2C CB 1D sra h \ rr l + 407 D1:C073 ED 4B 89 BD + D1 - - - ld bc, (vxGeometrySize) + 408 D1:C078 09 - - - add hl, bc + 409 D1:C079 22 89 BD D1 ld (vxGeometrySize), hl + 410 D1:C07D - - - - + 411 D1:C07D C9 - - - ret + 412 D1:C07E - - - - + 413 D1:C07E - - - - ;vxResetCache: + 414 D1:C07E - - - - ; ld hl, VX_VERTEX_BUFFER + 415 D1:C07E - - - - ; ld de, 16 + 416 D1:C07E - - - - ; ld b, 0 + 417 D1:C07E - - - - ; ld a, $FF + 418 D1:C07E - - - - ;vxResetCacheLoop: + 419 D1:C07E - - - - ; ld (hl), a + 420 D1:C07E - - - - ; add hl, de + 421 D1:C07E - - - - ; ld (hl), a + 422 D1:C07E - - - - ; add hl, de + 423 D1:C07E - - - - ; ld (hl), a + 424 D1:C07E - - - - ; add hl, de + 425 D1:C07E - - - - ; ld (hl), a + 426 D1:C07E - - - - ; add hl, de + 427 D1:C07E - - - - ; ld (hl), a + 428 D1:C07E - - - - ; add hl, de + 429 D1:C07E - - - - ; ld (hl), a + 430 D1:C07E - - - - ; add hl, de + 431 D1:C07E - - - - ; ld (hl), a + 432 D1:C07E - - - - ; add hl, de + 433 D1:C07E - - - - ; ld (hl), a + 434 D1:C07E - - - - ; add hl, de + 435 D1:C07E - - - - ; djnz vxResetCacheLoop + 436 D1:C07E - - - - ; ret + 437 D1:C07E - - - - + 438 D1:C07E - - - - vxCmdStream: + 439 D1:C07E - - - - ; hl - vertex source, bc - vertex cache, ix worldview matrix, iy modelworld matrix (should be an model matrix) + 440 D1:C07E - - - - ; vertex source have size at the begining + 441 D1:C07E - - - - ; support animation + 442 D1:C07E C5 - - - push bc + 443 D1:C07F E5 - - - push hl + 444 D1:C080 - - - - ; load shader first + 445 D1:C080 21 0B BA D1 ld hl, VX_VERTEX_SHADER_COPY + 446 D1:C084 11 00 08 E3 ld de, VX_VRAM + 447 D1:C088 01 00 04 00 ld bc, VX_VERTEX_SHADER_SIZE + 448 D1:C08C ED B0 - - ldir + 449 D1:C08E - - - - ; transform the worldview with the modelworld matrix to have the global modelview matrix + 450 D1:C08E - - - - ; modelviewcache = modelworld * worldview + 451 D1:C08E 21 92 BD D1 ld hl, vxModelViewCache + 452 D1:C092 CD 1E AD D1 call vxMatrixTransform ; (hl) = (iy)*(ix) + 453 D1:C096 - - - - ; modelview=modelviewcache + 454 D1:C096 11 00 08 E3 ld de, vxModelView + 455 D1:C09A 01 12 00 00 ld bc, VX_MATRIX_SIZE + 456 D1:C09E ED B0 - - ldir + 457 D1:C0A0 - - - - ; modelworld=modelworld + 458 D1:C0A0 - - - - ; tmodelworld=transpose(modelworld) + 459 D1:C0A0 ED 23 00 - lea hl, iy+0 + 460 D1:C0A3 11 A4 BD D1 ld de, vxModelWorld + 461 D1:C0A7 01 12 00 00 ld bc, VX_MATRIX_SIZE + 462 D1:C0AB ED B0 - - ldir + 463 D1:C0AD ED 23 00 - lea hl, iy+0 + 464 D1:C0B0 01 12 00 00 ld bc, VX_MATRIX_SIZE + 465 D1:C0B4 ED B0 - - ldir + 466 D1:C0B6 DD 21 B6 BD + D1 - - - ld ix, vxTModelWorld + 467 D1:C0BB CD 41 AD D1 call vxMatrixTranspose + 468 D1:C0BF - - - - ; light0cache=light0 + 469 D1:C0BF - - - - ; light0=light0*transpose(modelworld) + 470 D1:C0BF 21 12 08 E3 ld hl, vxLight0 + 471 D1:C0C3 11 C8 BD D1 ld de, vxLight0Cache + 472 D1:C0C7 01 0A 00 00 ld bc, VX_LIGHT_SIZE + 473 D1:C0CB ED B0 - - ldir + 474 D1:C0CD - - - - ; do light*matrix (hl) = (iy)*(ix) + 475 D1:C0CD 21 12 08 E3 ld hl, vxLight0 + 476 D1:C0D1 FD 21 C8 BD + D1 - - - ld iy, vxLight0Cache + 477 D1:C0D6 CD 66 AD D1 call vxMatrixLightning + 478 D1:C0DA - - - - ; load up shader data + 479 D1:C0DA DD 21 00 08 + E3 - - - ld ix, VX_VERTEX_SHADER_DATA + 480 D1:C0DF FD E1 - - pop iy + 481 D1:C0E1 - - - - ; iy = source, ix = matrix + 482 D1:C0E1 FD 7E 00 - ld a, (iy+0) + 483 D1:C0E4 FD 07 01 - ld bc, (iy+1) + 484 D1:C0E7 ED 33 03 - lea iy, iy+3 + 485 D1:C0EA E6 08 - - and VX_VERTEX_BOX + 486 D1:C0EC C4 61 C1 D1 call nz, vxVertexStreamBox + 487 D1:C0F0 D1 - - - pop de + 488 D1:C0F1 D8 - - - ret c + 489 D1:C0F2 - - - - ; iy+0 are options, so check those. Here, only bounding box is interesting. + 490 D1:C0F2 79 - - - ld a, c + 491 D1:C0F3 0B - - - dec bc + 492 D1:C0F4 04 - - - inc b + 493 D1:C0F5 48 - - - ld c, b + 494 D1:C0F6 47 - - - ld b, a + 495 D1:C0F7 - - - - ; de = cache, iy = source, ix = matrix, bc = size + 496 D1:C0F7 - - - - vxCmdStreamLoop: + 497 D1:C0F7 C5 - - - push bc + 498 D1:C0F8 - - - - ; read first source value, if value=32768, then compute bone + 499 D1:C0F8 FD 07 00 - ld bc, (iy+0) + 500 D1:C0FB 78 - - - ld a, b + 501 D1:C0FC EE 80 - - xor VX_ANIMATION_BONE/256 + 502 D1:C0FE B1 - - - or a, c + 503 D1:C0FF 28 0C - - jr z, vxCmdComputeBone + 504 D1:C101 - - - - ; wasn't a bone in source, so read vertex + 505 D1:C101 - - - - ; call vertex shader + 506 D1:C101 CD 1C 08 E3 call vxVertexShader + 507 D1:C105 - - - - vxCmdStreamLoopBack: + 508 D1:C105 C1 - - - pop bc + 509 D1:C106 10 EF - - djnz vxCmdStreamLoop + 510 D1:C108 0D - - - dec c + 511 D1:C109 20 EC - - jr nz, vxCmdStreamLoop + 512 D1:C10B B7 - - - or a, a + 513 D1:C10C C9 - - - ret + 514 D1:C10D - - - - vxCmdComputeBone: + 515 D1:C10D - - - - ; more complex stuff here. Need to restore initial matrix & do a multiplication with the correct bone key matrix + 516 D1:C10D - - - - ; once done, only advance in the source, not the cache + 517 D1:C10D D5 - - - push de + 518 D1:C10E ED 33 03 - lea iy, iy+3 + 519 D1:C111 FD E5 - - push iy + 520 D1:C113 3A D2 BD D1 ld a, (vxKeyAnimation) + 521 D1:C117 5F - - - ld e, a + 522 D1:C118 16 0F - - ld d, VX_ANIMATION_MATRIX_SIZE + 523 D1:C11A ED 5C - - mlt de + 524 D1:C11C FD 19 - - add iy, de ; correct animation matrix + 525 D1:C11E - - - - ; modelview = bonemodel*modelview + 526 D1:C11E 21 00 08 E3 ld hl, vxModelView + 527 D1:C122 DD 21 92 BD + D1 - - - ld ix, vxModelViewCache + 528 D1:C127 CD 1E AD D1 call vxMatrixTransform ; (hl)=(iy)*(ix) + 529 D1:C12B - - - - ; I have the correct modelview matrix in shader cache area + 530 D1:C12B - - - - ; next one is reduced matrix without translation, since it will only be a direction vector mlt. However, the light vector position also need to be transformed by the transposed matrix + 531 D1:C12B - - - - ; light0 = light0cache*transpose(bonemodel*modelworld) + 532 D1:C12B DD 21 A4 BD + D1 - - - ld ix, vxModelWorld + 533 D1:C130 ED 22 12 - lea hl, ix+VX_MATRIX_SIZE + 534 D1:C133 CD BB AC D1 call vxMatrixMlt + 535 D1:C137 ED 32 12 - lea ix, ix+VX_MATRIX_SIZE + 536 D1:C13A CD 41 AD D1 call vxMatrixTranspose + 537 D1:C13E 21 12 08 E3 ld hl, vxLight0 + 538 D1:C142 FD 21 C8 BD + D1 - - - ld iy, vxLight0Cache + 539 D1:C147 CD 66 AD D1 call vxMatrixLightning + 540 D1:C14B FD E1 - - pop iy + 541 D1:C14D FD 7E FF - ld a, (iy-1) + 542 D1:C150 5F - - - ld e, a + 543 D1:C151 16 0F - - ld d, VX_ANIMATION_MATRIX_SIZE + 544 D1:C153 ED 5C - - mlt de + 545 D1:C155 FD 19 - - add iy, de + 546 D1:C157 D1 - - - pop de + 547 D1:C158 C1 - - - pop bc + 548 D1:C159 DD 21 00 08 + E3 - - - ld ix, VX_VERTEX_SHADER_DATA + 549 D1:C15E 18 97 - - jr vxCmdStreamLoop + 550 D1:C160 - - - - vxVertexBoxCode: + 551 D1:C160 00 - - - .db 0 + 552 D1:C161 - - - - vxVertexStreamBox: + 553 D1:C161 C5 - - - push bc + 554 D1:C162 - - - - ; check the bounding box + 555 D1:C162 11 1F B5 D1 ld de, VX_VERTEX_POOL + 556 D1:C166 3E FF - - ld a, $FF + 557 D1:C168 32 60 C1 D1 ld (vxVertexBoxCode), a + 558 D1:C16C 06 08 - - ld b, 8 + 559 D1:C16E - - - - vxVertexBoxLoop: + 560 D1:C16E C5 - - - push bc + 561 D1:C16F FD 07 00 - ld bc, (iy+0) + 562 D1:C172 CD 1C 08 E3 call vxVertexShader + 563 D1:C176 ED 33 FD - lea iy, iy-3 + 564 D1:C179 21 F0 FF FF ld hl, -16 + 565 D1:C17D 19 - - - add hl, de + 566 D1:C17E 3A 60 C1 D1 ld a, (vxVertexBoxCode) + 567 D1:C182 A6 - - - and a, (hl) + 568 D1:C183 32 60 C1 D1 ld (vxVertexBoxCode), a + 569 D1:C187 C1 - - - pop bc + 570 D1:C188 10 E4 - - djnz vxVertexBoxLoop + 571 D1:C18A C1 - - - pop bc + 572 D1:C18B B7 - - - or a, a + 573 D1:C18C C8 - - - ret z + 574 D1:C18D 37 - - - scf + 575 D1:C18E C9 - - - ret + 576 D1:C18F - - - - + 577 D1:C18F - - - - #comment + 578 D1:C18F vxCmdStream: + 579 D1:C18F ; hl - vertex source, de - vertex cache, ix matrix, support animation, if animation : use vxKeyAnimation + 580 D1:C18F ; vertex source have size at the begining + 581 D1:C18F ; copy matrix into vxWorldView matrix & ModelView matrix + 582 D1:C18F push de + 583 D1:C18F push hl + 584 D1:C18F + 585 D1:C18F ; load shader first + 586 D1:C18F + 587 D1:C18F ld hl, VX_GLOBAL_SHADER_COPY + 588 D1:C18F ld de, VX_VRAM + 589 D1:C18F ld bc, VX_GLOBAL_SHADER_SIZE + 590 D1:C18F ldir + 591 D1:C18F + 592 D1:C18F lea hl, ix+0 + 593 D1:C18F ld de, vxWorldView + 594 D1:C18F ld bc, VX_MATRIX_SIZE + 595 D1:C18F ldir + 596 D1:C18F + 597 D1:C18F lea hl, ix+0 + 598 D1:C18F ld de, vxModelView + 599 D1:C18F ld bc, VX_MATRIX_SIZE + 600 D1:C18F ldir + 601 D1:C18F ;; ld ix, vxModelView + 602 D1:C18F ; + 603 D1:C18F ld ix, VX_GLOBAL_SHADER_DATA + 604 D1:C18F ; compute transpose + 605 D1:C18F + 606 D1:C18F pop hl + 607 D1:C18F pop de + 608 D1:C18F + 609 D1:C18F ld bc, (hl) + 610 D1:C18F inc hl \ inc hl \ inc hl + 611 D1:C18F push hl + 612 D1:C18F pop iy + 613 D1:C18F ld a, c + 614 D1:C18F dec bc + 615 D1:C18F inc b + 616 D1:C18F ld c, b + 617 D1:C18F ld b, a + 618 D1:C18F + 619 D1:C18F ; de = cache, iy = source, ix = matrix, bc = size + 620 D1:C18F vxCmdStreamLoop0: + 621 D1:C18F push bc + 622 D1:C18F ; read first source value, if value=32768, then compute bone + 623 D1:C18F ld bc, (iy+0) + 624 D1:C18F ;; ld hl, VX_ANIMATION_BONE + 625 D1:C18F ;; or a, a + 626 D1:C18F ;; sbc.s hl, bc + 627 D1:C18F + 628 D1:C18F ld a, b + 629 D1:C18F xor VX_ANIMATION_BONE/256 + 630 D1:C18F or a, c + 631 D1:C18F + 632 D1:C18F jr z, vxCmdStreamBone + 633 D1:C18F ; wasn't a bone in source, so read vertex + 634 D1:C18F ; transform vertex ! Take source iy*ix then copy value to cache + 635 D1:C18F call vxVertexShader + 636 D1:C18F vxCmdStreamLoopBack: + 637 D1:C18F pop bc + 638 D1:C18F djnz vxCmdStreamLoop0 + 639 D1:C18F dec c + 640 D1:C18F jr nz, vxCmdStreamLoop0 + 641 D1:C18F ret + 642 D1:C18F vxCmdStreamBone: + 643 D1:C18F ; more complex stuff here. Need to restore initial matrix & do a multiplication with the correct bone key matrix + 644 D1:C18F ; once done, only advance in the source, not the cache + 645 D1:C18F push de + 646 D1:C18F ; matrix: + 647 D1:C18F lea ix, iy+3 + 648 D1:C18F ld a, (vxKeyAnimation) + 649 D1:C18F ld e, a + 650 D1:C18F ld d, VX_ANIMATION_MATRIX_SIZE + 651 D1:C18F mlt de + 652 D1:C18F add ix, de ; correct animation matrix + 653 D1:C18F ; todo : do current matrix * this matrix + 654 D1:C18F push iy + 655 D1:C18F ; first transform the translation by the world matrix + 656 D1:C18F push ix + 657 D1:C18F lea iy, ix+9 ; load translation part + 658 D1:C18F ld ix, vxWorldView + 659 D1:C18F call vxCmdTransform + 660 D1:C18F ; copy back data + 661 D1:C18F ld hl, vxPosition + 662 D1:C18F ld de, vxModelView+9 + 663 D1:C18F ld bc, 9 + 664 D1:C18F ldir + 665 D1:C18F pop iy + 666 D1:C18F ld ix, vxWorldView + 667 D1:C18F ld hl, vxModelView + 668 D1:C18F ; hl=iy*ix + 669 D1:C18F call IMatrixMlt + 670 D1:C18F + 671 D1:C18F ld ix, vxModelView ; concatenation of modelWorld and WorldView + 672 D1:C18F + 673 D1:C18F pop iy + 674 D1:C18F ld a, (iy+2) ; number of matrix, advance + 675 D1:C18F ld e, a + 676 D1:C18F ld d, VX_ANIMATION_MATRIX_SIZE + 677 D1:C18F mlt de + 678 D1:C18F add iy, de + 679 D1:C18F lea iy, iy+3 + 680 D1:C18F pop de + 681 D1:C18F pop bc + 682 D1:C18F jp vxCmdStreamLoop0 + 683 D1:C18F #endcomment + 684 D1:C18F - - - - + 685 D1:C18F - - - - vxCmdDepthSort: + 686 D1:C18F C5 - - - push bc + 687 D1:C190 01 FF 01 00 ld bc, 511 + 688 D1:C194 21 FF 33 D0 ld hl, VX_DEPTH_BUCKET+511 + 689 D1:C198 11 FE 33 D0 ld de, VX_DEPTH_BUCKET+510 + 690 D1:C19C 36 00 - - ld (hl), $00 + 691 D1:C19E ED B8 - - lddr + 692 D1:C1A0 C1 - - - pop bc + 693 D1:C1A1 - - - - ; sort the current submission queue + 694 D1:C1A1 ED 4B 89 BD + D1 - - - ld bc, (vxGeometrySize) + 695 D1:C1A6 78 - - - ld a, b + 696 D1:C1A7 B1 - - - or c + 697 D1:C1A8 C8 - - - ret z + 698 D1:C1A9 FD 21 00 00 + D1 - - - ld iy, VX_GEOMETRY_QUEUE + 699 D1:C1AE DD 2A 14 00 + E3 - - - ld ix, (vxDepthSortTemp) + 700 D1:C1B3 - - - - + 701 D1:C1B3 79 - - - ld a, c + 702 D1:C1B4 0B - - - dec bc + 703 D1:C1B5 04 - - - inc b + 704 D1:C1B6 48 - - - ld c, b + 705 D1:C1B7 47 - - - ld b, a + 706 D1:C1B8 - - - - vxCmdDepthCompute: + 707 D1:C1B8 C5 - - - push bc + 708 D1:C1B9 FD E5 - - push iy + 709 D1:C1BB 21 00 BE D1 ld hl, VX_BATCH_DATA + 710 D1:C1BF FD 6E 00 - ld l, (iy+0) + 711 D1:C1C2 7D - - - ld a, l ; batch index + 712 D1:C1C3 23 - - - inc hl + 713 D1:C1C4 ED 07 - - ld bc, (hl) ; grab cache, important + 714 D1:C1C6 FD 37 01 - ld iy, (iy+1) ; this is adress of vertex index + 715 D1:C1C9 - - - - + 716 D1:C1C9 DD E5 - - push ix + 717 D1:C1CB FD 31 00 - ld ix, (iy+0) + 718 D1:C1CE DD 09 - - add ix, bc + 719 D1:C1D0 DD 27 0D - ld hl, (ix+13) + 720 D1:C1D3 FD 31 03 - ld ix, (iy+3) + 721 D1:C1D6 DD 09 - - add ix, bc ; add cache adress of batch + 722 D1:C1D8 DD 17 0D - ld de, (ix+13) + 723 D1:C1DB 19 - - - add hl, de ; add up Z coordinate + 724 D1:C1DC FD 31 06 - ld ix, (iy+6) + 725 D1:C1DF DD 09 - - add ix, bc + 726 D1:C1E1 DD 17 0D - ld de, (ix+13) + 727 D1:C1E4 B7 - - - or a, a + 728 D1:C1E5 ED 5A - - adc hl, de ; et voilà ! + 729 D1:C1E7 - - - - ; check for <0 + 730 D1:C1E7 F2 EE C1 D1 jp p, vxCmdDepthPositive + 731 D1:C1EB B7 - - - or a, a + 732 D1:C1EC ED 62 - - sbc hl, hl + 733 D1:C1EE - - - - vxCmdDepthPositive: + 734 D1:C1EE DD E1 - - pop ix + 735 D1:C1F0 - - - - + 736 D1:C1F0 - - - - ; write everything to tmp buffer + 737 D1:C1F0 DD 2F 00 - ld (ix+0), hl ; depth + 738 D1:C1F3 DD 3E 03 - ld (ix+3), iy ; adress + 739 D1:C1F6 DD 77 06 - ld (ix+6), a ; batch id + 740 D1:C1F9 ED 32 07 - lea ix, ix+7 + 741 D1:C1FC - - - - ; fill depth bucket + 742 D1:C1FC 7D - - - ld a, l + 743 D1:C1FD 21 00 32 D0 ld hl, VX_DEPTH_BUCKET + 744 D1:C201 6F - - - ld l, a + 745 D1:C202 - - - - ; inc (hl) + 746 D1:C202 3E 07 - - ld a, 7 + 747 D1:C204 86 - - - add a, (hl) + 748 D1:C205 77 - - - ld (hl), a + 749 D1:C206 - - - - ; nz + 750 D1:C206 30 02 - - jr nc, vxHSBDepthSkip + 751 D1:C208 24 - - - inc h + 752 D1:C209 34 - - - inc (hl) + 753 D1:C20A - - - - vxHSBDepthSkip: + 754 D1:C20A - - - - + 755 D1:C20A FD E1 - - pop iy + 756 D1:C20C ED 33 04 - lea iy, iy+4 + 757 D1:C20F C1 - - - pop bc + 758 D1:C210 10 A6 - - djnz vxCmdDepthCompute + 759 D1:C212 0D - - - dec c + 760 D1:C213 20 A3 - - jr nz, vxCmdDepthCompute + 761 D1:C215 - - - - ; and now the sorting : apply a radix sort on the data (huge & complicate, constant speed per triangle of about 1300TStates) + 762 D1:C215 - - - - + 763 D1:C215 2A 14 00 E3 ld hl, (vxDepthSortTemp) + 764 D1:C219 22 05 C3 D1 ld (vxCmdReadBuffer0), hl + 765 D1:C21D 22 F0 C2 D1 ld (vxCmdWriteBuffer0), hl + 766 D1:C221 11 00 70 00 ld de, VX_MAX_TRIANGLE*7 + 767 D1:C225 19 - - - add hl, de + 768 D1:C226 22 8C C2 D1 ld (vxCmdReadBuffer1), hl + 769 D1:C22A 22 77 C2 D1 ld (vxCmdWriteBuffer1), hl + 770 D1:C22E - - - - + 771 D1:C22E - - - - ; restore index position in array + 772 D1:C22E 21 FF 33 D0 ld hl, VX_DEPTH_BUCKET+511 + 773 D1:C232 56 - - - ld d, (hl) + 774 D1:C233 25 - - - dec h + 775 D1:C234 5E - - - ld e, (hl) + 776 D1:C235 2D - - - dec l + 777 D1:C236 - - - - vxCmdRestoreBucketLoop0: + 778 D1:C236 4E - - - ld c, (hl) + 779 D1:C237 24 - - - inc h + 780 D1:C238 46 - - - ld b, (hl) + 781 D1:C239 EB - - - ex de, hl + 782 D1:C23A 09 - - - add hl, bc + 783 D1:C23B EB - - - ex de, hl + 784 D1:C23C 72 - - - ld (hl), d + 785 D1:C23D 25 - - - dec h + 786 D1:C23E 73 - - - ld (hl), e + 787 D1:C23F 2D - - - dec l + 788 D1:C240 20 F4 - - jr nz, vxCmdRestoreBucketLoop0 + 789 D1:C242 4E - - - ld c, (hl) + 790 D1:C243 24 - - - inc h + 791 D1:C244 46 - - - ld b, (hl) + 792 D1:C245 EB - - - ex de, hl + 793 D1:C246 09 - - - add hl, bc + 794 D1:C247 EB - - - ex de, hl + 795 D1:C248 72 - - - ld (hl), d + 796 D1:C249 25 - - - dec h + 797 D1:C24A 73 - - - ld (hl), e + 798 D1:C24B - - - - ; and copy to the correct position + 799 D1:C24B ED 32 F9 - lea ix, ix-7 + 800 D1:C24E - - - - ; reset bcu + 801 D1:C24E 52 03 - - inc.sil bc + 802 D1:C250 42 - - - ld b, d + 803 D1:C251 4B - - - ld c, e + 804 D1:C252 - - - - + 805 D1:C252 ED 4B 89 BD + D1 - - - ld bc, (vxGeometrySize) + 806 D1:C257 - - - - + 807 D1:C257 79 - - - ld a, c + 808 D1:C258 0B - - - dec bc + 809 D1:C259 04 - - - inc b + 810 D1:C25A 4F - - - ld c, a + 811 D1:C25B - - - - + 812 D1:C25B C5 - - - push bc + 813 D1:C25C C5 - - - push bc + 814 D1:C25D C5 - - - push bc + 815 D1:C25E C5 - - - push bc + 816 D1:C25F - - - - + 817 D1:C25F 79 - - - ld a, c + 818 D1:C260 - - - - vxCmdFillBucketOuter0: + 819 D1:C260 C5 - - - push bc + 820 D1:C261 06 00 - - ld b, 0 + 821 D1:C263 - - - - vxCmdFillBucketInner0: + 822 D1:C263 21 07 32 D0 ld hl, VX_DEPTH_BUCKET+7 + 823 D1:C267 4D - - - ld c, l + 824 D1:C268 DD 6E 00 - ld l, (ix+0) + 825 D1:C26B 5E - - - ld e, (hl) + 826 D1:C26C 24 - - - inc h + 827 D1:C26D 56 - - - ld d, (hl) + 828 D1:C26E - - - - ; dec de + 829 D1:C26E EB - - - ex de, hl + 830 D1:C26F 52 ED 42 - sbc.s hl, bc + 831 D1:C272 EB - - - ex de, hl + 832 D1:C273 72 - - - ld (hl), d + 833 D1:C274 25 - - - dec h + 834 D1:C275 73 - - - ld (hl), e + 835 D1:C276 - - - - ; de*7+write_buffer + 836 D1:C276 - - - - ; ld h, c + 837 D1:C276 - - - - ; ld l, d + 838 D1:C276 - - - - ; ld d, c + 839 D1:C276 - - - - ; mlt hl + 840 D1:C276 - - - - ; mlt de + 841 D1:C276 - - - - ; ld h, l + 842 D1:C276 - - - - ; ld l, b + 843 D1:C276 - - - - ; add hl, de + 844 D1:C276 - - - - vxCmdWriteBuffer1=$+1 + 845 D1:C276 21 00 00 00 ld hl, $0 + 846 D1:C27A 19 - - - add hl, de + 847 D1:C27B EB - - - ex de, hl + 848 D1:C27C ED 22 00 - lea hl, ix+0 + 849 D1:C27F ED B0 - - ldir + 850 D1:C281 ED 32 F9 - lea ix, ix-7 + 851 D1:C284 3D - - - dec a + 852 D1:C285 20 DC - - jr nz, vxCmdFillBucketInner0 + 853 D1:C287 C1 - - - pop bc + 854 D1:C288 10 D6 - - djnz vxCmdFillBucketOuter0 + 855 D1:C28A - - - - + 856 D1:C28A - - - - vxCmdReadBuffer1=$+2 + 857 D1:C28A DD 21 00 00 + 00 - - - ld ix, $0 + 858 D1:C28F - - - - + 859 D1:C28F 01 FF 01 00 ld bc, 511 + 860 D1:C293 21 FF 33 D0 ld hl, VX_DEPTH_BUCKET+511 + 861 D1:C297 11 FE 33 D0 ld de, VX_DEPTH_BUCKET+510 + 862 D1:C29B 36 00 - - ld (hl), $00 + 863 D1:C29D ED B8 - - lddr + 864 D1:C29F - - - - ; restore size + 865 D1:C29F C1 - - - pop bc + 866 D1:C2A0 79 - - - ld a, c + 867 D1:C2A1 48 - - - ld c, b + 868 D1:C2A2 47 - - - ld b, a + 869 D1:C2A3 1E 07 - - ld e, 7 + 870 D1:C2A5 DD 6E 01 - ld l, (ix+1) + 871 D1:C2A8 7B - - - ld a, e + 872 D1:C2A9 86 - - - add a, (hl) + 873 D1:C2AA 77 - - - ld (hl), a + 874 D1:C2AB 30 03 - - jr nc, $+5 + 875 D1:C2AD 24 - - - inc h + 876 D1:C2AE 34 - - - inc (hl) + 877 D1:C2AF 25 - - - dec h + 878 D1:C2B0 ED 32 07 - lea ix, ix+7 + 879 D1:C2B3 10 F0 - - djnz $-14 + 880 D1:C2B5 0D - - - dec c + 881 D1:C2B6 20 ED - - jr nz, $-17 + 882 D1:C2B8 2E FF - - ld l, 255 + 883 D1:C2BA 5E - - - ld e, (hl) + 884 D1:C2BB 24 - - - inc h + 885 D1:C2BC 56 - - - ld d, (hl) + 886 D1:C2BD 25 - - - dec h + 887 D1:C2BE 2D - - - dec l + 888 D1:C2BF - - - - vxCmdRestoreBucket1: + 889 D1:C2BF 4E - - - ld c, (hl) + 890 D1:C2C0 24 - - - inc h + 891 D1:C2C1 46 - - - ld b, (hl) + 892 D1:C2C2 EB - - - ex de, hl + 893 D1:C2C3 09 - - - add hl, bc + 894 D1:C2C4 EB - - - ex de, hl + 895 D1:C2C5 72 - - - ld (hl), d + 896 D1:C2C6 25 - - - dec h + 897 D1:C2C7 73 - - - ld (hl), e + 898 D1:C2C8 2D - - - dec l + 899 D1:C2C9 20 F4 - - jr nz, vxCmdRestoreBucket1 + 900 D1:C2CB 4E - - - ld c, (hl) + 901 D1:C2CC 24 - - - inc h + 902 D1:C2CD 46 - - - ld b, (hl) + 903 D1:C2CE EB - - - ex de, hl + 904 D1:C2CF 09 - - - add hl, bc + 905 D1:C2D0 EB - - - ex de, hl + 906 D1:C2D1 72 - - - ld (hl), d + 907 D1:C2D2 25 - - - dec h + 908 D1:C2D3 73 - - - ld (hl), e + 909 D1:C2D4 ED 32 F9 - lea ix, ix-7 + 910 D1:C2D7 - - - - + 911 D1:C2D7 C1 - - - pop bc + 912 D1:C2D8 79 - - - ld a, c + 913 D1:C2D9 - - - - vxCmdFillBucketOuter1: + 914 D1:C2D9 C5 - - - push bc + 915 D1:C2DA 06 00 - - ld b, 0 + 916 D1:C2DC - - - - vxCmdFillBucketInner1: + 917 D1:C2DC 21 07 32 D0 ld hl, VX_DEPTH_BUCKET+7 + 918 D1:C2E0 4D - - - ld c, l + 919 D1:C2E1 DD 6E 01 - ld l, (ix+1) + 920 D1:C2E4 5E - - - ld e, (hl) + 921 D1:C2E5 24 - - - inc h + 922 D1:C2E6 56 - - - ld d, (hl) + 923 D1:C2E7 EB - - - ex de, hl + 924 D1:C2E8 52 ED 42 - sbc.sil hl, bc + 925 D1:C2EB EB - - - ex de, hl + 926 D1:C2EC 72 - - - ld (hl), d + 927 D1:C2ED 25 - - - dec h + 928 D1:C2EE 73 - - - ld (hl), e + 929 D1:C2EF - - - - vxCmdWriteBuffer0=$+1 + 930 D1:C2EF 21 00 00 00 ld hl, $0 + 931 D1:C2F3 19 - - - add hl, de + 932 D1:C2F4 EB - - - ex de, hl + 933 D1:C2F5 ED 22 00 - lea hl, ix+0 + 934 D1:C2F8 ED B0 - - ldir + 935 D1:C2FA ED 32 F9 - lea ix, ix-7 + 936 D1:C2FD 3D - - - dec a + 937 D1:C2FE 20 DC - - jr nz, vxCmdFillBucketInner1 + 938 D1:C300 C1 - - - pop bc + 939 D1:C301 10 D6 - - djnz vxCmdFillBucketOuter1 + 940 D1:C303 - - - - + 941 D1:C303 - - - - vxCmdReadBuffer0=$+2 + 942 D1:C303 DD 21 00 00 + 00 - - - ld ix, $0 + 943 D1:C308 - - - - + 944 D1:C308 01 FF 01 00 ld bc, 511 + 945 D1:C30C 21 FF 33 D0 ld hl, VX_DEPTH_BUCKET+511 + 946 D1:C310 11 FE 33 D0 ld de, VX_DEPTH_BUCKET+510 + 947 D1:C314 36 00 - - ld (hl), $00 + 948 D1:C316 ED B8 - - lddr + 949 D1:C318 - - - - + 950 D1:C318 C1 - - - pop bc + 951 D1:C319 79 - - - ld a, c + 952 D1:C31A 48 - - - ld c, b + 953 D1:C31B 47 - - - ld b, a + 954 D1:C31C 1E 04 - - ld e, 4 ; size of final batch + 955 D1:C31E DD 6E 02 - ld l, (ix+2) + 956 D1:C321 7B - - - ld a, e + 957 D1:C322 86 - - - add a, (hl) + 958 D1:C323 77 - - - ld (hl), a + 959 D1:C324 30 03 - - jr nc, $+5 + 960 D1:C326 24 - - - inc h + 961 D1:C327 34 - - - inc (hl) + 962 D1:C328 25 - - - dec h + 963 D1:C329 ED 32 07 - lea ix, ix+7 + 964 D1:C32C 10 F0 - - djnz $-14 + 965 D1:C32E 0D - - - dec c + 966 D1:C32F 20 ED - - jr nz, $-17 + 967 D1:C331 2E FF - - ld l, 255 + 968 D1:C333 5E - - - ld e, (hl) + 969 D1:C334 24 - - - inc h + 970 D1:C335 56 - - - ld d, (hl) + 971 D1:C336 25 - - - dec h + 972 D1:C337 2D - - - dec l + 973 D1:C338 - - - - vxCmdRestoreBucket2: + 974 D1:C338 4E - - - ld c, (hl) + 975 D1:C339 24 - - - inc h + 976 D1:C33A 46 - - - ld b, (hl) + 977 D1:C33B EB - - - ex de, hl + 978 D1:C33C 09 - - - add hl, bc + 979 D1:C33D EB - - - ex de, hl + 980 D1:C33E 72 - - - ld (hl), d + 981 D1:C33F 25 - - - dec h + 982 D1:C340 73 - - - ld (hl), e + 983 D1:C341 2D - - - dec l + 984 D1:C342 20 F4 - - jr nz, vxCmdRestoreBucket2 + 985 D1:C344 4E - - - ld c, (hl) + 986 D1:C345 24 - - - inc h + 987 D1:C346 46 - - - ld b, (hl) + 988 D1:C347 EB - - - ex de, hl + 989 D1:C348 09 - - - add hl, bc + 990 D1:C349 EB - - - ex de, hl + 991 D1:C34A 72 - - - ld (hl), d + 992 D1:C34B 25 - - - dec h + 993 D1:C34C 73 - - - ld (hl), e + 994 D1:C34D ED 32 F9 - lea ix, ix-7 + 995 D1:C350 - - - - + 996 D1:C350 C1 - - - pop bc + 997 D1:C351 79 - - - ld a, c + 998 D1:C352 2C - - - inc l + 999 D1:C353 - - - - vxCmdFillBucket2: + 1000 D1:C353 DD 6E 02 - ld l, (ix+2) + 1001 D1:C356 5E - - - ld e, (hl) + 1002 D1:C357 24 - - - inc h + 1003 D1:C358 56 - - - ld d, (hl) + 1004 D1:C359 52 1B - - dec.sil de + 1005 D1:C35B 1B - - - dec de + 1006 D1:C35C 1B - - - dec de + 1007 D1:C35D 1B - - - dec de + 1008 D1:C35E 72 - - - ld (hl), d + 1009 D1:C35F 25 - - - dec h + 1010 D1:C360 73 - - - ld (hl), e + 1011 D1:C361 FD 21 00 00 + D1 - - - ld iy, VX_GEOMETRY_QUEUE + 1012 D1:C366 FD 19 - - add iy, de + 1013 D1:C368 - - - - ; copy only the triangle adress + 1014 D1:C368 DD 17 03 - ld de, (ix+3) + 1015 D1:C36B FD 1F 01 - ld (iy+1), de + 1016 D1:C36E DD 6E 06 - ld l, (ix+6) + 1017 D1:C371 FD 75 00 - ld (iy+0), l + 1018 D1:C374 - - - - + 1019 D1:C374 ED 32 F9 - lea ix, ix-7 + 1020 D1:C377 3D - - - dec a + 1021 D1:C378 20 D9 - - jr nz, vxCmdFillBucket2 + 1022 D1:C37A 10 D7 - - djnz vxCmdFillBucket2 + 1023 D1:C37C - - - - + 1024 D1:C37C C9 - - - ret + 1025 D1:C37D - - - - + 1026 D1:C37D - - - - + 1027 D1:C37D - - - - vxCmdBackfaceCull: + 1028 D1:C37D 13 - - - inc de + 1029 D1:C37E 13 - - - inc de + 1030 D1:C37F - - - - + 1031 D1:C37F FD 27 00 - ld hl, (iy+0) + 1032 D1:C382 19 - - - add hl, de + 1033 D1:C383 ED 07 - - ld bc, (hl) + 1034 D1:C385 2B - - - dec hl + 1035 D1:C386 7E - - - ld a, (hl) + 1036 D1:C387 FD 27 06 - ld hl, (iy+6) + 1037 D1:C38A 19 - - - add hl, de + 1038 D1:C38B ED 27 - - ld hl, (hl) + 1039 D1:C38D B7 - - - or a, a + 1040 D1:C38E ED 42 - - sbc hl, bc + 1041 D1:C390 44 - - - ld b, h + 1042 D1:C391 4D - - - ld c, l + 1043 D1:C392 FD 27 03 - ld hl, (iy+3) + 1044 D1:C395 19 - - - add hl, de + 1045 D1:C396 2B - - - dec hl + 1046 D1:C397 96 - - - sub (hl) + 1047 D1:C398 - - - - + 1048 D1:C398 60 - - - ld h, b + 1049 D1:C399 6F - - - ld l, a + 1050 D1:C39A ED 6C - - mlt hl + 1051 D1:C39C - - - - ;; jr z, RR + 1052 D1:C39C 30 03 - - jr nc, $+5 + 1053 D1:C39E B7 - - - or a, a + 1054 D1:C39F ED 42 - - sbc hl, bc + 1055 D1:C3A1 CB 78 - - bit 7, b + 1056 D1:C3A3 47 - - - ld b, a + 1057 D1:C3A4 28 03 - - jr z, $+5 + 1058 D1:C3A6 7C - - - ld a, h + 1059 D1:C3A7 90 - - - sub a, b + 1060 D1:C3A8 67 - - - ld h, a + 1061 D1:C3A9 29 29 29 29 + 29 29 29 29 slhl +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" + 1062 D1:C3B1 ED 4C - - mlt bc + 1063 D1:C3B3 09 - - - add hl, bc + 1064 D1:C3B4 - - - - RR: + 1065 D1:C3B4 E5 - - - push hl + 1066 D1:C3B5 - - - - + 1067 D1:C3B5 FD 27 00 - ld hl, (iy+0) + 1068 D1:C3B8 19 - - - add hl, de + 1069 D1:C3B9 ED 07 - - ld bc, (hl) + 1070 D1:C3BB 2B - - - dec hl + 1071 D1:C3BC 7E - - - ld a, (hl) + 1072 D1:C3BD FD 27 03 - ld hl, (iy+3) + 1073 D1:C3C0 19 - - - add hl, de + 1074 D1:C3C1 ED 27 - - ld hl, (hl) + 1075 D1:C3C3 B7 - - - or a, a + 1076 D1:C3C4 ED 42 - - sbc hl, bc + 1077 D1:C3C6 44 - - - ld b, h + 1078 D1:C3C7 4D - - - ld c, l + 1079 D1:C3C8 - - - - + 1080 D1:C3C8 1B - - - dec de + 1081 D1:C3C9 FD 27 06 - ld hl, (iy+6) + 1082 D1:C3CC 19 - - - add hl, de + 1083 D1:C3CD 96 - - - sub (hl) + 1084 D1:C3CE - - - - + 1085 D1:C3CE 60 - - - ld h, b + 1086 D1:C3CF 6F - - - ld l, a + 1087 D1:C3D0 ED 6C - - mlt hl + 1088 D1:C3D2 - - - - ;; jr z, RR2 + 1089 D1:C3D2 30 03 - - jr nc, $+5 + 1090 D1:C3D4 B7 - - - or a, a + 1091 D1:C3D5 ED 42 - - sbc hl, bc + 1092 D1:C3D7 CB 78 - - bit 7, b + 1093 D1:C3D9 47 - - - ld b, a + 1094 D1:C3DA 28 03 - - jr z, $+5 + 1095 D1:C3DC 7C - - - ld a, h + 1096 D1:C3DD 90 - - - sub a, b + 1097 D1:C3DE 67 - - - ld h, a + 1098 D1:C3DF 29 29 29 29 + 29 29 29 29 slhl +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" + 1099 D1:C3E7 ED 4C - - mlt bc + 1100 D1:C3E9 09 - - - add hl, bc + 1101 D1:C3EA - - - - RR2: + 1102 D1:C3EA C1 - - - pop bc + 1103 D1:C3EB - - - - + 1104 D1:C3EB 37 - - - scf + 1105 D1:C3EC ED 42 - - sbc hl, bc + 1106 D1:C3EE - - - - + 1107 D1:C3EE 1B - - - dec de + 1108 D1:C3EF C9 - - - ret + 1109 D1:C3F0 - - - - + 1110 D1:C3F0 - - - - + 1111 D1:C3F0 - - - - + 1112 D1:C3F0 - - - - vxCmdBackfaceCull2: + 1113 D1:C3F0 - - - - ; (x2-x0)*(y1-y0) - (x1-x0)*(y2-y0) + 1114 D1:C3F0 D5 - - - push de + 1115 D1:C3F1 13 - - - inc de + 1116 D1:C3F2 - - - - + 1117 D1:C3F2 FD 27 03 - ld hl, (iy+3) + 1118 D1:C3F5 19 - - - add hl, de + 1119 D1:C3F6 7E - - - ld a, (hl) + 1120 D1:C3F7 FD 27 00 - ld hl, (iy+0) + 1121 D1:C3FA 19 - - - add hl, de + 1122 D1:C3FB 96 - - - sub (hl) + 1123 D1:C3FC F5 - - - push af + 1124 D1:C3FD 23 - - - inc hl + 1125 D1:C3FE ED 07 - - ld bc, (hl) + 1126 D1:C400 FD 27 06 - ld hl, (iy+6) + 1127 D1:C403 19 - - - add hl, de + 1128 D1:C404 23 - - - inc hl + 1129 D1:C405 ED 27 - - ld hl, (hl) + 1130 D1:C407 B7 - - - or a, a + 1131 D1:C408 ED 42 - - sbc hl, bc + 1132 D1:C40A 44 - - - ld b, h + 1133 D1:C40B 4D - - - ld c, l + 1134 D1:C40C F1 - - - pop af + 1135 D1:C40D 60 - - - ld h, b + 1136 D1:C40E 6F - - - ld l, a + 1137 D1:C40F ED 6C - - mlt hl + 1138 D1:C411 30 03 - - jr nc, $+5 + 1139 D1:C413 B7 - - - or a, a + 1140 D1:C414 ED 42 - - sbc hl, bc + 1141 D1:C416 CB 78 - - bit 7, b + 1142 D1:C418 47 - - - ld b, a + 1143 D1:C419 28 03 - - jr z, $+5 + 1144 D1:C41B 7C - - - ld a, h + 1145 D1:C41C 90 - - - sub a, b + 1146 D1:C41D 67 - - - ld h, a + 1147 D1:C41E 29 29 29 29 + 29 29 29 29 slhl +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" + 1148 D1:C426 ED 4C - - mlt bc + 1149 D1:C428 09 - - - add hl, bc + 1150 D1:C429 - - - - + 1151 D1:C429 E5 - - - push hl + 1152 D1:C42A - - - - + 1153 D1:C42A FD 27 06 - ld hl, (iy+6) + 1154 D1:C42D 19 - - - add hl, de + 1155 D1:C42E 7E - - - ld a, (hl) + 1156 D1:C42F FD 27 00 - ld hl, (iy+0) + 1157 D1:C432 19 - - - add hl, de + 1158 D1:C433 96 - - - sub (hl) + 1159 D1:C434 F5 - - - push af + 1160 D1:C435 23 - - - inc hl + 1161 D1:C436 ED 07 - - ld bc, (hl) + 1162 D1:C438 FD 27 03 - ld hl, (iy+3) + 1163 D1:C43B 19 - - - add hl, de + 1164 D1:C43C 23 - - - inc hl + 1165 D1:C43D ED 27 - - ld hl, (hl) + 1166 D1:C43F B7 - - - or a, a + 1167 D1:C440 ED 42 - - sbc hl, bc + 1168 D1:C442 44 - - - ld b, h + 1169 D1:C443 4D - - - ld c, l + 1170 D1:C444 F1 - - - pop af + 1171 D1:C445 60 - - - ld h, b + 1172 D1:C446 6F - - - ld l, a + 1173 D1:C447 ED 6C - - mlt hl + 1174 D1:C449 30 03 - - jr nc, $+5 + 1175 D1:C44B B7 - - - or a, a + 1176 D1:C44C ED 42 - - sbc hl, bc + 1177 D1:C44E CB 78 - - bit 7, b + 1178 D1:C450 47 - - - ld b, a + 1179 D1:C451 28 03 - - jr z, $+5 + 1180 D1:C453 7C - - - ld a, h + 1181 D1:C454 90 - - - sub a, b + 1182 D1:C455 67 - - - ld h, a + 1183 D1:C456 29 29 29 29 + 29 29 29 29 slhl +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vx3D.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPipeline.ez80" + 1184 D1:C45E ED 4C - - mlt bc + 1185 D1:C460 09 - - - add hl, bc + 1186 D1:C461 - - - - + 1187 D1:C461 D1 - - - pop de + 1188 D1:C462 B7 - - - or a, a + 1189 D1:C463 ED 52 - - sbc hl, de + 1190 D1:C465 D1 - - - pop de + 1191 D1:C466 C9 - - - ret + 1192 D1:C467 - - - - + 1193 D1:C467 - - - - #comment + 1194 D1:C467 Monitor_Size_Start: + 1195 D1:C467 + 1196 D1:C467 vxVertexShader: + 1197 D1:C467 #define CC 0 + 1198 D1:C467 #define SY 1 + 1199 D1:C467 #define SX 2 + 1200 D1:C467 #define VX 7 + 1201 D1:C467 #define VY 10 + 1202 D1:C467 #define VZ 13 + 1203 D1:C467 #define VX_GLOBAL_VCACHE_SIZE 16 + 1204 D1:C467 #define VX_GLOBAL_VERTEX_SIZE 6 + 1205 D1:C467 ; ix = global data register [LV[0-2],LA,LE, MC[0-8],MTX,MTY,MTZ] + 1206 D1:C467 ; iy = vertex data register [VX,VY,VZ,VN[0-2]] + 1207 D1:C467 ; de = output data register [RC,SY,SX,RI[0-1],RX,RY,RZ] + 1208 D1:C467 ; bc = x vertex coordinate [16bits] + 1209 D1:C467 ; OUT register + 1210 D1:C467 ; de = de + VX_GLOBAL_VCACHE_SIZE + 1211 D1:C467 ; iy = iy + VX_GLOBAL_VERTEX_SIZE + 1212 D1:C467 ; data copied to memory + 1213 D1:C467 pea iy+VX_GLOBAL_VERTEX_SIZE + 1214 D1:C467 push de + 1215 D1:C467 ; X coordinate + 1216 D1:C467 ; ld bc, (iy+0) + 1217 D1:C467 ld hl, (ix+9) + 1218 D1:C467 ld a, (ix+0) + 1219 D1:C467 madd + 1220 D1:C467 ld a, (ix+1) + 1221 D1:C467 or a, a + 1222 D1:C467 jr z, vxVertexSkip0 + 1223 D1:C467 ld bc, (iy+2) + 1224 D1:C467 madd + 1225 D1:C467 vxVertexSkip0: + 1226 D1:C467 ld a, (ix+2) + 1227 D1:C467 ld bc, (iy+4) + 1228 D1:C467 madd.f + 1229 D1:C467 push hl + 1230 D1:C467 ; Z coordinate + 1231 D1:C467 ld hl, (ix+15) + 1232 D1:C467 ld a, (ix+8) + 1233 D1:C467 madd + 1234 D1:C467 ld a, (ix+7) + 1235 D1:C467 ld bc, (iy+2) + 1236 D1:C467 madd + 1237 D1:C467 ld a, (ix+6) + 1238 D1:C467 ld bc, (iy+0) + 1239 D1:C467 madd.f + 1240 D1:C467 push hl + 1241 D1:C467 ; Y coordinate + 1242 D1:C467 ld hl, (ix+12) + 1243 D1:C467 ld a, (ix+3) + 1244 D1:C467 madd + 1245 D1:C467 ld a, (ix+4) + 1246 D1:C467 ld bc, (iy+2) + 1247 D1:C467 madd + 1248 D1:C467 ld a, (ix+5) + 1249 D1:C467 ld bc, (iy+4) + 1250 D1:C467 madd + 1251 D1:C467 pop bc + 1252 D1:C467 pop de + 1253 D1:C467 pop iy + 1254 D1:C467 + 1255 D1:C467 ld (iy+VX), de + 1256 D1:C467 ld (iy+VY), hl + 1257 D1:C467 ld (iy+VZ), bc + 1258 D1:C467 ; 1740 + 1259 D1:C467 call vxPerspectiveDivide + 1260 D1:C467 ld (iy+CC), a + 1261 D1:C467 ld (iy+SY), b + 1262 D1:C467 ld (iy+SX), hl + 1263 D1:C467 + 1264 D1:C467 ; call vxDotProduct + 1265 D1:C467 ; jp p, $+4+3 + 1266 D1:C467 ; or a, a + 1267 D1:C467 ; sbc hl, hl + 1268 D1:C467 ; ld a, (ix+VX_LIGHT0_AMBIANT) + 1269 D1:C467 ; add a, l + 1270 D1:C467 ; cp 32 + 1271 D1:C467 ; jr nc, $+4 + 1272 D1:C467 ; ld a, 32 + 1273 D1:C467 ; ld (iy+VX_VERTEX_I0), a + 1274 D1:C467 + 1275 D1:C467 + 1276 D1:C467 lea de, iy+VX_GLOBAL_VCACHE_SIZE + 1277 D1:C467 pop iy + 1278 D1:C467 ret + 1279 D1:C467 + 1280 D1:C467 + 1281 D1:C467 vxProjectClipY: + 1282 D1:C467 rrca + 1283 D1:C467 ccf + 1284 D1:C467 rra + 1285 D1:C467 ; a = y plane code + 1286 D1:C467 ; continue on x code + 1287 D1:C467 ld hl, (iy+7) + 1288 D1:C467 bit 7,(iy+2+7) + 1289 D1:C467 jr z, vxProjectClipXAbs + 1290 D1:C467 ex de, hl + 1291 D1:C467 sbc hl, hl + 1292 D1:C467 sbc hl, de + 1293 D1:C467 vxProjectClipXAbs: + 1294 D1:C467 rra + 1295 D1:C467 sbc hl, bc + 1296 D1:C467 jr c, vxProjectClipXIn + 1297 D1:C467 rlca + 1298 D1:C467 rrca + 1299 D1:C467 ccf + 1300 D1:C467 rra + 1301 D1:C467 bit 7,(iy+8+7) + 1302 D1:C467 ret z + 1303 D1:C467 or %00001000 + 1304 D1:C467 ret + 1305 D1:C467 vxProjectClipXIn: + 1306 D1:C467 rra + 1307 D1:C467 and %00110000 + 1308 D1:C467 bit 7,(iy+8+7) + 1309 D1:C467 ret z + 1310 D1:C467 or %00001000 + 1311 D1:C467 ret + 1312 D1:C467 ; plane x right : plane x left : plane y up : plane y down : 0 : 0 : 0 : 0 + 1313 D1:C467 vxProject: + 1314 D1:C467 ld hl, (iy+10) + 1315 D1:C467 ld bc, (iy+13) + 1316 D1:C467 vxPerspectiveDivide: + 1317 D1:C467 xor a, a + 1318 D1:C467 bit 7,(iy+5+7) + 1319 D1:C467 jr z, vxProjectYAbs + 1320 D1:C467 ex de, hl + 1321 D1:C467 sbc hl, hl + 1322 D1:C467 sbc hl, de + 1323 D1:C467 vxProjectYAbs: + 1324 D1:C467 rla + 1325 D1:C467 sbc hl, bc + 1326 D1:C467 jr nc, vxProjectClipY + 1327 D1:C467 + 1328 D1:C467 add hl, bc + 1329 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1330 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1331 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1332 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1333 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1334 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1335 D1:C467 add hl,hl \ sbc hl,bc \ adc a,a + 1336 D1:C467 cpl + 1337 D1:C467 add a, a + 1338 D1:C467 ld l, VX_SCREEN_HEIGHT/2+1 ;precision stuffs + 1339 D1:C467 ld h, a + 1340 D1:C467 mlt hl + 1341 D1:C467 ld a, h + 1342 D1:C467 + 1343 D1:C467 jr nc, vxProjectYCorrect + 1344 D1:C467 neg + 1345 D1:C467 vxProjectYCorrect: + 1346 D1:C467 add a, VX_SCREEN_HCENTER + 1347 D1:C467 push af + 1348 D1:C467 ; project x coordinate + 1349 D1:C467 ld hl, (iy+7) + 1350 D1:C467 xor a, a + 1351 D1:C467 bit 7, (iy+2+7) + 1352 D1:C467 jr z, vxProjectXAbs + 1353 D1:C467 ex de, hl + 1354 D1:C467 sbc hl, hl + 1355 D1:C467 sbc hl, de + 1356 D1:C467 vxProjectXAbs: + 1357 D1:C467 rla + 1358 D1:C467 sbc hl, bc + 1359 D1:C467 jr nc, vxProjectClipX + 1360 D1:C467 add hl, bc + 1361 D1:C467 + 1362 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1363 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1364 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1365 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1366 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1367 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1368 D1:C467 add hl,hl \ sbc hl,bc \ jr nc,$+3 \ add hl,bc \ adc a,a + 1369 D1:C467 add hl,hl \ sbc hl,bc \ adc a,a + 1370 D1:C467 cpl + 1371 D1:C467 ld c, a + 1372 D1:C467 ld b, VX_SCREEN_WIDTH/2+1 + 1373 D1:C467 mlt bc + 1374 D1:C467 ld a, b + 1375 D1:C467 sbc hl, hl + 1376 D1:C467 jr nc, $+3 + 1377 D1:C467 cpl + 1378 D1:C467 ld l, a + 1379 D1:C467 ld bc, VX_SCREEN_WCENTER + 1380 D1:C467 adc hl, bc + 1381 D1:C467 pop bc ; grab y in b + 1382 D1:C467 xor a,a + 1383 D1:C467 ret + 1384 D1:C467 vxProjectClipX: + 1385 D1:C467 pop bc + 1386 D1:C467 rrca + 1387 D1:C467 ccf + 1388 D1:C467 rra + 1389 D1:C467 bit 7,(iy+8+7) + 1390 D1:C467 ret z + 1391 D1:C467 or %00001000 + 1392 D1:C467 ret + 1393 D1:C467 Monitor_Size_End: + 1394 D1:C467 .echo Monitor_Size_End-Monitor_Size_Start + 1395 D1:C467 #endcomment +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" + 9 D1:C467 - - - - #include "vxMemory.ez80" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMemory.ez80" + 1 D1:C467 - - - - #define VX_RLE_COMPRESSED %01000000 + 2 D1:C467 - - - - #define VX_ERROR_NOT_FOUND $FF + 3 D1:C467 - - - - #define VX_ERROR_RAM_FULL $FE + 4 D1:C467 - - - - + 5 D1:C467 - - - - vxFindFile: + 6 D1:C467 - - - - ; load a file from an appv + 7 D1:C467 - - - - ; hl : file name + 8 D1:C467 - - - - ; hl = file adress + 9 D1:C467 - - - - ; if error : c set, a = error code + 10 D1:C467 CD 20 03 02 call _mov9toOP1 + 11 D1:C46B CD 0C 05 02 call _ChkFindSym + 12 D1:C46F D8 - - - ret c + 13 D1:C470 CD 98 1F 02 call _ChkInRam + 14 D1:C474 EB - - - ex de,hl + 15 D1:C475 28 08 - - jr z, vxFileUnarchived + 16 D1:C477 - - - - ; 9 bytes - name size (1b), name string, appv size (2b) + 17 D1:C477 11 09 00 00 ld de, 9 + 18 D1:C47B 19 - - - add hl, de + 19 D1:C47C 5E - - - ld e, (hl) + 20 D1:C47D 19 - - - add hl, de + 21 D1:C47E 23 - - - inc hl + 22 D1:C47F - - - - vxFileUnarchived: + 23 D1:C47F 23 - - - inc hl + 24 D1:C480 23 - - - inc hl + 25 D1:C481 C9 - - - ret + 26 D1:C482 - - - - #comment + 27 D1:C482 vxAllocateMemory: + 28 D1:C482 ; error = c + 29 D1:C482 push bc + 30 D1:C482 ld ix, vxTempMemoryBlock + 31 D1:C482 ld hl, (ix+3) + 32 D1:C482 inc hl + 33 D1:C482 ld (ix+3), hl + 34 D1:C482 lea hl, ix-1 + 35 D1:C482 call _mov9toOP1 + 36 D1:C482 pop hl + 37 D1:C482 ld a, 16h + 38 D1:C482 call _CreateVar + 39 D1:C482 inc de + 40 D1:C482 inc de + 41 D1:C482 ex de, hl + 42 D1:C482 ret + 43 D1:C482 vxTempMemoryBlock: + 44 D1:C482 .db "VMB000",0 + 45 D1:C482 vxCopyImage: + 46 D1:C482 ; hl = src ; de = dest + 47 D1:C482 ld a, (hl) + 48 D1:C482 ; a = src format + 49 D1:C482 inc hl + 50 D1:C482 ld bc, (hl) + 51 D1:C482 dec hl + 52 D1:C482 ; mlt bc + 53 D1:C482 ld bc, 240*320 + 54 D1:C482 push bc + 55 D1:C482 ld bc, 3 + 56 D1:C482 ldir + 57 D1:C482 pop bc + 58 D1:C482 #endcomment + 59 D1:C482 - - - - + 60 D1:C482 - - - - vxCopyImage: + 61 D1:C482 - - - - ; hl : src + 62 D1:C482 - - - - ; de : dest + 63 D1:C482 - - - - ; copy an framebuffer type image, compressed or not + 64 D1:C482 - - - - ; 1 byte - type, 3 bytes - size + 65 D1:C482 ED 07 - - ld bc, (hl) + 66 D1:C484 23 23 23 - inc hl \ inc hl \ inc hl + 67 D1:C487 7E - - - ld a, (hl) + 68 D1:C488 23 - - - inc hl + 69 D1:C489 ED 64 40 - tst a, VX_RLE_COMPRESSED + 70 D1:C48C 20 03 - - jr nz, vxUncompressRLE + 71 D1:C48E - - - - vxCopyData: + 72 D1:C48E ED B0 - - ldir + 73 D1:C490 C9 - - - ret + 74 D1:C491 - - - - vxUncompressRLE: + 75 D1:C491 D5 - - - push de + 76 D1:C492 EB - - - ex de, hl + 77 D1:C493 09 - - - add hl, bc + 78 D1:C494 22 9B C4 D1 ld (VX_MAX_RLE), hl + 79 D1:C498 EB - - - ex de, hl + 80 D1:C499 D1 - - - pop de + 81 D1:C49A - - - - vxRLELoop: + 82 D1:C49A - - - - VX_MAX_RLE=$+1 + 83 D1:C49A 01 00 00 00 ld bc, $0 + 84 D1:C49E EB - - - ex de, hl + 85 D1:C49F B7 - - - or a, a + 86 D1:C4A0 ED 42 - - sbc hl, bc + 87 D1:C4A2 D0 - - - ret nc + 88 D1:C4A3 09 - - - add hl, bc + 89 D1:C4A4 EB - - - ex de, hl + 90 D1:C4A5 01 00 00 00 ld bc, 0 + 91 D1:C4A9 7E - - - ld a, (hl) + 92 D1:C4AA E6 7F - - and $7F + 93 D1:C4AC 3C - - - inc a + 94 D1:C4AD 4F - - - ld c, a + 95 D1:C4AE 7E - - - ld a, (hl) + 96 D1:C4AF E6 80 - - and $80 + 97 D1:C4B1 28 14 - - jr z, vxRLECopyRow + 98 D1:C4B3 - - - - vxRLECopyToken: + 99 D1:C4B3 23 - - - inc hl + 100 D1:C4B4 E5 - - - push hl + 101 D1:C4B5 ED A0 - - ldi + 102 D1:C4B7 E2 C1 C4 D1 jp po, vxRLECopyEnd + 103 D1:C4BB 37 - - - scf + 104 D1:C4BC ED 62 - - sbc hl, hl + 105 D1:C4BE 19 - - - add hl, de + 106 D1:C4BF ED B0 - - ldir + 107 D1:C4C1 - - - - vxRLECopyEnd: + 108 D1:C4C1 E1 - - - pop hl + 109 D1:C4C2 23 - - - inc hl + 110 D1:C4C3 C3 9A C4 D1 jp vxRLELoop + 111 D1:C4C7 - - - - vxRLECopyRow: + 112 D1:C4C7 23 - - - inc hl + 113 D1:C4C8 ED B0 - - ldir + 114 D1:C4CA C3 9A C4 D1 jp vxRLELoop + 115 D1:C4CE - - - - + 116 D1:C4CE - - - - vxCreateMemoryPool: + 117 D1:C4CE F3 - - - di + 118 D1:C4CF 3E D1 - - ld a, $D1 + 119 D1:C4D1 - - - - ;ld mb,a + 120 D1:C4D1 ED 6D - - .db $ED,$6D ; assembler bug + 121 D1:C4D3 40 31 7E 98 ld.sis sp,$987E + 122 D1:C4D7 49 CD 52 C5 call.is vxUnlockWrite - $D10000 + 123 D1:C4DB 3E D0 - - ld a,$D0 + 124 D1:C4DD - - - - ;ld mb,a + 125 D1:C4DD ED 6D - - .db $ED,$6D + 126 D1:C4DF - - - - + 127 D1:C4DF 3E 3F - - ld a, $3F + 128 D1:C4E1 CD 1E C5 D1 call vxMemorySafeErase + 129 D1:C4E5 3E 3E - - ld a, $3E + 130 D1:C4E7 CD 1E C5 D1 call vxMemorySafeErase + 131 D1:C4EB 3E 3D - - ld a, $3D + 132 D1:C4ED CD 1E C5 D1 call vxMemorySafeErase + 133 D1:C4F1 3E 3C - - ld a, $3C + 134 D1:C4F3 CD 1E C5 D1 call vxMemorySafeErase + 135 D1:C4F7 - - - - + 136 D1:C4F7 21 01 00 D0 ld hl, $D00001 + 137 D1:C4FB 36 A5 - - ld (hl), $A5 + 138 D1:C4FD 2B - - - dec hl + 139 D1:C4FE 36 5A - - ld (hl), $5A + 140 D1:C500 11 00 00 3C ld de, $3C0000 + 141 D1:C504 01 00 00 04 ld bc, $40000 + 142 D1:C508 - - - - + 143 D1:C508 CD E0 02 00 call __WriteFlash + 144 D1:C50C - - - - + 145 D1:C50C F3 - - - di + 146 D1:C50D 40 31 7E 98 ld.sis sp,$987E + 147 D1:C511 3E D1 - - ld a, $D1 + 148 D1:C513 - - - - ;ld mb,a + 149 D1:C513 ED 6D - - .db $ED,$6D ; assembler bug + 150 D1:C515 49 CD 65 C5 call.is vxLockWrite - $D10000 + 151 D1:C519 3E D0 - - ld a,$D0 + 152 D1:C51B - - - - ;ld mb,a + 153 D1:C51B ED 6D - - .db $ED,$6D + 154 D1:C51D - - - - ; all RAM is free now + 155 D1:C51D - - - - + 156 D1:C51D C9 - - - ret + 157 D1:C51E - - - - + 158 D1:C51E - - - - vxMemorySafeErase: + 159 D1:C51E 01 F8 00 00 ld bc,$0000F8 + 160 D1:C522 C5 - - - push bc + 161 D1:C523 C3 DC 02 00 jp __EraseFlashPage + 162 D1:C527 - - - - vxDestroyMemoryPool: + 163 D1:C527 - - - - + 164 D1:C527 - - - - ; restore RAM state + 165 D1:C527 21 00 00 3C ld hl, $3C0000 + 166 D1:C52B 11 00 00 D0 ld de, $D00000 + 167 D1:C52F 01 00 00 01 ld bc, $010000 + 168 D1:C533 ED B0 - - ldir + 169 D1:C535 - - - - + 170 D1:C535 - - - - ; ld hl, $3D0000 + 171 D1:C535 - - - - ; ld de, $D10000 + 172 D1:C535 - - - - ; ld bc, $010000 + 173 D1:C535 - - - - ; ldir + 174 D1:C535 - - - - + 175 D1:C535 21 00 00 3E ld hl, $3E0000 + 176 D1:C539 11 00 00 D2 ld de, $D20000 + 177 D1:C53D 01 00 00 01 ld bc, $010000 + 178 D1:C541 ED B0 - - ldir + 179 D1:C543 - - - - + 180 D1:C543 21 00 00 3F ld hl, $3F0000 + 181 D1:C547 11 00 00 D3 ld de, $D30000 + 182 D1:C54B 01 00 00 01 ld bc, $010000 + 183 D1:C54F ED B0 - - ldir + 184 D1:C551 - - - - + 185 D1:C551 C9 - - - ret + 186 D1:C552 - - - - .assume ADL=0 + 187 D1:C552 - - - - vxUnlockWrite: + 188 D1:C552 - - - - + 189 D1:C552 3E 8C - - ld a, $8C + 190 D1:C554 ED 39 24 - out0 ($24), a + 191 D1:C557 0E 04 - - ld c, 4 + 192 D1:C559 ED 38 06 - in0 a, (6) + 193 D1:C55C B1 - - - or c + 194 D1:C55D ED 39 06 - out0 (6), a + 195 D1:C560 ED 09 28 - out0($28), c + 196 D1:C563 - - - - + 197 D1:C563 49 C9 - - ret.l + 198 D1:C565 - - - - + 199 D1:C565 - - - - vxLockWrite: + 200 D1:C565 AF - - - xor a, a + 201 D1:C566 ED 39 28 - out0 ($28), a + 202 D1:C569 ED 38 06 - in0 a, (6) + 203 D1:C56C CB 97 - - res 2, a + 204 D1:C56E ED 39 06 - out0 (6), a + 205 D1:C571 3E 88 - - ld a, $88 + 206 D1:C573 ED 39 24 - out0 ($24), a + 207 D1:C576 49 C9 - - ret.l + 208 D1:C578 - - - - .assume ADL=1 + 209 D1:C578 - - - - + 210 D1:C578 - - - - vxZX7Uncompress: + 211 D1:C578 - - - - ; Routine copied from the C toolchain & speed optimized + 212 D1:C578 - - - - ; Input: + 213 D1:C578 - - - - ; HL = compressed data pointer + 214 D1:C578 - - - - ; DE = output data pointer + 215 D1:C578 3E 80 - - ld a, 128 + 216 D1:C57A - - - - + 217 D1:C57A - - - - dzx7t_copy_byte_loop: + 218 D1:C57A - - - - + 219 D1:C57A ED A0 - - ldi ; copy literal byte + 220 D1:C57C - - - - + 221 D1:C57C - - - - dzx7t_main_loop: + 222 D1:C57C - - - - + 223 D1:C57C 87 - - - add a, a ; check next bit + 224 D1:C57D 20 03 7E 23 + 17 - - - jr nz,$+5 \ ld a,(hl) \ inc hl \ rla + 225 D1:C582 30 F6 - - jr nc, dzx7t_copy_byte_loop ; next bit indicates either literal or sequence + 226 D1:C584 - - - - + 227 D1:C584 - - - - ; determine number of bits used for length (Elias gamma coding) + 228 D1:C584 - - - - + 229 D1:C584 D5 - - - push de + 230 D1:C585 11 00 00 00 ld de, 0 + 231 D1:C589 01 01 00 00 ld bc, 1 + 232 D1:C58D - - - - + 233 D1:C58D - - - - dzx7t_len_size_loop: + 234 D1:C58D - - - - + 235 D1:C58D 14 - - - inc d + 236 D1:C58E 87 - - - add a, a ; check next bit + 237 D1:C58F 20 03 7E 23 + 17 - - - jr nz,$+5 \ ld a,(hl) \ inc hl \ rla + 238 D1:C594 30 F7 - - jr nc, dzx7t_len_size_loop + 239 D1:C596 C3 A6 C5 D1 jp dzx7t_len_value_start + 240 D1:C59A - - - - + 241 D1:C59A - - - - ; determine length + 242 D1:C59A - - - - + 243 D1:C59A - - - - dzx7t_len_value_loop: + 244 D1:C59A - - - - + 245 D1:C59A 87 - - - add a, a ; check next bit + 246 D1:C59B 20 03 7E 23 + 17 - - - jr nz,$+5 \ ld a,(hl) \ inc hl \ rla + 247 D1:C5A0 CB 11 - - rl c + 248 D1:C5A2 CB 10 - - rl b + 249 D1:C5A4 38 36 - - jr c, dzx7t_exit ; check end marker + 250 D1:C5A6 - - - - + 251 D1:C5A6 - - - - dzx7t_len_value_start: + 252 D1:C5A6 - - - - + 253 D1:C5A6 15 - - - dec d + 254 D1:C5A7 20 F1 - - jr nz, dzx7t_len_value_loop + 255 D1:C5A9 03 - - - inc bc ; adjust length + 256 D1:C5AA - - - - + 257 D1:C5AA - - - - ; determine offset + 258 D1:C5AA - - - - + 259 D1:C5AA 5E - - - ld e, (hl) ; load offset flag (1 bit) + offset value (7 bits) + 260 D1:C5AB 23 - - - inc hl + 261 D1:C5AC - - - - + 262 D1:C5AC CB 23 - - sla e + 263 D1:C5AE 1C - - - inc e + 264 D1:C5AF - - - - + 265 D1:C5AF 30 22 - - jr nc, dzx7t_offset_end ; if offset flag is set, load 4 extra bits + 266 D1:C5B1 87 - - - add a, a ; check next bit + 267 D1:C5B2 20 03 7E 23 + 17 - - - jr nz,$+5 \ ld a,(hl) \ inc hl \ rla + 268 D1:C5B7 CB 12 - - rl d ; insert first bit into D + 269 D1:C5B9 87 - - - add a, a ; check next bit + 270 D1:C5BA 20 03 7E 23 + 17 - - - jr nz,$+5 \ ld a,(hl) \ inc hl \ rla + 271 D1:C5BF CB 12 - - rl d ; insert second bit into D + 272 D1:C5C1 87 - - - add a, a ; check next bit + 273 D1:C5C2 20 03 7E 23 + 17 - - - jr nz,$+5 \ ld a,(hl) \ inc hl \ rla + 274 D1:C5C7 CB 12 - - rl d ; insert third bit into D + 275 D1:C5C9 87 - - - add a, a ; check next bit + 276 D1:C5CA 20 03 7E 23 + 17 - - - jr nz,$+5 \ ld a,(hl) \ inc hl \ rla + 277 D1:C5CF 3F - - - ccf + 278 D1:C5D0 38 01 - - jr c, dzx7t_offset_end + 279 D1:C5D2 14 - - - inc d ; equivalent to adding 128 to DE + 280 D1:C5D3 - - - - + 281 D1:C5D3 - - - - dzx7t_offset_end: + 282 D1:C5D3 - - - - + 283 D1:C5D3 CB 1B - - rr e ; insert inverted fourth bit into E + 284 D1:C5D5 - - - - + 285 D1:C5D5 - - - - ; copy previous sequence + 286 D1:C5D5 - - - - + 287 D1:C5D5 E3 - - - ex (sp), hl ; store source, restore destination + 288 D1:C5D6 E5 - - - push hl ; store destination + 289 D1:C5D7 ED 52 - - sbc hl, de ; HL = destination - offset - 1 + 290 D1:C5D9 D1 - - - pop de ; DE = destination + 291 D1:C5DA ED B0 - - ldir + 292 D1:C5DC - - - - + 293 D1:C5DC - - - - dzx7t_exit: + 294 D1:C5DC - - - - + 295 D1:C5DC E1 - - - pop hl ; restore source address (compressed data) + 296 D1:C5DD 30 9D - - jr nc, dzx7t_main_loop + 297 D1:C5DF C9 - - - ret +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" + 10 D1:C5E0 - - - - #include "vxPostProcessing.ez80" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPostProcessing.ez80" + 1 D1:C5E0 - - - - #macro blend50() + 2 D1:C5E0 ld c, (hl) + 3 D1:C5E0 push af + 4 D1:C5E0 ld d, a + 5 D1:C5E0 and c + 6 D1:C5E0 and VX_COLOR_LOW_BIT + 7 D1:C5E0 ld e, a + 8 D1:C5E0 ld a, d + 9 D1:C5E0 and ~VX_COLOR_LOW_BIT + 10 D1:C5E0 ld d, a + 11 D1:C5E0 ld a, c + 12 D1:C5E0 and ~VX_COLOR_LOW_BIT + 13 D1:C5E0 add a, d + 14 D1:C5E0 rra + 15 D1:C5E0 add a, e + 16 D1:C5E0 ld (hl), a + 17 D1:C5E0 pop af + 18 D1:C5E0 #endmacro + 19 D1:C5E0 - - - - + 20 D1:C5E0 - - - - #macro blend25() + 21 D1:C5E0 ld c, (hl) + 22 D1:C5E0 push af + 23 D1:C5E0 push af + 24 D1:C5E0 ld d, a + 25 D1:C5E0 and c + 26 D1:C5E0 and VX_COLOR_LOW_BIT + 27 D1:C5E0 ld e, a + 28 D1:C5E0 ld a, d + 29 D1:C5E0 and ~VX_COLOR_LOW_BIT + 30 D1:C5E0 ld d, a + 31 D1:C5E0 ld a, c + 32 D1:C5E0 and ~VX_COLOR_LOW_BIT + 33 D1:C5E0 add a, d + 34 D1:C5E0 rra + 35 D1:C5E0 add a, e + 36 D1:C5E0 ; take A, blend it with initial color + 37 D1:C5E0 ld c, a + 38 D1:C5E0 pop af + 39 D1:C5E0 ld d, a + 40 D1:C5E0 and c + 41 D1:C5E0 and VX_COLOR_LOW_BIT + 42 D1:C5E0 ld e, a + 43 D1:C5E0 ld a, d + 44 D1:C5E0 and ~VX_COLOR_LOW_BIT + 45 D1:C5E0 ld d, a + 46 D1:C5E0 ld a, c + 47 D1:C5E0 and ~VX_COLOR_LOW_BIT + 48 D1:C5E0 add a, d + 49 D1:C5E0 rra + 50 D1:C5E0 add a, e + 51 D1:C5E0 ld (hl), a + 52 D1:C5E0 pop af + 53 D1:C5E0 #endmacro + 54 D1:C5E0 - - - - + 55 D1:C5E0 - - - - + 56 D1:C5E0 - - - - ; a is the color to bloomify + 57 D1:C5E0 - - - - vxBloomFilter: + 58 D1:C5E0 01 00 2C 01 ld bc, 76800 + 59 D1:C5E4 2A 14 00 E3 ld hl, (vxFramebuffer) + 60 D1:C5E8 - - - - vxBloomLoop: + 61 D1:C5E8 ED B1 - - cpir + 62 D1:C5EA E0 - - - ret po + 63 D1:C5EB E5 - - - push hl + 64 D1:C5EC C5 - - - push bc + 65 D1:C5ED - - - - ;; call vxOptimizedKernel + 66 D1:C5ED - - - - + 67 D1:C5ED - - - - vxOptimizedKernel: + 68 D1:C5ED - - - - ; (32,16,32) + 69 D1:C5ED - - - - ; (16,00,16) + 70 D1:C5ED - - - - ; (32,16,32) + 71 D1:C5ED 11 BE FE FF ld de, -320-2 + 72 D1:C5F1 19 - - - add hl, de + 73 D1:C5F2 11 C1 FE FF ld de, -320+1 + 74 D1:C5F6 19 - - - add hl, de + 75 D1:C5F7 - - - - + 76 D1:C5F7 BE - - - cp (hl) + 77 D1:C5F8 28 13 - - jr z, p1x + 78 D1:C5FA 4E F5 57 A1 + E6 29 5F 7A + E6 D6 57 79 + E6 D6 82 1F + 83 77 F1 - blend50 +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPostProcessing.ez80" + 79 D1:C60D - - - - p1x: + 80 D1:C60D 11 3F 01 00 ld de, 320-1 + 81 D1:C611 19 - - - add hl, de + 82 D1:C612 - - - - + 83 D1:C612 - - - - + 84 D1:C612 BE - - - cp (hl) + 85 D1:C613 28 13 - - jr z, px + 86 D1:C615 4E F5 57 A1 + E6 29 5F 7A + E6 D6 57 79 + E6 D6 82 1F + 83 77 F1 - blend50 + 87 D1:C628 - - - - px: + 88 D1:C628 23 - - - inc hl + 89 D1:C629 BE - - - cp (hl) + 90 D1:C62A 28 25 - - jr z, p1 + 91 D1:C62C 4E F5 F5 57 + A1 E6 29 5F + 7A E6 D6 57 + 79 E6 D6 82 + 1F 83 4F F1 + 57 A1 E6 29 + 5F 7A E6 D6 + 57 79 E6 D6 + 82 1F 83 77 + F1 - - - blend25 + 92 D1:C651 - - - - p1: + 93 D1:C651 23 - - - inc hl + 94 D1:C652 BE - - - cp (hl) + 95 D1:C653 28 13 - - jr z, p2 + 96 D1:C655 4E F5 57 A1 + E6 29 5F 7A + E6 D6 57 79 + E6 D6 82 1F + 83 77 F1 - blend50 + 97 D1:C668 - - - - p2: + 98 D1:C668 11 3D 01 00 ld de, 320-3 + 99 D1:C66C 19 - - - add hl, de + 100 D1:C66D - - - - + 101 D1:C66D BE - - - cp (hl) + 102 D1:C66E 28 13 - - jr z, p3x + 103 D1:C670 4E F5 57 A1 + E6 29 5F 7A + E6 D6 57 79 + E6 D6 82 1F + 83 77 F1 - blend50 + 104 D1:C683 - - - - p3x: + 105 D1:C683 23 - - - inc hl + 106 D1:C684 - - - - + 107 D1:C684 BE - - - cp (hl) + 108 D1:C685 28 25 - - jr z, p3 + 109 D1:C687 4E F5 F5 57 + A1 E6 29 5F + 7A E6 D6 57 + 79 E6 D6 82 + 1F 83 4F F1 + 57 A1 E6 29 + 5F 7A E6 D6 + 57 79 E6 D6 + 82 1F 83 77 + F1 - - - blend25 + 110 D1:C6AC - - - - p3: + 111 D1:C6AC 23 - - - inc hl + 112 D1:C6AD 77 - - - ld (hl), a + 113 D1:C6AE 23 - - - inc hl + 114 D1:C6AF BE - - - cp (hl) + 115 D1:C6B0 28 25 - - jr z, p5 + 116 D1:C6B2 4E F5 F5 57 + A1 E6 29 5F + 7A E6 D6 57 + 79 E6 D6 82 + 1F 83 4F F1 + 57 A1 E6 29 + 5F 7A E6 D6 + 57 79 E6 D6 + 82 1F 83 77 + F1 - - - blend25 + 117 D1:C6D7 - - - - p5: + 118 D1:C6D7 - - - - + 119 D1:C6D7 23 - - - inc hl + 120 D1:C6D8 BE - - - cp (hl) + 121 D1:C6D9 28 13 - - jr z, p5x + 122 D1:C6DB 4E F5 57 A1 + E6 29 5F 7A + E6 D6 57 79 + E6 D6 82 1F + 83 77 F1 - blend50 + 123 D1:C6EE - - - - p5x: + 124 D1:C6EE - - - - + 125 D1:C6EE 11 3D 01 00 ld de, 320-3 + 126 D1:C6F2 19 - - - add hl, de + 127 D1:C6F3 BE - - - cp (hl) + 128 D1:C6F4 28 13 - - jr z, p6 + 129 D1:C6F6 4E F5 57 A1 + E6 29 5F 7A + E6 D6 57 79 + E6 D6 82 1F + 83 77 F1 - blend50 + 130 D1:C709 - - - - p6: + 131 D1:C709 23 - - - inc hl + 132 D1:C70A BE - - - cp (hl) + 133 D1:C70B 28 25 - - jr z, p7 + 134 D1:C70D 4E F5 F5 57 + A1 E6 29 5F + 7A E6 D6 57 + 79 E6 D6 82 + 1F 83 4F F1 + 57 A1 E6 29 + 5F 7A E6 D6 + 57 79 E6 D6 + 82 1F 83 77 + F1 - - - blend25 + 135 D1:C732 - - - - p7: + 136 D1:C732 23 - - - inc hl + 137 D1:C733 BE - - - cp (hl) + 138 D1:C734 28 13 - - jr z, p8 + 139 D1:C736 4E F5 57 A1 + E6 29 5F 7A + E6 D6 57 79 + E6 D6 82 1F + 83 77 F1 - blend50 + 140 D1:C749 - - - - p8: + 141 D1:C749 - - - - + 142 D1:C749 11 3F 01 00 ld de, 320-1 + 143 D1:C74D 19 - - - add hl, de + 144 D1:C74E BE - - - cp (hl) + 145 D1:C74F 28 13 - - jr z, p8x + 146 D1:C751 4E F5 57 A1 + E6 29 5F 7A + E6 D6 57 79 + E6 D6 82 1F + 83 77 F1 - blend50 + 147 D1:C764 - - - - p8x: + 148 D1:C764 - - - - + 149 D1:C764 C1 - - - pop bc + 150 D1:C765 E1 - - - pop hl + 151 D1:C766 C3 E8 C5 D1 jp vxBloomLoop + 152 D1:C76A - - - - ;; ret + 153 D1:C76A - - - - + 154 D1:C76A - - - - ;vxGaussianKernel5x5: + 155 D1:C76A - - - - ; (40,36,34,36,40) + 156 D1:C76A - - - - ; (36,24,20,24,36) + 157 D1:C76A - - - - ; (34,20,00**,20,34) + 158 D1:C76A - - - - ; (36,24,20,24,36) + 159 D1:C76A - - - - ; (40,36,34,36,40) + 160 D1:C76A - - - - + 161 D1:C76A - - - - + 162 D1:C76A - - - - + 163 D1:C76A - - - - + 164 D1:C76A - - - - + 165 D1:C76A - - - - vxConvolveBlur: + 166 D1:C76A - - - - ; blur a little the screen using following convolution matrix : + 167 D1:C76A - - - - ; 0 : 0 : 0 + 168 D1:C76A - - - - ; 0 : 2 : 1 + 169 D1:C76A - - - - ; 0 : 1 : 0 + 170 D1:C76A 2A 14 00 E3 ld hl, (vxFramebuffer) + 171 D1:C76E 01 FF 00 00 ld bc, 255 + 172 D1:C772 - - - - VXBLURLOOP: + 173 D1:C772 C5 - - - push bc + 174 D1:C773 46 - - - ld b, (hl) + 175 D1:C774 23 - - - inc hl + 176 D1:C775 4E - - - ld c, (hl) + 177 D1:C776 - - - - + 178 D1:C776 78 - - - ld a, b + 179 D1:C777 A1 - - - and c + 180 D1:C778 E6 29 - - and VX_COLOR_LOW_BIT + 181 D1:C77A 5F - - - ld e, a + 182 D1:C77B 78 - - - ld a, b + 183 D1:C77C E6 D6 - - and ~VX_COLOR_LOW_BIT + 184 D1:C77E 57 - - - ld d, a + 185 D1:C77F 79 - - - ld a, c + 186 D1:C780 E6 D6 - - and ~VX_COLOR_LOW_BIT + 187 D1:C782 82 - - - add a, d + 188 D1:C783 1F - - - rra + 189 D1:C784 83 - - - add a, e + 190 D1:C785 2B - - - dec hl + 191 D1:C786 77 - - - ld (hl), a + 192 D1:C787 - - - - + 193 D1:C787 C1 - - - pop bc + 194 D1:C788 23 - - - inc hl + 195 D1:C789 10 E7 - - djnz VXBLURLOOP + 196 D1:C78B 0D - - - dec c + 197 D1:C78C C2 72 C7 D1 jp nz, VXBLURLOOP + 198 D1:C790 C9 - - - ret + 199 D1:C791 - - - - + 200 D1:C791 - - - - + 201 D1:C791 - - - - + 202 D1:C791 - - - - + 203 D1:C791 - - - - #comment + 204 D1:C791 inc hl + 205 D1:C791 ld c, (hl) + 206 D1:C791 ld de, 320 + 207 D1:C791 add hl, de + 208 D1:C791 ld b, (hl) + 209 D1:C791 scf + 210 D1:C791 sbc hl, de + 211 D1:C791 ; blend50 + 212 D1:C791 + 213 D1:C791 ld a, b + 214 D1:C791 and c + 215 D1:C791 and VX_COLOR_LOW_BIT + 216 D1:C791 ld e, a + 217 D1:C791 ld a, b + 218 D1:C791 and ~VX_COLOR_LOW_BIT + 219 D1:C791 ld d, a + 220 D1:C791 ld a, c + 221 D1:C791 and ~VX_COLOR_LOW_BIT + 222 D1:C791 add a, d + 223 D1:C791 rra + 224 D1:C791 add a, e + 225 D1:C791 ld c, (hl) + 226 D1:C791 ld b, a + 227 D1:C791 + 228 D1:C791 ld a, b + 229 D1:C791 and c + 230 D1:C791 and VX_COLOR_LOW_BIT + 231 D1:C791 ld e, a + 232 D1:C791 ld a, b + 233 D1:C791 and ~VX_COLOR_LOW_BIT + 234 D1:C791 ld d, a + 235 D1:C791 ld a, c + 236 D1:C791 and ~VX_COLOR_LOW_BIT + 237 D1:C791 add a, d + 238 D1:C791 rra + 239 D1:C791 add a, e + 240 D1:C791 + 241 D1:C791 ld (hl), a + 242 D1:C791 + 243 D1:C791 #endcomment +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" + 11 D1:C791 - - - - #include "vxImage.ez80" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxImage.ez80" + 1 D1:C791 - - - - vxImageSubCopy: + 2 D1:C791 - - - - ; hl : org, bc : rect size, de : copy + 3 D1:C791 C5 - - - push bc + 4 D1:C792 01 00 00 D3 ld bc, $D30000 + 5 D1:C796 09 - - - add hl, bc + 6 D1:C797 EB - - - ex de, hl + 7 D1:C798 09 - - - add hl, bc + 8 D1:C799 EB - - - ex de, hl + 9 D1:C79A C1 - - - pop bc + 10 D1:C79B 78 - - - ld a, b + 11 D1:C79C 06 00 - - ld b, 0 + 12 D1:C79E - - - - ; ready to copy + 13 D1:C79E - - - - vxCopyLoop: + 14 D1:C79E C5 - - - push bc + 15 D1:C79F D5 - - - push de + 16 D1:C7A0 E5 - - - push hl + 17 D1:C7A1 ED B0 - - ldir + 18 D1:C7A3 E1 - - - pop hl + 19 D1:C7A4 D1 - - - pop de + 20 D1:C7A5 C1 - - - pop bc + 21 D1:C7A6 24 - - - inc h + 22 D1:C7A7 14 - - - inc d + 23 D1:C7A8 3D - - - dec a + 24 D1:C7A9 20 F3 - - jr nz, vxCopyLoop + 25 D1:C7AB C9 - - - ret + 26 D1:C7AC - - - - vxTestAABB: + 27 D1:C7AC - - - - + 28 D1:C7AC C9 - - - ret + 29 D1:C7AD - - - - vxMipmapLOD: + 30 D1:C7AD - - - - ; vec2 dx_vtc = dFdx; + 31 D1:C7AD - - - - ; vec2 dy_vtc = dFdy; + 32 D1:C7AD - - - - ; float delta_max_sqr = max(dot(dx_vtc, dx_vtc), dot(dy_vtc, dy_vtc)); + 33 D1:C7AD - - - - ; return 0.5 * log2(delta_max_sqr) + 34 D1:C7AD 3A FD FF FF ld a, (VX_FDUDX+1) ;dudx+1 + 35 D1:C7B1 CB 7F 28 02 + ED 44 - - bit 7, a \ jr z, $+4 \ neg + 36 D1:C7B7 6F - - - ld l, a + 37 D1:C7B8 67 - - - ld h, a + 38 D1:C7B9 ED 6C - - mlt hl + 39 D1:C7BB 3A FB FF FF ld a, (VX_FDVDX+1) ;dvdx+1 + 40 D1:C7BF CB 7F 28 02 + ED 44 - - bit 7, a \ jr z, $+4 \ neg + 41 D1:C7C5 57 - - - ld d, a + 42 D1:C7C6 5F - - - ld e, a + 43 D1:C7C7 ED 5C - - mlt de + 44 D1:C7C9 19 - - - add hl, de + 45 D1:C7CA E5 - - - push hl + 46 D1:C7CB 3A F7 FF FF ld a, (VX_FDUDY+1) ;dudy+1 + 47 D1:C7CF CB 7F 28 02 + ED 44 - - bit 7, a \ jr z, $+4 \ neg + 48 D1:C7D5 6F - - - ld l, a + 49 D1:C7D6 67 - - - ld h, a + 50 D1:C7D7 ED 6C - - mlt hl + 51 D1:C7D9 3A F5 FF FF ld a, (VX_FDVDY+1) ;dvdy+1 + 52 D1:C7DD CB 7F 28 02 + ED 44 - - bit 7, a \ jr z, $+4 \ neg + 53 D1:C7E3 57 - - - ld d, a + 54 D1:C7E4 5F - - - ld e, a + 55 D1:C7E5 ED 5C - - mlt de + 56 D1:C7E7 19 - - - add hl, de + 57 D1:C7E8 D1 - - - pop de + 58 D1:C7E9 - - - - ; max(hl,de) + 59 D1:C7E9 B7 - - - or a, a + 60 D1:C7EA ED 52 - - sbc hl, de + 61 D1:C7EC 19 - - - add hl, de + 62 D1:C7ED 30 01 - - jr nc, $+3 + 63 D1:C7EF EB - - - ex de, hl + 64 D1:C7F0 20 01 - - jr nz, $+3 + 65 D1:C7F2 23 - - - inc hl + 66 D1:C7F3 - - - - ; compute log2 + 67 D1:C7F3 3E 10 - - ld a,16 + 68 D1:C7F5 37 - - - scf + 69 D1:C7F6 - - - - __LogLoop: + 70 D1:C7F6 52 ED 6A - adc.s hl,hl + 71 D1:C7F9 3D - - - dec a + 72 D1:C7FA 30 FA - - jr nc,__LogLoop + 73 D1:C7FC - - - - ; result is between [-1;15] + 74 D1:C7FC - - - - ; 256x256 texture have 9 mipmap levels. + 75 D1:C7FC CB 3F - - srl a ; remap to [0-8] + 76 D1:C7FE - - - - ; clamp the result to [0-8] + 77 D1:C7FE - - - - ; correspondance : + 78 D1:C7FE - - - - ; 256x256 : 0 + 79 D1:C7FE - - - - ; 128x128 : 1 + 80 D1:C7FE - - - - ; 64x 64 : 2 + 81 D1:C7FE - - - - ; 32x 32 : 3 + 82 D1:C7FE - - - - ; 16x 16 : 4 + 83 D1:C7FE - - - - ; 8x 8 : 5 + 84 D1:C7FE - - - - ; 4x 4 : 6 + 85 D1:C7FE - - - - ; 2x 2 : 7 + 86 D1:C7FE - - - - ; 1x 1 : 8 + 87 D1:C7FE C9 - - - ret +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" + 12 D1:C7FF - - - - #include "vxShaderInterpolation.ez80" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolation.ez80" + 1 D1:C7FF - - - - ;; BUG :: inside du/dy and dv/dy compute + 2 D1:C7FF - - - - + 3 D1:C7FF - - - - #define VX_REGISTER_Y0 -32+0 + 4 D1:C7FF - - - - #define VX_REGISTER_X0 -32+1 + 5 D1:C7FF - - - - #define VX_REGISTER_U0 -32+3 + 6 D1:C7FF - - - - #define VX_REGISTER_V0 -32+4 + 7 D1:C7FF - - - - #define VX_REGISTER_C0 -32+5 + 8 D1:C7FF - - - - #define VX_REGISTER_Y1 -26+0 + 9 D1:C7FF - - - - #define VX_REGISTER_X1 -26+1 + 10 D1:C7FF - - - - #define VX_REGISTER_U1 -26+3 + 11 D1:C7FF - - - - #define VX_REGISTER_V1 -26+4 + 12 D1:C7FF - - - - #define VX_REGISTER_C1 -26+5 + 13 D1:C7FF - - - - #define VX_REGISTER_Y2 -20+0 + 14 D1:C7FF - - - - #define VX_REGISTER_X2 -20+1 + 15 D1:C7FF - - - - #define VX_REGISTER_U2 -20+3 + 16 D1:C7FF - - - - #define VX_REGISTER_V2 -20+4 + 17 D1:C7FF - - - - #define VX_REGISTER_C2 -20+5 + 18 D1:C7FF - - - - + 19 D1:C7FF - - - - #define VX_FDVDY -12 + 20 D1:C7FF - - - - #define VX_FDUDY -10 + 21 D1:C7FF - - - - #define VX_FDVDX -6 + 22 D1:C7FF - - - - #define VX_FDUDX -4 + 23 D1:C7FF - - - - + 24 D1:C7FF - - - - #define VX_SHADER_INTERPOLATION_CODE $E30800 + 25 D1:C7FF - - - - + 26 D1:C7FF - - - - .addinstr ld deu,0 13521B52 4 NOP 0 + 27 D1:C7FF - - - - .addinstr ld hlu,0 23522B52 4 NOP 0 + 28 D1:C7FF - - - - .addinstr ld bcu,0 03520B52 4 NOP 0 + 29 D1:C7FF - - - - + 30 D1:C7FF 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 .fill 32 + 31 D1:C81F - - - - VX_PIXEL_SHADER_DATA: + 32 D1:C81F 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 .fill 3072 + 33 D1:D41F - - - - + 34 D1:D41F - - - - VX_SHADER_INTERPOLATION_COPY: + 35 D1:D41F - - - - + 36 D1:D41F - - - - .relocate VX_SHADER_INTERPOLATION_CODE +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolation.ez80" + 37 E3:0800 - - - - + 38 E3:0800 - - - - vxTextureTriangle: + 39 E3:0800 - - - - ; issue 1 : uniform value isn't interpolated through clipping + 40 E3:0800 - - - - ; clipping doesn't have the correct position of uv + 41 E3:0800 - - - - + 42 E3:0800 - - - - ; compute average of the vertex GPI + 43 E3:0800 - - - - ; ld h, a + 44 E3:0800 - - - - ; ld l, 83 + 45 E3:0800 - - - - ; mlt hl + 46 E3:0800 - - - - ; ld a, h + 47 E3:0800 - - - - ; ld (vxPixelShaderUniform1), a + 48 E3:0800 0A - - - ld a, (bc) + 49 E3:0801 B6 - - - or (hl) + 50 E3:0802 EB - - - ex de, hl + 51 E3:0803 B6 - - - or (hl) + 52 E3:0804 FD 21 C4 DC + D1 - - - ld iy, vxTexturePolygon ; load up correct subcall routine + 53 E3:0809 C2 CB B5 D1 jp nz, vxClipTriangle + 54 E3:080D - - - - vxTextureTriangleNoClip: + 55 E3:080D 23 13 03 - inc hl \ inc de \ inc bc + 56 E3:0810 1A - - - ld a, (de) + 57 E3:0811 96 - - - sub a, (hl) + 58 E3:0812 38 01 - - jr c, vxTextureSwap0 + 59 E3:0814 EB - - - ex de, hl + 60 E3:0815 - - - - vxTextureSwap0: + 61 E3:0815 0A - - - ld a, (bc) + 62 E3:0816 96 - - - sub a, (hl) + 63 E3:0817 30 06 - - jr nc, vxTextureSwap1 + 64 E3:0819 E5 - - - push hl + 65 E3:081A B7 - - - or a, a + 66 E3:081B ED 62 - - sbc hl, hl + 67 E3:081D 09 - - - add hl, bc + 68 E3:081E C1 - - - pop bc + 69 E3:081F - - - - vxTextureSwap1: + 70 E3:081F 1A - - - ld a, (de) + 71 E3:0820 96 - - - sub a, (hl) + 72 E3:0821 30 01 - - jr nc, vxTextureSwap2 + 73 E3:0823 EB - - - ex de, hl + 74 E3:0824 - - - - vxTextureSwap2: + 75 E3:0824 0A - - - ld a, (bc) ; is this necessary with bfc ? Nope + 76 E3:0825 96 - - - sub (hl) ; well to be safe, keep it + 77 E3:0826 C8 - - - ret z ; + 78 E3:0827 FD 21 1F C8 + D1 - - - ld iy, VX_PIXEL_SHADER_DATA ; load up shader data register + 79 E3:082C - - - - ; copy u&v to constant area + 80 E3:082C C5 - - - push bc + 81 E3:082D D5 - - - push de + 82 E3:082E ED 13 E0 - lea de, iy-32 + 83 E3:0831 01 06 00 00 ld bc, 6 ; 1+3+2 + 84 E3:0835 ED B0 - - ldir + 85 E3:0837 E1 - - - pop hl + 86 E3:0838 0E 06 - - ld c, 6 + 87 E3:083A ED B0 - - ldir + 88 E3:083C E1 - - - pop hl + 89 E3:083D 0E 06 - - ld c, 6 + 90 E3:083F ED B0 - - ldir + 91 E3:0841 - - - - ; do e0-1 + 92 E3:0841 - - - - vxRegister01Interpolation: + 93 E3:0841 FD 7E E6 - ld a, (iy+VX_REGISTER_Y1) + 94 E3:0844 FD 4E E0 - ld c, (iy+VX_REGISTER_Y0) + 95 E3:0847 91 - - - sub a, c + 96 E3:0848 FD 17 E1 - ld de, (iy+VX_REGISTER_X0) + 97 E3:084B 52 1B 52 13 ld deu,0 + 98 E3:084F 06 A0 - - ld b, 160 + 99 E3:0851 ED 4C - - mlt bc + 100 E3:0853 2A 14 00 E3 ld hl, (vxFramebuffer) + 101 E3:0857 09 - - - add hl, bc + 102 E3:0858 09 - - - add hl, bc + 103 E3:0859 19 - - - add hl, de + 104 E3:085A E5 - - - push hl ; for later, edge 0-2 + 105 E3:085B 01 FF FF FF ld bc, $FFFFFF + 106 E3:085F 28 59 - - jr z, vxRegister01End + 107 E3:0861 ED 44 - - neg + 108 E3:0863 4F - - - ld c, a + 109 E3:0864 D5 - - - push de + 110 E3:0865 - - - - + 111 E3:0865 EB - - - ex de, hl + 112 E3:0866 B7 - - - or a, a + 113 E3:0867 ED 62 - - sbc hl, hl + 114 E3:0869 ED 52 - - sbc hl, de + 115 E3:086B EB - - - ex de, hl + 116 E3:086C DD 21 21 ED + 68 - - - ld ix, vxPixelShaderLengthLUT/2 + 117 E3:0871 DD 19 - - add ix, de + 118 E3:0873 D1 - - - pop de + 119 E3:0874 FD 27 E7 - ld hl, (iy+VX_REGISTER_X1) ; load x1 + 120 E3:0877 52 2B 52 23 ld hlu, 0 + 121 E3:087B 3E 2B - - ld a, $2B ; dec ix + 122 E3:087D B7 - - - or a, a + 123 E3:087E ED 52 - - sbc hl, de ; hl = x1-x0 + 124 E3:0880 30 06 - - jr nc, vxRegister01Direction + 125 E3:0882 EE 08 - - xor a, $08 ; inc ix (inverted due to <0 working function) + 126 E3:0884 19 - - - add hl, de ; + 127 E3:0885 EB - - - ex de, hl ; + 128 E3:0886 ED 52 - - sbc hl, de ; hl = -x1+x0 + 129 E3:0888 - - - - vxRegister01Direction: + 130 E3:0888 EB - - - ex de, hl ; de = abs(x1-x0) + 131 E3:0889 32 A7 08 E3 ld (vxRegister01Increment), a + 132 E3:088D - - - - vxRegister01ErrorAdvance: + 133 E3:088D - - - - ; bc = y-size, ix = adress + 134 E3:088D - - - - ; de = error + 135 E3:088D ED 73 B7 08 + E3 - - - ld (vxRegister01SP), sp + 136 E3:0892 31 C0 FE FF ld sp, -320 + 137 E3:0896 79 - - - ld a, c + 138 E3:0897 37 - - - scf + 139 E3:0898 ED 62 - - sbc hl, hl + 140 E3:089A 6F - - - ld l, a + 141 E3:089B ED 52 - - sbc hl, de + 142 E3:089D CB 2C - - sra h + 143 E3:089F CB 1D - - rr l + 144 E3:08A1 ED 44 - - neg + 145 E3:08A3 - - - - vxRegister01Loop: + 146 E3:08A3 19 - - - add hl, de + 147 E3:08A4 30 05 - - jr nc, vxRegister01Next + 148 E3:08A6 - - - - vxRegister01Restore: + 149 E3:08A6 DD - - - .db $DD + 150 E3:08A7 - - - - vxRegister01Increment=$ + 151 E3:08A7 00 - - - nop + 152 E3:08A8 09 - - - add hl, bc + 153 E3:08A9 38 FB - - jr c, vxRegister01Restore + 154 E3:08AB - - - - vxRegister01Next: + 155 E3:08AB FD 3E 03 - ld (iy+VX_REGISTER1), ix ; this is framebuffer adress + 156 E3:08AE DD 39 - - add ix, sp + 157 E3:08B0 ED 33 0C - lea iy, iy+VX_REGISTER_SIZE + 158 E3:08B3 3D - - - dec a + 159 E3:08B4 20 ED - - jr nz, vxRegister01Loop + 160 E3:08B6 - - - - vxRegister01SP=$+1 + 161 E3:08B6 31 00 00 00 ld sp, $000000 + 162 E3:08BA - - - - vxRegister01End: + 163 E3:08BA - - - - + 164 E3:08BA 21 05 C8 D1 ld hl, VX_PIXEL_SHADER_DATA-26 + 165 E3:08BE 11 0B C8 D1 ld de, VX_PIXEL_SHADER_DATA-20 + 166 E3:08C2 - - - - + 167 E3:08C2 - - - - vxRegister11Interpolation: + 168 E3:08C2 01 FF FF FF ld bc, $FFFFFF + 169 E3:08C6 - - - - ; take point0 (hl) and point1 (de), point0 is the lowest point + 170 E3:08C6 1A - - - ld a, (de) + 171 E3:08C7 4E - - - ld c, (hl) + 172 E3:08C8 91 - - - sub a, c + 173 E3:08C9 28 6F - - jr z, vxRegister11End + 174 E3:08CB ED 44 - - neg + 175 E3:08CD 23 - - - inc hl + 176 E3:08CE D5 - - - push de + 177 E3:08CF ED 17 - - ld de, (hl) + 178 E3:08D1 52 1B 52 13 ld deu, 0 + 179 E3:08D5 D5 - - - push de + 180 E3:08D6 69 - - - ld l, c + 181 E3:08D7 4F - - - ld c, a + 182 E3:08D8 26 A0 - - ld h, 160 + 183 E3:08DA ED 6C - - mlt hl + 184 E3:08DC 29 - - - add hl, hl + 185 E3:08DD 19 - - - add hl, de + 186 E3:08DE ED 5B 14 00 + E3 - - - ld de, (vxFramebuffer) + 187 E3:08E3 19 - - - add hl, de + 188 E3:08E4 EB - - - ex de, hl + 189 E3:08E5 B7 - - - or a, a + 190 E3:08E6 ED 62 - - sbc hl, hl + 191 E3:08E8 ED 52 - - sbc hl, de + 192 E3:08EA EB - - - ex de, hl + 193 E3:08EB DD 21 21 ED + 68 - - - ld ix, vxPixelShaderLengthLUT/2 + 194 E3:08F0 DD 19 - - add ix, de + 195 E3:08F2 D1 - - - pop de + 196 E3:08F3 E1 - - - pop hl + 197 E3:08F4 23 - - - inc hl ; fetch x coordinate + 198 E3:08F5 ED 27 - - ld hl, (hl) ; load x1 + 199 E3:08F7 52 2B 52 23 ld hlu, 0 + 200 E3:08FB 3E 2B - - ld a, $2B ; dec ix + 201 E3:08FD B7 - - - or a, a + 202 E3:08FE ED 52 - - sbc hl, de ; hl = x1-x0 + 203 E3:0900 30 06 - - jr nc, vxRegister11Direction + 204 E3:0902 EE 08 - - xor a, $08 ; inc ix (inverted due to <0 working function) + 205 E3:0904 19 - - - add hl, de ; + 206 E3:0905 EB - - - ex de, hl ; + 207 E3:0906 ED 52 - - sbc hl, de ; hl = -x1+x0 + 208 E3:0908 - - - - vxRegister11Direction: + 209 E3:0908 EB - - - ex de, hl ; de = abs(x1-x0) + 210 E3:0909 32 27 09 E3 ld (vxRegister11Increment), a + 211 E3:090D - - - - vxRegister11ErrorAdvance: + 212 E3:090D - - - - ; bc = y-size, ix = adress + 213 E3:090D - - - - ; de = error + 214 E3:090D ED 73 37 09 + E3 - - - ld (vxRegister11SP), sp + 215 E3:0912 31 C0 FE FF ld sp, -320 + 216 E3:0916 79 - - - ld a, c + 217 E3:0917 37 - - - scf + 218 E3:0918 ED 62 - - sbc hl, hl + 219 E3:091A 6F - - - ld l, a + 220 E3:091B ED 52 - - sbc hl, de + 221 E3:091D CB 2C - - sra h + 222 E3:091F CB 1D - - rr l + 223 E3:0921 ED 44 - - neg + 224 E3:0923 - - - - vxRegister11Loop: + 225 E3:0923 19 - - - add hl, de + 226 E3:0924 30 05 - - jr nc, vxRegister11Next + 227 E3:0926 - - - - vxRegister11Restore: + 228 E3:0926 DD - - - .db $DD + 229 E3:0927 - - - - vxRegister11Increment=$ + 230 E3:0927 00 - - - nop + 231 E3:0928 09 - - - add hl, bc + 232 E3:0929 38 FB - - jr c, vxRegister11Restore + 233 E3:092B - - - - vxRegister11Next: + 234 E3:092B FD 3E 03 - ld (iy+VX_REGISTER1), ix ; this is framebuffer adress + 235 E3:092E DD 39 - - add ix, sp + 236 E3:0930 ED 33 0C - lea iy, iy+VX_REGISTER_SIZE + 237 E3:0933 3D - - - dec a + 238 E3:0934 20 ED - - jr nz, vxRegister11Loop + 239 E3:0936 - - - - vxRegister11SP=$+1 + 240 E3:0936 31 00 00 00 ld sp, $000000 + 241 E3:093A - - - - vxRegister11End: + 242 E3:093A - - - - + 243 E3:093A FD 21 1F C8 + D1 - - - ld iy, VX_PIXEL_SHADER_DATA ; load up shader data register + 244 E3:093F 01 FF FF FF ld bc, $FFFFFF ; not necessarily here if exit with a bc < 0 previously, may be removed (end micro-opt) + 245 E3:0943 - - - - vxRegister0Interpolation: + 246 E3:0943 - - - - ; take point0 (hl) and point1 (de), point0 is the lowest point + 247 E3:0943 FD 7E EC - ld a, (iy+VX_REGISTER_Y2) + 248 E3:0946 FD 4E E0 - ld c, (iy+VX_REGISTER_Y0) + 249 E3:0949 91 - - - sub a, c + 250 E3:094A ED 44 - - neg + 251 E3:094C FD 17 E1 - ld de, (iy+VX_REGISTER_X0) + 252 E3:094F 52 1B 52 13 ld deu, 0 + 253 E3:0953 4F - - - ld c, a + 254 E3:0954 DD E1 - - pop ix + 255 E3:0956 - - - - + 256 E3:0956 FD 27 ED - ld hl, (iy+VX_REGISTER_X2) ; load x1 + 257 E3:0959 52 2B 52 23 ld hlu, 0 + 258 E3:095D E5 - - - push hl + 259 E3:095E 3E 23 - - ld a, $23 ; inc ix + 260 E3:0960 B7 - - - or a, a + 261 E3:0961 ED 52 - - sbc hl, de ; hl = x1-x0 + 262 E3:0963 30 06 - - jr nc, vxRegister0Direction + 263 E3:0965 F6 08 - - or a, $08 ; dec ix + 264 E3:0967 19 - - - add hl, de ; + 265 E3:0968 EB - - - ex de, hl ; + 266 E3:0969 ED 52 - - sbc hl, de ; hl = -x1+x0 + 267 E3:096B - - - - vxRegister0Direction: + 268 E3:096B EB - - - ex de, hl ; de = abs(x1-x0) + 269 E3:096C 32 8A 09 E3 ld (vxRegister0Increment), a + 270 E3:0970 - - - - vxRegister0ErrorAdvance: + 271 E3:0970 - - - - ; bc = y-size, ix = adress + 272 E3:0970 - - - - ; de= error + 273 E3:0970 ED 73 9A 09 + E3 - - - ld (vxRegister0SP), sp + 274 E3:0975 31 40 01 00 ld sp, 320 + 275 E3:0979 79 - - - ld a, c + 276 E3:097A 37 - - - scf + 277 E3:097B ED 62 - - sbc hl, hl + 278 E3:097D 6F - - - ld l, a + 279 E3:097E ED 52 - - sbc hl, de + 280 E3:0980 CB 2C - - sra h + 281 E3:0982 CB 1D - - rr l + 282 E3:0984 ED 44 - - neg + 283 E3:0986 - - - - vxRegister0Loop: + 284 E3:0986 19 - - - add hl, de + 285 E3:0987 30 05 - - jr nc, vxRegister0Next + 286 E3:0989 - - - - vxRegister0Restore: + 287 E3:0989 DD - - - .db $DD + 288 E3:098A - - - - vxRegister0Increment=$ + 289 E3:098A 00 - - - nop + 290 E3:098B 09 - - - add hl, bc + 291 E3:098C 38 FB - - jr c, vxRegister0Restore + 292 E3:098E - - - - vxRegister0Next: + 293 E3:098E FD 3E 00 - ld (iy+VX_REGISTER0), ix ; this is framebuffer adress + 294 E3:0991 DD 39 - - add ix, sp + 295 E3:0993 ED 33 0C - lea iy, iy+VX_REGISTER_SIZE + 296 E3:0996 3D - - - dec a + 297 E3:0997 20 ED - - jr nz, vxRegister0Loop + 298 E3:0999 - - - - ; magic end bytes - write x2 ? + 299 E3:0999 - - - - vxRegister0SP=$+1 + 300 E3:0999 31 00 00 00 ld sp, $000000 + 301 E3:099D C1 - - - pop bc + 302 E3:099E - - - - + 303 E3:099E FD 0F 00 - ld (iy+VX_REGISTER0), bc + 304 E3:09A1 21 61 EE 68 ld hl, vxPixelShaderExitLUT/2 + 305 E3:09A5 ED 42 - - sbc hl,bc + 306 E3:09A7 FD 2F 03 - ld (iy+VX_REGISTER1), hl + 307 E3:09AA - - - - vxRegister0End: + 308 E3:09AA - - - - + 309 E3:09AA - - - - ; compute dudy + 310 E3:09AA - - - - ; compute dudx + 311 E3:09AA - - - - ; compute dvdy + 312 E3:09AA - - - - ; compute dvdx + 313 E3:09AA - - - - ; offset and compute register2&3 + 314 E3:09AA - - - - vxRegisterDerivative: + 315 E3:09AA FD 21 1F C8 + D1 - - - ld iy, VX_PIXEL_SHADER_DATA + 316 E3:09AF ED 23 E0 - lea hl, iy+VX_REGISTER_Y0 + 317 E3:09B2 ED 13 E6 - lea de, iy+VX_REGISTER_Y1 + 318 E3:09B5 ED 03 EC - lea bc, iy+VX_REGISTER_Y2 + 319 E3:09B8 - - - - + 320 E3:09B8 - - - - ; compute dxdv,dydv and dxdu,dydu + 321 E3:09B8 - - - - ; (hl), (de), (bc) = point0, 1,2 + 322 E3:09B8 1A - - - ld a, (de) + 323 E3:09B9 96 - - - sub a, (hl) + 324 E3:09BA 32 DD 09 E3 ld (vxRegisterDerivativeDY0), a + 325 E3:09BE 32 42 0A E3 ld (vxRegisterDerivativeDY1), a + 326 E3:09C2 32 A2 0A E3 ld (vxRegisterDerivativeDY2), a + 327 E3:09C6 - - - - + 328 E3:09C6 0A - - - ld a, (bc) + 329 E3:09C7 96 - - - sub (hl) + 330 E3:09C8 F5 - - - push af + 331 E3:09C9 ED 62 - - sbc hl, hl + 332 E3:09CB 6F - - - ld l, a + 333 E3:09CC 29 - - - add hl, hl + 334 E3:09CD 0A - - - ld a, (bc) + 335 E3:09CE 01 EF DC D1 ld bc, VX_INVERSE_TABLE + 336 E3:09D2 09 - - - add hl, bc + 337 E3:09D3 ED 27 - - ld hl, (hl) + 338 E3:09D5 52 23 - - inc.s hl ; essential, table have (value-1) + 339 E3:09D7 - - - - ; hl = 65536/(y2-y0) + 340 E3:09D7 - - - - ; FIXME : SAVE HL HERE FOR LATER + 341 E3:09D7 E5 - - - push hl + 342 E3:09D8 EB - - - ex de, hl + 343 E3:09D9 56 - - - ld d, (hl) ; substracted by y0 else it isn't correct + 344 E3:09DA 92 - - - sub a, d + 345 E3:09DB 7A - - - ld a, d + 346 E3:09DC - - - - vxRegisterDerivativeDY0=$+1 + 347 E3:09DC 16 00 - - ld d, $00 + 348 E3:09DE 1E 0C - - ld e, 12 + 349 E3:09E0 ED 5C - - mlt de + 350 E3:09E2 FD 19 - - add iy, de ; doesn't modify z + 351 E3:09E4 - - - - ; (iy) register0 hold y*320+x+framebuffer (or x2), register2 and 3 hold value u and v + 352 E3:09E4 - - - - ; I have x1 ready too. If z flag set, y1=y2 + 353 E3:09E4 23 - - - inc hl + 354 E3:09E5 ED 27 - - ld hl,(hl) + 355 E3:09E7 52 2B 52 23 ld hlu, 0 + 356 E3:09EB 28 0D - - jr z, vxRegisterDerivativeNull + 357 E3:09ED 5F - - - ld e, a + 358 E3:09EE 16 A0 - - ld d, 160 + 359 E3:09F0 ED 5C - - mlt de + 360 E3:09F2 19 - - - add hl, de + 361 E3:09F3 19 - - - add hl, de + 362 E3:09F4 ED 5B 14 00 + E3 - - - ld de, (vxFramebuffer) + 363 E3:09F9 19 - - - add hl, de + 364 E3:09FA - - - - vxRegisterDerivativeNull: + 365 E3:09FA FD 17 00 - ld de, (iy+VX_REGISTER0) + 366 E3:09FD 3E 13 - - ld a, $13 + 367 E3:09FF B7 - - - or a, a + 368 E3:0A00 ED 52 - - sbc hl, de ; x1-rx + 369 E3:0A02 - - - - ; I have here interpolated dx=x1-rx value, sign is correct + 370 E3:0A02 - - - - ; if dx < 0, make abs() and change to dec de mode (rx is at right, x1 is at left) ;; ISSUE 1 : need to correct sign based on sign of X ? + 371 E3:0A02 F2 0D 0A E3 jp p, vxRegisterDerivativeAbs + 372 E3:0A06 EB - - - ex de, hl + 373 E3:0A07 F6 08 - - or a, $08 + 374 E3:0A09 ED 62 - - sbc hl, hl + 375 E3:0A0B ED 52 - - sbc hl, de + 376 E3:0A0D - - - - vxRegisterDerivativeAbs: + 377 E3:0A0D - - - - ; write inc/dec + 378 E3:0A0D FD 21 1F C8 + D1 - - - ld iy, VX_PIXEL_SHADER_DATA + 379 E3:0A12 32 19 00 E1 ld (VX_PIXEL_SHADER_SUBSIZE-1+VX_PIXEL_SHADER_CODE), a + 380 E3:0A16 32 23 00 E1 ld (VX_PIXEL_SHADER_SUBSIZE*2-1+VX_PIXEL_SHADER_CODE), a + 381 E3:0A1A 29 - - - add hl, hl + 382 E3:0A1B 09 - - - add hl, bc ; bc =VX_INVERE_TABLE + 383 E3:0A1C ED 27 - - ld hl, (hl) + 384 E3:0A1E 52 23 - - inc.s hl ; essential, table have (value-1) + 385 E3:0A20 - - - - ; FIXME SAVE HL AND RESTORE PREVIOUS HL + 386 E3:0A20 E3 - - - ex (sp), hl + 387 E3:0A21 EB - - - ex de, hl + 388 E3:0A22 - - - - ; de = ratio + 389 E3:0A22 FD 7E F0 - ld a, (iy+VX_REGISTER_V2) + 390 E3:0A25 FD 96 E4 - sub (iy+VX_REGISTER_V0) + 391 E3:0A28 62 - - - ld h, d + 392 E3:0A29 6F - - - ld l, a + 393 E3:0A2A ED 6C - - mlt hl + 394 E3:0A2C 30 03 - - jr nc, $+5 + 395 E3:0A2E B7 - - - or a, a + 396 E3:0A2F ED 52 - - sbc hl, de + 397 E3:0A31 43 - - - ld b, e + 398 E3:0A32 4F - - - ld c, a + 399 E3:0A33 ED 4C - - mlt bc + 400 E3:0A35 48 - - - ld c, b + 401 E3:0A36 06 00 - - ld b, 0 + 402 E3:0A38 09 - - - add hl, bc + 403 E3:0A39 FD 2F F4 - ld (iy+VX_FDVDY), hl + 404 E3:0A3C - - - - ; de = du/dy + 405 E3:0A3C - - - - ; now do hl*(y1-y0)/256 + 406 E3:0A3C - - - - ; hl is fixed point 8.8 signed, a is unsigned. + 407 E3:0A3C EB - - - ex de, hl + 408 E3:0A3D E3 - - - ex (sp), hl + 409 E3:0A3E EB - - - ex de, hl + 410 E3:0A3F CB 7C - - bit 7, h ;check sign of ratio + 411 E3:0A41 - - - - ; de = new ratio + 412 E3:0A41 - - - - vxRegisterDerivativeDY1=$+1 + 413 E3:0A41 3E 00 - - ld a, 0 + 414 E3:0A43 47 - - - ld b, a + 415 E3:0A44 4C - - - ld c, h + 416 E3:0A45 ED 4C - - mlt bc + 417 E3:0A47 CB 14 - - rl h + 418 E3:0A49 67 - - - ld h, a + 419 E3:0A4A 30 03 - - jr nc, $+5 + 420 E3:0A4C 2F - - - cpl + 421 E3:0A4D 88 - - - adc a, b + 422 E3:0A4E 47 - - - ld b, a + 423 E3:0A4F ED 6C - - mlt hl + 424 E3:0A51 6C - - - ld l, h + 425 E3:0A52 26 00 - - ld h, 0 + 426 E3:0A54 09 - - - add hl, bc + 427 E3:0A55 - - - - ; interesting value is l + 428 E3:0A55 FD 4E E4 - ld c, (iy+VX_REGISTER_V0) + 429 E3:0A58 06 00 - - ld b, 0 + 430 E3:0A5A 09 - - - add hl, bc + 431 E3:0A5B CB 7C - - bit 7, h + 432 E3:0A5D 28 02 - - jr z, $+4 + 433 E3:0A5F 2E 00 - - ld l, 0 + 434 E3:0A61 - - - - ; in theory the value here is >0 + 435 E3:0A61 FD 7E EA - ld a, (iy+VX_REGISTER_V1) + 436 E3:0A64 95 - - - sub a, l + 437 E3:0A65 62 - - - ld h, d + 438 E3:0A66 6F - - - ld l, a + 439 E3:0A67 ED 6C - - mlt hl + 440 E3:0A69 30 03 - - jr nc, $+5 + 441 E3:0A6B B7 - - - or a, a + 442 E3:0A6C ED 52 - - sbc hl, de + 443 E3:0A6E 43 - - - ld b, e + 444 E3:0A6F 4F - - - ld c, a + 445 E3:0A70 ED 4C - - mlt bc + 446 E3:0A72 - - - - ; divide by 256 + 447 E3:0A72 48 - - - ld c, b + 448 E3:0A73 06 00 - - ld b, 0 + 449 E3:0A75 09 - - - add hl, bc + 450 E3:0A76 FD 2F FA - ld (iy+VX_FDVDX), hl + 451 E3:0A79 - - - - + 452 E3:0A79 EB - - - ex de, hl + 453 E3:0A7A E3 - - - ex (sp), hl + 454 E3:0A7B EB - - - ex de, hl + 455 E3:0A7C - - - - ; now compute gradient for v paramater + 456 E3:0A7C FD 7E EF - ld a, (iy+VX_REGISTER_U2) + 457 E3:0A7F FD 96 E3 - sub (iy+VX_REGISTER_U0) + 458 E3:0A82 62 - - - ld h, d + 459 E3:0A83 6F - - - ld l, a + 460 E3:0A84 ED 6C - - mlt hl + 461 E3:0A86 30 03 - - jr nc, $+5 + 462 E3:0A88 B7 - - - or a, a + 463 E3:0A89 ED 52 - - sbc hl, de + 464 E3:0A8B 43 - - - ld b, e + 465 E3:0A8C 4F - - - ld c, a + 466 E3:0A8D ED 4C - - mlt bc + 467 E3:0A8F 48 - - - ld c, b + 468 E3:0A90 06 00 - - ld b, 0 + 469 E3:0A92 52 09 - - add.s hl, bc + 470 E3:0A94 FD 17 F4 - ld de, (iy+VX_FDVDY) + 471 E3:0A97 CB 7A - - bit 7, d + 472 E3:0A99 28 02 - - jr z, $+4 + 473 E3:0A9B 52 2B - - dec.s hl + 474 E3:0A9D FD 2F F6 - ld (iy+VX_FDUDY), hl + 475 E3:0AA0 D1 - - - pop de + 476 E3:0AA1 - - - - ; hl = dv/dy + 477 E3:0AA1 - - - - ; now do hl*(y1-y0)/256 + 478 E3:0AA1 - - - - ; hl is fixed point 8.8 signed, a is unsigned. + 479 E3:0AA1 - - - - ; de = new ratio + 480 E3:0AA1 - - - - vxRegisterDerivativeDY2=$+1 + 481 E3:0AA1 3E 00 - - ld a, 0 + 482 E3:0AA3 - - - - + 483 E3:0AA3 47 - - - ld b, a + 484 E3:0AA4 4C - - - ld c, h + 485 E3:0AA5 ED 4C - - mlt bc + 486 E3:0AA7 CB 14 - - rl h + 487 E3:0AA9 67 - - - ld h, a + 488 E3:0AAA 30 03 - - jr nc, $+5 + 489 E3:0AAC 2F - - - cpl + 490 E3:0AAD 88 - - - adc a, b + 491 E3:0AAE 47 - - - ld b, a + 492 E3:0AAF ED 6C - - mlt hl + 493 E3:0AB1 6C - - - ld l, h + 494 E3:0AB2 26 00 - - ld h, 0 + 495 E3:0AB4 09 - - - add hl, bc + 496 E3:0AB5 - - - - ; interesting value is l + 497 E3:0AB5 FD 4E E3 - ld c, (iy+VX_REGISTER_U0) + 498 E3:0AB8 06 00 - - ld b, 0 + 499 E3:0ABA 09 - - - add hl, bc + 500 E3:0ABB CB 7C - - bit 7, h + 501 E3:0ABD 28 02 - - jr z, $+4 + 502 E3:0ABF 2E 00 - - ld l, 0 + 503 E3:0AC1 FD 7E E9 - ld a, (iy+VX_REGISTER_U1) + 504 E3:0AC4 95 - - - sub a, l + 505 E3:0AC5 62 - - - ld h, d + 506 E3:0AC6 6F - - - ld l, a + 507 E3:0AC7 ED 6C - - mlt hl + 508 E3:0AC9 30 03 - - jr nc, $+5 + 509 E3:0ACB B7 - - - or a, a + 510 E3:0ACC ED 52 - - sbc hl, de + 511 E3:0ACE 43 - - - ld b, e + 512 E3:0ACF 4F - - - ld c, a + 513 E3:0AD0 ED 4C - - mlt bc + 514 E3:0AD2 - - - - ; divide by 256 + 515 E3:0AD2 48 - - - ld c, b + 516 E3:0AD3 06 00 - - ld b, 0 + 517 E3:0AD5 52 09 - - add.s hl, bc + 518 E3:0AD7 - - - - ; sign correction for interpolation + 519 E3:0AD7 FD 17 FA - ld de, (iy+VX_FDVDX) + 520 E3:0ADA CB 7A - - bit 7, d + 521 E3:0ADC 28 02 - - jr z, $+4 + 522 E3:0ADE 52 2B - - dec.s hl + 523 E3:0AE0 FD 2F FC - ld (iy+VX_FDUDX), hl + 524 E3:0AE3 - - - - ; interpolate u,v register2 and register3, and initialise drawing + 525 E3:0AE3 - - - - + 526 E3:0AE3 - - - - ; hl = u0*256+(dudy+dudx)/2, ix=v0*256+(dvdy+dvdx)/2 + 527 E3:0AE3 FD 27 F4 - ld hl, (iy+VX_FDVDY) + 528 E3:0AE6 FD 17 FA - ld de, (iy+VX_FDVDX) + 529 E3:0AE9 52 19 - - add.s hl, de + 530 E3:0AEB CB 2C CB 1D sra h \ rr l + 531 E3:0AEF EB - - - ex de, hl + 532 E3:0AF0 FD 27 F6 - ld hl, (iy+VX_FDUDY) + 533 E3:0AF3 FD 07 FC - ld bc, (iy+VX_FDUDX) + 534 E3:0AF6 52 09 - - add.s hl, bc + 535 E3:0AF8 CB 2C CB 1D sra h \ rr l + 536 E3:0AFC 7D - - - ld a, l + 537 E3:0AFD 32 0F 0B E3 ld (vxShaderOffset+2), a + 538 E3:0B01 7C - - - ld a, h + 539 E3:0B02 - - - - + 540 E3:0B02 - - - - vxShaderTexturePage=$+1 + 541 E3:0B02 21 00 00 D3 ld hl, $D30000 + 542 E3:0B06 FD 6E E3 - ld l, (iy+VX_REGISTER_U0) + 543 E3:0B09 85 - - - add a, l + 544 E3:0B0A 6F - - - ld l, a + 545 E3:0B0B - - - - vxShaderOffset=$+2 + 546 E3:0B0B DD 21 00 00 + 00 - - - ld ix, $000000 + 547 E3:0B10 FD 7E E4 - ld a, (iy+VX_REGISTER_V0) + 548 E3:0B13 82 - - - add a, d + 549 E3:0B14 DD 67 - - ld ixh, a + 550 E3:0B16 DD 6B - - ld ixl, e + 551 E3:0B18 - - - - ; load de and bc + 552 E3:0B18 FD 07 F4 - ld bc, (iy+VX_FDVDY) + 553 E3:0B1B FD 17 F7 - ld de, (iy+VX_FDUDY+1) + 554 E3:0B1E - - - - ; ready to interpolate + 555 E3:0B1E F1 - - - pop af + 556 E3:0B1F - - - - vxRegisterGradientLoop: + 557 E3:0B1F FD 3E 06 - ld (iy+VX_REGISTER2), ix + 558 E3:0B22 FD 2F 09 - ld (iy+VX_REGISTER3), hl + 559 E3:0B25 DD 09 - - add ix, bc ; v interpolation on y + 560 E3:0B27 ED 5A - - adc hl, de ; u interpolation on y + 561 E3:0B29 3D - - - dec a + 562 E3:0B2A 28 10 - - jr z, vxRegisterGradientEnd + 563 E3:0B2C FD 3E 12 - ld (iy+VX_REGISTER2+VX_REGISTER_SIZE), ix + 564 E3:0B2F FD 2F 15 - ld (iy+VX_REGISTER3+VX_REGISTER_SIZE), hl + 565 E3:0B32 DD 09 - - add ix, bc ; v interpolation on y + 566 E3:0B34 ED 5A - - adc hl, de ; u interpolation on y + 567 E3:0B36 ED 33 18 - lea iy, iy+(VX_REGISTER_SIZE*2) + 568 E3:0B39 3D - - - dec a + 569 E3:0B3A 20 E3 - - jr nz, vxRegisterGradientLoop + 570 E3:0B3C - - - - vxRegisterGradientEnd: + 571 E3:0B3C - - - - ; initialise drawing + 572 E3:0B3C DD 21 10 00 + E1 - - - ld ix, VX_PIXEL_SHADER_CODE + 573 E3:0B41 FD 21 1F C8 + D1 - - - ld iy, VX_PIXEL_SHADER_DATA + 574 E3:0B46 - - - - ; hl'= texture page and accumulator for dux LOADED + 575 E3:0B46 - - - - ; de'= low byte is dux INIT + 576 E3:0B46 - - - - ; sp = dux*65536+dvx INIT + 577 E3:0B46 - - - - ; bc'= undefined INIT + 578 E3:0B46 - - - - ; hl = accumulator for dux LOADED + 579 E3:0B46 - - - - ; de = screen adress LOADED + 580 E3:0B46 - - - - ; bc = djnz size LOADED + 581 E3:0B46 ED 73 5C 0B + E3 - - - ld (vxPixelShaderExit+1), sp + 582 E3:0B4B - - - - vxShaderUniform0=$+1 + 583 E3:0B4B 01 00 00 D0 ld bc, VX_PIXEL_SHADER_CONSTANT + 584 E3:0B4F FD 27 FA - ld hl, (iy+VX_FDVDX) + 585 E3:0B52 F9 - - - ld sp, hl + 586 E3:0B53 FD 17 FD - ld de, (iy+VX_FDUDX+1) + 587 E3:0B56 D9 - - - exx + 588 E3:0B57 C3 26 00 E1 jp vxShaderGeneralInterpolation + 589 E3:0B5B - - - - vxPixelShaderExit: + 590 E3:0B5B 31 00 00 00 ld sp, $000000 + 591 E3:0B5F C9 - - - ret + 592 E3:0B60 - - - - + 593 E3:0B60 - - - - .endrelocate +Listing for file "include\\relocate.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolation.ez80" + 594 D1:D77F - - - - + 595 D1:D77F - - - - #include "vxPixelShader.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPixelShader.inc" + 1 D1:D77F - - - - #define VX_PIXEL_SHADER_CODE $E10010 + 2 D1:D77F - - - - #define VX_PIXEL_SHADER_SIZE 64 + 3 D1:D77F - - - - #define VX_PIXEL_SHADER_CONSTANT $D00000 + 4 D1:D77F - - - - #define VX_PIXEL_SHADER_SUBSIZE 10 + 5 D1:D77F - - - - + 6 D1:D77F - - - - #define VX_REGISTER_SIZE 12 + 7 D1:D77F - - - - #define VX_REGISTER0 0 + 8 D1:D77F - - - - #define VX_REGISTER1 3 + 9 D1:D77F - - - - #define VX_REGISTER2 6 + 10 D1:D77F - - - - #define VX_REGISTER3 9 + 11 D1:D77F - - - - + 12 D1:D77F - - - - ; locate write area as vxPixelShader + SUB_SIZE - 1, 1 byte to write + 13 D1:D77F - - - - ; for killing pixel, do a jr cc,$+3 for ld, jr cc, $+5 for other + 14 D1:D77F - - - - + 15 D1:D77F - - - - + 16 D1:D77F - - - - VX_PIXEL_SHADER_COPY: + 17 D1:D77F - - - - + 18 D1:D77F - - - - .relocate VX_PIXEL_SHADER_CODE +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPixelShader.inc" + 19 E1:0010 - - - - + 20 E1:0010 - - - - vxPixelShader: + 21 E1:0010 7C - - - ld a, h + 22 E1:0011 39 - - - add hl, sp + 23 E1:0012 D9 - - - exx + 24 E1:0013 67 - - - ld h, a + 25 E1:0014 - - - - ; ld c, (hl) + 26 E1:0014 7E - - - ld a, (hl) + 27 E1:0015 ED 5A - - adc hl, de + 28 E1:0017 - - - - ; ld a, c + 29 E1:0017 - - - - ; cp $FF + 30 E1:0017 - - - - ; ld a, (bc) + 31 E1:0017 D9 - - - exx + 32 E1:0018 - - - - ; jr z, $+3 + 33 E1:0018 12 13 - - ldi (de), a + 34 E1:001A 7C - - - ld a, h + 35 E1:001B 39 - - - add hl, sp + 36 E1:001C D9 - - - exx + 37 E1:001D 67 - - - ld h, a + 38 E1:001E - - - - ; ld c, (hl) + 39 E1:001E 7E - - - ld a, (hl) + 40 E1:001F ED 5A - - adc hl, de + 41 E1:0021 - - - - ; ld a, c + 42 E1:0021 - - - - ; cp $FF + 43 E1:0021 - - - - ; ld a, (bc) + 44 E1:0021 D9 - - - exx + 45 E1:0022 - - - - ; jr z, $+3 + 46 E1:0022 12 13 - - ldi (de), a + 47 E1:0024 10 EA - - djnz vxPixelShader + 48 E1:0026 - - - - vxShaderGeneralInterpolation: + 49 E1:0026 FD 27 03 - ld hl, (iy+VX_REGISTER1) + 50 E1:0029 FD 17 00 - ld de, (iy+VX_REGISTER0) + 51 E1:002C 19 - - - add hl, de + 52 E1:002D 29 - - - add hl, hl + 53 E1:002E 7E - - - ld a, (hl) + 54 E1:002F DD 6F - - ld ixl, a + 55 E1:0031 23 - - - inc hl + 56 E1:0032 46 - - - ld b, (hl) + 57 E1:0033 FD 27 06 - ld hl, (iy+VX_REGISTER2) ; v + 58 E1:0036 D9 - - - exx + 59 E1:0037 FD 27 09 - ld hl, (iy+VX_REGISTER3) ; u + 60 E1:003A D9 - - - exx + 61 E1:003B ED 33 0C - lea iy, iy+VX_REGISTER_SIZE + 62 E1:003E DD E9 - - jp (ix) + 63 E1:0040 00 00 00 00 + 00 00 00 00 + 00 00 00 00 .align $E1004C + 64 E1:004C C3 5B 0B E3 jp vxPixelShaderExit + 65 E1:0050 - - - - ; exactly 64 bytes + 66 E1:0050 - - - - + 67 E1:0050 - - - - .endrelocate +Listing for file "include\\relocate.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxPixelShader.inc" + 68 D1:D7BF - - - - + 69 D1:D7BF - - - - #define VX_CALL0_POS (VX_PIXEL_SHADER_SUBSIZE*2-1+VX_PIXEL_SHADER_CODE)%256 + 70 D1:D7BF - - - - #define VX_CALL1_POS (VX_PIXEL_SHADER_SUBSIZE-1+VX_PIXEL_SHADER_CODE)%256 + 71 D1:D7BF - - - - #define VX_CALL_NULL ((VX_PIXEL_SHADER_SUBSIZE+1)*2+VX_PIXEL_SHADER_CODE)%256 + 72 D1:D7BF - - - - #define VX_CALL1_NEG (VX_PIXEL_SHADER_SUBSIZE+VX_PIXEL_SHADER_CODE)%256 + 73 D1:D7BF - - - - #define VX_CALL0_NEG (VX_PIXEL_SHADER_CODE)%256 + 74 D1:D7BF - - - - #define VX_CALL_EXIT (VX_PIXEL_SHADER_CODE+60)%256 + 75 D1:D7BF - - - - + 76 D1:D7BF - - - - ; pad to two bytes + 77 D1:D7BF 00 - - - .align 2 + 78 D1:D7C0 1A A1 - - .db VX_CALL1_NEG, 161 + 79 D1:D7C2 10 A0 - - .db VX_CALL0_NEG, 160 + 80 D1:D7C4 1A A0 - - .db VX_CALL1_NEG, 160 + 81 D1:D7C6 10 9F - - .db VX_CALL0_NEG, 159 + 82 D1:D7C8 1A 9F - - .db VX_CALL1_NEG, 159 + 83 D1:D7CA 10 9E - - .db VX_CALL0_NEG, 158 + 84 D1:D7CC 1A 9E - - .db VX_CALL1_NEG, 158 + 85 D1:D7CE 10 9D - - .db VX_CALL0_NEG, 157 + 86 D1:D7D0 1A 9D - - .db VX_CALL1_NEG, 157 + 87 D1:D7D2 10 9C - - .db VX_CALL0_NEG, 156 + 88 D1:D7D4 1A 9C - - .db VX_CALL1_NEG, 156 + 89 D1:D7D6 10 9B - - .db VX_CALL0_NEG, 155 + 90 D1:D7D8 1A 9B - - .db VX_CALL1_NEG, 155 + 91 D1:D7DA 10 9A - - .db VX_CALL0_NEG, 154 + 92 D1:D7DC 1A 9A - - .db VX_CALL1_NEG, 154 + 93 D1:D7DE 10 99 - - .db VX_CALL0_NEG, 153 + 94 D1:D7E0 1A 99 - - .db VX_CALL1_NEG, 153 + 95 D1:D7E2 10 98 - - .db VX_CALL0_NEG, 152 + 96 D1:D7E4 1A 98 - - .db VX_CALL1_NEG, 152 + 97 D1:D7E6 10 97 - - .db VX_CALL0_NEG, 151 + 98 D1:D7E8 1A 97 - - .db VX_CALL1_NEG, 151 + 99 D1:D7EA 10 96 - - .db VX_CALL0_NEG, 150 + 100 D1:D7EC 1A 96 - - .db VX_CALL1_NEG, 150 + 101 D1:D7EE 10 95 - - .db VX_CALL0_NEG, 149 + 102 D1:D7F0 1A 95 - - .db VX_CALL1_NEG, 149 + 103 D1:D7F2 10 94 - - .db VX_CALL0_NEG, 148 + 104 D1:D7F4 1A 94 - - .db VX_CALL1_NEG, 148 + 105 D1:D7F6 10 93 - - .db VX_CALL0_NEG, 147 + 106 D1:D7F8 1A 93 - - .db VX_CALL1_NEG, 147 + 107 D1:D7FA 10 92 - - .db VX_CALL0_NEG, 146 + 108 D1:D7FC 1A 92 - - .db VX_CALL1_NEG, 146 + 109 D1:D7FE 10 91 - - .db VX_CALL0_NEG, 145 + 110 D1:D800 1A 91 - - .db VX_CALL1_NEG, 145 + 111 D1:D802 10 90 - - .db VX_CALL0_NEG, 144 + 112 D1:D804 1A 90 - - .db VX_CALL1_NEG, 144 + 113 D1:D806 10 8F - - .db VX_CALL0_NEG, 143 + 114 D1:D808 1A 8F - - .db VX_CALL1_NEG, 143 + 115 D1:D80A 10 8E - - .db VX_CALL0_NEG, 142 + 116 D1:D80C 1A 8E - - .db VX_CALL1_NEG, 142 + 117 D1:D80E 10 8D - - .db VX_CALL0_NEG, 141 + 118 D1:D810 1A 8D - - .db VX_CALL1_NEG, 141 + 119 D1:D812 10 8C - - .db VX_CALL0_NEG, 140 + 120 D1:D814 1A 8C - - .db VX_CALL1_NEG, 140 + 121 D1:D816 10 8B - - .db VX_CALL0_NEG, 139 + 122 D1:D818 1A 8B - - .db VX_CALL1_NEG, 139 + 123 D1:D81A 10 8A - - .db VX_CALL0_NEG, 138 + 124 D1:D81C 1A 8A - - .db VX_CALL1_NEG, 138 + 125 D1:D81E 10 89 - - .db VX_CALL0_NEG, 137 + 126 D1:D820 1A 89 - - .db VX_CALL1_NEG, 137 + 127 D1:D822 10 88 - - .db VX_CALL0_NEG, 136 + 128 D1:D824 1A 88 - - .db VX_CALL1_NEG, 136 + 129 D1:D826 10 87 - - .db VX_CALL0_NEG, 135 + 130 D1:D828 1A 87 - - .db VX_CALL1_NEG, 135 + 131 D1:D82A 10 86 - - .db VX_CALL0_NEG, 134 + 132 D1:D82C 1A 86 - - .db VX_CALL1_NEG, 134 + 133 D1:D82E 10 85 - - .db VX_CALL0_NEG, 133 + 134 D1:D830 1A 85 - - .db VX_CALL1_NEG, 133 + 135 D1:D832 10 84 - - .db VX_CALL0_NEG, 132 + 136 D1:D834 1A 84 - - .db VX_CALL1_NEG, 132 + 137 D1:D836 10 83 - - .db VX_CALL0_NEG, 131 + 138 D1:D838 1A 83 - - .db VX_CALL1_NEG, 131 + 139 D1:D83A 10 82 - - .db VX_CALL0_NEG, 130 + 140 D1:D83C 1A 82 - - .db VX_CALL1_NEG, 130 + 141 D1:D83E 10 81 - - .db VX_CALL0_NEG, 129 + 142 D1:D840 1A 81 - - .db VX_CALL1_NEG, 129 + 143 D1:D842 10 80 - - .db VX_CALL0_NEG, 128 + 144 D1:D844 1A 80 - - .db VX_CALL1_NEG, 128 + 145 D1:D846 10 7F - - .db VX_CALL0_NEG, 127 + 146 D1:D848 1A 7F - - .db VX_CALL1_NEG, 127 + 147 D1:D84A 10 7E - - .db VX_CALL0_NEG, 126 + 148 D1:D84C 1A 7E - - .db VX_CALL1_NEG, 126 + 149 D1:D84E 10 7D - - .db VX_CALL0_NEG, 125 + 150 D1:D850 1A 7D - - .db VX_CALL1_NEG, 125 + 151 D1:D852 10 7C - - .db VX_CALL0_NEG, 124 + 152 D1:D854 1A 7C - - .db VX_CALL1_NEG, 124 + 153 D1:D856 10 7B - - .db VX_CALL0_NEG, 123 + 154 D1:D858 1A 7B - - .db VX_CALL1_NEG, 123 + 155 D1:D85A 10 7A - - .db VX_CALL0_NEG, 122 + 156 D1:D85C 1A 7A - - .db VX_CALL1_NEG, 122 + 157 D1:D85E 10 79 - - .db VX_CALL0_NEG, 121 + 158 D1:D860 1A 79 - - .db VX_CALL1_NEG, 121 + 159 D1:D862 10 78 - - .db VX_CALL0_NEG, 120 + 160 D1:D864 1A 78 - - .db VX_CALL1_NEG, 120 + 161 D1:D866 10 77 - - .db VX_CALL0_NEG, 119 + 162 D1:D868 1A 77 - - .db VX_CALL1_NEG, 119 + 163 D1:D86A 10 76 - - .db VX_CALL0_NEG, 118 + 164 D1:D86C 1A 76 - - .db VX_CALL1_NEG, 118 + 165 D1:D86E 10 75 - - .db VX_CALL0_NEG, 117 + 166 D1:D870 1A 75 - - .db VX_CALL1_NEG, 117 + 167 D1:D872 10 74 - - .db VX_CALL0_NEG, 116 + 168 D1:D874 1A 74 - - .db VX_CALL1_NEG, 116 + 169 D1:D876 10 73 - - .db VX_CALL0_NEG, 115 + 170 D1:D878 1A 73 - - .db VX_CALL1_NEG, 115 + 171 D1:D87A 10 72 - - .db VX_CALL0_NEG, 114 + 172 D1:D87C 1A 72 - - .db VX_CALL1_NEG, 114 + 173 D1:D87E 10 71 - - .db VX_CALL0_NEG, 113 + 174 D1:D880 1A 71 - - .db VX_CALL1_NEG, 113 + 175 D1:D882 10 70 - - .db VX_CALL0_NEG, 112 + 176 D1:D884 1A 70 - - .db VX_CALL1_NEG, 112 + 177 D1:D886 10 6F - - .db VX_CALL0_NEG, 111 + 178 D1:D888 1A 6F - - .db VX_CALL1_NEG, 111 + 179 D1:D88A 10 6E - - .db VX_CALL0_NEG, 110 + 180 D1:D88C 1A 6E - - .db VX_CALL1_NEG, 110 + 181 D1:D88E 10 6D - - .db VX_CALL0_NEG, 109 + 182 D1:D890 1A 6D - - .db VX_CALL1_NEG, 109 + 183 D1:D892 10 6C - - .db VX_CALL0_NEG, 108 + 184 D1:D894 1A 6C - - .db VX_CALL1_NEG, 108 + 185 D1:D896 10 6B - - .db VX_CALL0_NEG, 107 + 186 D1:D898 1A 6B - - .db VX_CALL1_NEG, 107 + 187 D1:D89A 10 6A - - .db VX_CALL0_NEG, 106 + 188 D1:D89C 1A 6A - - .db VX_CALL1_NEG, 106 + 189 D1:D89E 10 69 - - .db VX_CALL0_NEG, 105 + 190 D1:D8A0 1A 69 - - .db VX_CALL1_NEG, 105 + 191 D1:D8A2 10 68 - - .db VX_CALL0_NEG, 104 + 192 D1:D8A4 1A 68 - - .db VX_CALL1_NEG, 104 + 193 D1:D8A6 10 67 - - .db VX_CALL0_NEG, 103 + 194 D1:D8A8 1A 67 - - .db VX_CALL1_NEG, 103 + 195 D1:D8AA 10 66 - - .db VX_CALL0_NEG, 102 + 196 D1:D8AC 1A 66 - - .db VX_CALL1_NEG, 102 + 197 D1:D8AE 10 65 - - .db VX_CALL0_NEG, 101 + 198 D1:D8B0 1A 65 - - .db VX_CALL1_NEG, 101 + 199 D1:D8B2 10 64 - - .db VX_CALL0_NEG, 100 + 200 D1:D8B4 1A 64 - - .db VX_CALL1_NEG, 100 + 201 D1:D8B6 10 63 - - .db VX_CALL0_NEG, 99 + 202 D1:D8B8 1A 63 - - .db VX_CALL1_NEG, 99 + 203 D1:D8BA 10 62 - - .db VX_CALL0_NEG, 98 + 204 D1:D8BC 1A 62 - - .db VX_CALL1_NEG, 98 + 205 D1:D8BE 10 61 - - .db VX_CALL0_NEG, 97 + 206 D1:D8C0 1A 61 - - .db VX_CALL1_NEG, 97 + 207 D1:D8C2 10 60 - - .db VX_CALL0_NEG, 96 + 208 D1:D8C4 1A 60 - - .db VX_CALL1_NEG, 96 + 209 D1:D8C6 10 5F - - .db VX_CALL0_NEG, 95 + 210 D1:D8C8 1A 5F - - .db VX_CALL1_NEG, 95 + 211 D1:D8CA 10 5E - - .db VX_CALL0_NEG, 94 + 212 D1:D8CC 1A 5E - - .db VX_CALL1_NEG, 94 + 213 D1:D8CE 10 5D - - .db VX_CALL0_NEG, 93 + 214 D1:D8D0 1A 5D - - .db VX_CALL1_NEG, 93 + 215 D1:D8D2 10 5C - - .db VX_CALL0_NEG, 92 + 216 D1:D8D4 1A 5C - - .db VX_CALL1_NEG, 92 + 217 D1:D8D6 10 5B - - .db VX_CALL0_NEG, 91 + 218 D1:D8D8 1A 5B - - .db VX_CALL1_NEG, 91 + 219 D1:D8DA 10 5A - - .db VX_CALL0_NEG, 90 + 220 D1:D8DC 1A 5A - - .db VX_CALL1_NEG, 90 + 221 D1:D8DE 10 59 - - .db VX_CALL0_NEG, 89 + 222 D1:D8E0 1A 59 - - .db VX_CALL1_NEG, 89 + 223 D1:D8E2 10 58 - - .db VX_CALL0_NEG, 88 + 224 D1:D8E4 1A 58 - - .db VX_CALL1_NEG, 88 + 225 D1:D8E6 10 57 - - .db VX_CALL0_NEG, 87 + 226 D1:D8E8 1A 57 - - .db VX_CALL1_NEG, 87 + 227 D1:D8EA 10 56 - - .db VX_CALL0_NEG, 86 + 228 D1:D8EC 1A 56 - - .db VX_CALL1_NEG, 86 + 229 D1:D8EE 10 55 - - .db VX_CALL0_NEG, 85 + 230 D1:D8F0 1A 55 - - .db VX_CALL1_NEG, 85 + 231 D1:D8F2 10 54 - - .db VX_CALL0_NEG, 84 + 232 D1:D8F4 1A 54 - - .db VX_CALL1_NEG, 84 + 233 D1:D8F6 10 53 - - .db VX_CALL0_NEG, 83 + 234 D1:D8F8 1A 53 - - .db VX_CALL1_NEG, 83 + 235 D1:D8FA 10 52 - - .db VX_CALL0_NEG, 82 + 236 D1:D8FC 1A 52 - - .db VX_CALL1_NEG, 82 + 237 D1:D8FE 10 51 - - .db VX_CALL0_NEG, 81 + 238 D1:D900 1A 51 - - .db VX_CALL1_NEG, 81 + 239 D1:D902 10 50 - - .db VX_CALL0_NEG, 80 + 240 D1:D904 1A 50 - - .db VX_CALL1_NEG, 80 + 241 D1:D906 10 4F - - .db VX_CALL0_NEG, 79 + 242 D1:D908 1A 4F - - .db VX_CALL1_NEG, 79 + 243 D1:D90A 10 4E - - .db VX_CALL0_NEG, 78 + 244 D1:D90C 1A 4E - - .db VX_CALL1_NEG, 78 + 245 D1:D90E 10 4D - - .db VX_CALL0_NEG, 77 + 246 D1:D910 1A 4D - - .db VX_CALL1_NEG, 77 + 247 D1:D912 10 4C - - .db VX_CALL0_NEG, 76 + 248 D1:D914 1A 4C - - .db VX_CALL1_NEG, 76 + 249 D1:D916 10 4B - - .db VX_CALL0_NEG, 75 + 250 D1:D918 1A 4B - - .db VX_CALL1_NEG, 75 + 251 D1:D91A 10 4A - - .db VX_CALL0_NEG, 74 + 252 D1:D91C 1A 4A - - .db VX_CALL1_NEG, 74 + 253 D1:D91E 10 49 - - .db VX_CALL0_NEG, 73 + 254 D1:D920 1A 49 - - .db VX_CALL1_NEG, 73 + 255 D1:D922 10 48 - - .db VX_CALL0_NEG, 72 + 256 D1:D924 1A 48 - - .db VX_CALL1_NEG, 72 + 257 D1:D926 10 47 - - .db VX_CALL0_NEG, 71 + 258 D1:D928 1A 47 - - .db VX_CALL1_NEG, 71 + 259 D1:D92A 10 46 - - .db VX_CALL0_NEG, 70 + 260 D1:D92C 1A 46 - - .db VX_CALL1_NEG, 70 + 261 D1:D92E 10 45 - - .db VX_CALL0_NEG, 69 + 262 D1:D930 1A 45 - - .db VX_CALL1_NEG, 69 + 263 D1:D932 10 44 - - .db VX_CALL0_NEG, 68 + 264 D1:D934 1A 44 - - .db VX_CALL1_NEG, 68 + 265 D1:D936 10 43 - - .db VX_CALL0_NEG, 67 + 266 D1:D938 1A 43 - - .db VX_CALL1_NEG, 67 + 267 D1:D93A 10 42 - - .db VX_CALL0_NEG, 66 + 268 D1:D93C 1A 42 - - .db VX_CALL1_NEG, 66 + 269 D1:D93E 10 41 - - .db VX_CALL0_NEG, 65 + 270 D1:D940 1A 41 - - .db VX_CALL1_NEG, 65 + 271 D1:D942 10 40 - - .db VX_CALL0_NEG, 64 + 272 D1:D944 1A 40 - - .db VX_CALL1_NEG, 64 + 273 D1:D946 10 3F - - .db VX_CALL0_NEG, 63 + 274 D1:D948 1A 3F - - .db VX_CALL1_NEG, 63 + 275 D1:D94A 10 3E - - .db VX_CALL0_NEG, 62 + 276 D1:D94C 1A 3E - - .db VX_CALL1_NEG, 62 + 277 D1:D94E 10 3D - - .db VX_CALL0_NEG, 61 + 278 D1:D950 1A 3D - - .db VX_CALL1_NEG, 61 + 279 D1:D952 10 3C - - .db VX_CALL0_NEG, 60 + 280 D1:D954 1A 3C - - .db VX_CALL1_NEG, 60 + 281 D1:D956 10 3B - - .db VX_CALL0_NEG, 59 + 282 D1:D958 1A 3B - - .db VX_CALL1_NEG, 59 + 283 D1:D95A 10 3A - - .db VX_CALL0_NEG, 58 + 284 D1:D95C 1A 3A - - .db VX_CALL1_NEG, 58 + 285 D1:D95E 10 39 - - .db VX_CALL0_NEG, 57 + 286 D1:D960 1A 39 - - .db VX_CALL1_NEG, 57 + 287 D1:D962 10 38 - - .db VX_CALL0_NEG, 56 + 288 D1:D964 1A 38 - - .db VX_CALL1_NEG, 56 + 289 D1:D966 10 37 - - .db VX_CALL0_NEG, 55 + 290 D1:D968 1A 37 - - .db VX_CALL1_NEG, 55 + 291 D1:D96A 10 36 - - .db VX_CALL0_NEG, 54 + 292 D1:D96C 1A 36 - - .db VX_CALL1_NEG, 54 + 293 D1:D96E 10 35 - - .db VX_CALL0_NEG, 53 + 294 D1:D970 1A 35 - - .db VX_CALL1_NEG, 53 + 295 D1:D972 10 34 - - .db VX_CALL0_NEG, 52 + 296 D1:D974 1A 34 - - .db VX_CALL1_NEG, 52 + 297 D1:D976 10 33 - - .db VX_CALL0_NEG, 51 + 298 D1:D978 1A 33 - - .db VX_CALL1_NEG, 51 + 299 D1:D97A 10 32 - - .db VX_CALL0_NEG, 50 + 300 D1:D97C 1A 32 - - .db VX_CALL1_NEG, 50 + 301 D1:D97E 10 31 - - .db VX_CALL0_NEG, 49 + 302 D1:D980 1A 31 - - .db VX_CALL1_NEG, 49 + 303 D1:D982 10 30 - - .db VX_CALL0_NEG, 48 + 304 D1:D984 1A 30 - - .db VX_CALL1_NEG, 48 + 305 D1:D986 10 2F - - .db VX_CALL0_NEG, 47 + 306 D1:D988 1A 2F - - .db VX_CALL1_NEG, 47 + 307 D1:D98A 10 2E - - .db VX_CALL0_NEG, 46 + 308 D1:D98C 1A 2E - - .db VX_CALL1_NEG, 46 + 309 D1:D98E 10 2D - - .db VX_CALL0_NEG, 45 + 310 D1:D990 1A 2D - - .db VX_CALL1_NEG, 45 + 311 D1:D992 10 2C - - .db VX_CALL0_NEG, 44 + 312 D1:D994 1A 2C - - .db VX_CALL1_NEG, 44 + 313 D1:D996 10 2B - - .db VX_CALL0_NEG, 43 + 314 D1:D998 1A 2B - - .db VX_CALL1_NEG, 43 + 315 D1:D99A 10 2A - - .db VX_CALL0_NEG, 42 + 316 D1:D99C 1A 2A - - .db VX_CALL1_NEG, 42 + 317 D1:D99E 10 29 - - .db VX_CALL0_NEG, 41 + 318 D1:D9A0 1A 29 - - .db VX_CALL1_NEG, 41 + 319 D1:D9A2 10 28 - - .db VX_CALL0_NEG, 40 + 320 D1:D9A4 1A 28 - - .db VX_CALL1_NEG, 40 + 321 D1:D9A6 10 27 - - .db VX_CALL0_NEG, 39 + 322 D1:D9A8 1A 27 - - .db VX_CALL1_NEG, 39 + 323 D1:D9AA 10 26 - - .db VX_CALL0_NEG, 38 + 324 D1:D9AC 1A 26 - - .db VX_CALL1_NEG, 38 + 325 D1:D9AE 10 25 - - .db VX_CALL0_NEG, 37 + 326 D1:D9B0 1A 25 - - .db VX_CALL1_NEG, 37 + 327 D1:D9B2 10 24 - - .db VX_CALL0_NEG, 36 + 328 D1:D9B4 1A 24 - - .db VX_CALL1_NEG, 36 + 329 D1:D9B6 10 23 - - .db VX_CALL0_NEG, 35 + 330 D1:D9B8 1A 23 - - .db VX_CALL1_NEG, 35 + 331 D1:D9BA 10 22 - - .db VX_CALL0_NEG, 34 + 332 D1:D9BC 1A 22 - - .db VX_CALL1_NEG, 34 + 333 D1:D9BE 10 21 - - .db VX_CALL0_NEG, 33 + 334 D1:D9C0 1A 21 - - .db VX_CALL1_NEG, 33 + 335 D1:D9C2 10 20 - - .db VX_CALL0_NEG, 32 + 336 D1:D9C4 1A 20 - - .db VX_CALL1_NEG, 32 + 337 D1:D9C6 10 1F - - .db VX_CALL0_NEG, 31 + 338 D1:D9C8 1A 1F - - .db VX_CALL1_NEG, 31 + 339 D1:D9CA 10 1E - - .db VX_CALL0_NEG, 30 + 340 D1:D9CC 1A 1E - - .db VX_CALL1_NEG, 30 + 341 D1:D9CE 10 1D - - .db VX_CALL0_NEG, 29 + 342 D1:D9D0 1A 1D - - .db VX_CALL1_NEG, 29 + 343 D1:D9D2 10 1C - - .db VX_CALL0_NEG, 28 + 344 D1:D9D4 1A 1C - - .db VX_CALL1_NEG, 28 + 345 D1:D9D6 10 1B - - .db VX_CALL0_NEG, 27 + 346 D1:D9D8 1A 1B - - .db VX_CALL1_NEG, 27 + 347 D1:D9DA 10 1A - - .db VX_CALL0_NEG, 26 + 348 D1:D9DC 1A 1A - - .db VX_CALL1_NEG, 26 + 349 D1:D9DE 10 19 - - .db VX_CALL0_NEG, 25 + 350 D1:D9E0 1A 19 - - .db VX_CALL1_NEG, 25 + 351 D1:D9E2 10 18 - - .db VX_CALL0_NEG, 24 + 352 D1:D9E4 1A 18 - - .db VX_CALL1_NEG, 24 + 353 D1:D9E6 10 17 - - .db VX_CALL0_NEG, 23 + 354 D1:D9E8 1A 17 - - .db VX_CALL1_NEG, 23 + 355 D1:D9EA 10 16 - - .db VX_CALL0_NEG, 22 + 356 D1:D9EC 1A 16 - - .db VX_CALL1_NEG, 22 + 357 D1:D9EE 10 15 - - .db VX_CALL0_NEG, 21 + 358 D1:D9F0 1A 15 - - .db VX_CALL1_NEG, 21 + 359 D1:D9F2 10 14 - - .db VX_CALL0_NEG, 20 + 360 D1:D9F4 1A 14 - - .db VX_CALL1_NEG, 20 + 361 D1:D9F6 10 13 - - .db VX_CALL0_NEG, 19 + 362 D1:D9F8 1A 13 - - .db VX_CALL1_NEG, 19 + 363 D1:D9FA 10 12 - - .db VX_CALL0_NEG, 18 + 364 D1:D9FC 1A 12 - - .db VX_CALL1_NEG, 18 + 365 D1:D9FE 10 11 - - .db VX_CALL0_NEG, 17 + 366 D1:DA00 1A 11 - - .db VX_CALL1_NEG, 17 + 367 D1:DA02 10 10 - - .db VX_CALL0_NEG, 16 + 368 D1:DA04 1A 10 - - .db VX_CALL1_NEG, 16 + 369 D1:DA06 10 0F - - .db VX_CALL0_NEG, 15 + 370 D1:DA08 1A 0F - - .db VX_CALL1_NEG, 15 + 371 D1:DA0A 10 0E - - .db VX_CALL0_NEG, 14 + 372 D1:DA0C 1A 0E - - .db VX_CALL1_NEG, 14 + 373 D1:DA0E 10 0D - - .db VX_CALL0_NEG, 13 + 374 D1:DA10 1A 0D - - .db VX_CALL1_NEG, 13 + 375 D1:DA12 10 0C - - .db VX_CALL0_NEG, 12 + 376 D1:DA14 1A 0C - - .db VX_CALL1_NEG, 12 + 377 D1:DA16 10 0B - - .db VX_CALL0_NEG, 11 + 378 D1:DA18 1A 0B - - .db VX_CALL1_NEG, 11 + 379 D1:DA1A 10 0A - - .db VX_CALL0_NEG, 10 + 380 D1:DA1C 1A 0A - - .db VX_CALL1_NEG, 10 + 381 D1:DA1E 10 09 - - .db VX_CALL0_NEG, 9 + 382 D1:DA20 1A 09 - - .db VX_CALL1_NEG, 9 + 383 D1:DA22 10 08 - - .db VX_CALL0_NEG, 8 + 384 D1:DA24 1A 08 - - .db VX_CALL1_NEG, 8 + 385 D1:DA26 10 07 - - .db VX_CALL0_NEG, 7 + 386 D1:DA28 1A 07 - - .db VX_CALL1_NEG, 7 + 387 D1:DA2A 10 06 - - .db VX_CALL0_NEG, 6 + 388 D1:DA2C 1A 06 - - .db VX_CALL1_NEG, 6 + 389 D1:DA2E 10 05 - - .db VX_CALL0_NEG, 5 + 390 D1:DA30 1A 05 - - .db VX_CALL1_NEG, 5 + 391 D1:DA32 10 04 - - .db VX_CALL0_NEG, 4 + 392 D1:DA34 1A 04 - - .db VX_CALL1_NEG, 4 + 393 D1:DA36 10 03 - - .db VX_CALL0_NEG, 3 + 394 D1:DA38 1A 03 - - .db VX_CALL1_NEG, 3 + 395 D1:DA3A 10 02 - - .db VX_CALL0_NEG, 2 + 396 D1:DA3C 1A 02 - - .db VX_CALL1_NEG, 2 + 397 D1:DA3E 10 01 - - .db VX_CALL0_NEG, 1 + 398 D1:DA40 1A 01 - - .db VX_CALL1_NEG, 1 + 399 D1:DA42 - - - - vxPixelShaderLengthLUT: + 400 D1:DA42 26 01 - - .db VX_CALL_NULL, 1 + 401 D1:DA44 19 01 - - .db VX_CALL1_POS, 1 + 402 D1:DA46 23 02 - - .db VX_CALL0_POS, 2 + 403 D1:DA48 19 02 - - .db VX_CALL1_POS, 2 + 404 D1:DA4A 23 03 - - .db VX_CALL0_POS, 3 + 405 D1:DA4C 19 03 - - .db VX_CALL1_POS, 3 + 406 D1:DA4E 23 04 - - .db VX_CALL0_POS, 4 + 407 D1:DA50 19 04 - - .db VX_CALL1_POS, 4 + 408 D1:DA52 23 05 - - .db VX_CALL0_POS, 5 + 409 D1:DA54 19 05 - - .db VX_CALL1_POS, 5 + 410 D1:DA56 23 06 - - .db VX_CALL0_POS, 6 + 411 D1:DA58 19 06 - - .db VX_CALL1_POS, 6 + 412 D1:DA5A 23 07 - - .db VX_CALL0_POS, 7 + 413 D1:DA5C 19 07 - - .db VX_CALL1_POS, 7 + 414 D1:DA5E 23 08 - - .db VX_CALL0_POS, 8 + 415 D1:DA60 19 08 - - .db VX_CALL1_POS, 8 + 416 D1:DA62 23 09 - - .db VX_CALL0_POS, 9 + 417 D1:DA64 19 09 - - .db VX_CALL1_POS, 9 + 418 D1:DA66 23 0A - - .db VX_CALL0_POS, 10 + 419 D1:DA68 19 0A - - .db VX_CALL1_POS, 10 + 420 D1:DA6A 23 0B - - .db VX_CALL0_POS, 11 + 421 D1:DA6C 19 0B - - .db VX_CALL1_POS, 11 + 422 D1:DA6E 23 0C - - .db VX_CALL0_POS, 12 + 423 D1:DA70 19 0C - - .db VX_CALL1_POS, 12 + 424 D1:DA72 23 0D - - .db VX_CALL0_POS, 13 + 425 D1:DA74 19 0D - - .db VX_CALL1_POS, 13 + 426 D1:DA76 23 0E - - .db VX_CALL0_POS, 14 + 427 D1:DA78 19 0E - - .db VX_CALL1_POS, 14 + 428 D1:DA7A 23 0F - - .db VX_CALL0_POS, 15 + 429 D1:DA7C 19 0F - - .db VX_CALL1_POS, 15 + 430 D1:DA7E 23 10 - - .db VX_CALL0_POS, 16 + 431 D1:DA80 19 10 - - .db VX_CALL1_POS, 16 + 432 D1:DA82 23 11 - - .db VX_CALL0_POS, 17 + 433 D1:DA84 19 11 - - .db VX_CALL1_POS, 17 + 434 D1:DA86 23 12 - - .db VX_CALL0_POS, 18 + 435 D1:DA88 19 12 - - .db VX_CALL1_POS, 18 + 436 D1:DA8A 23 13 - - .db VX_CALL0_POS, 19 + 437 D1:DA8C 19 13 - - .db VX_CALL1_POS, 19 + 438 D1:DA8E 23 14 - - .db VX_CALL0_POS, 20 + 439 D1:DA90 19 14 - - .db VX_CALL1_POS, 20 + 440 D1:DA92 23 15 - - .db VX_CALL0_POS, 21 + 441 D1:DA94 19 15 - - .db VX_CALL1_POS, 21 + 442 D1:DA96 23 16 - - .db VX_CALL0_POS, 22 + 443 D1:DA98 19 16 - - .db VX_CALL1_POS, 22 + 444 D1:DA9A 23 17 - - .db VX_CALL0_POS, 23 + 445 D1:DA9C 19 17 - - .db VX_CALL1_POS, 23 + 446 D1:DA9E 23 18 - - .db VX_CALL0_POS, 24 + 447 D1:DAA0 19 18 - - .db VX_CALL1_POS, 24 + 448 D1:DAA2 23 19 - - .db VX_CALL0_POS, 25 + 449 D1:DAA4 19 19 - - .db VX_CALL1_POS, 25 + 450 D1:DAA6 23 1A - - .db VX_CALL0_POS, 26 + 451 D1:DAA8 19 1A - - .db VX_CALL1_POS, 26 + 452 D1:DAAA 23 1B - - .db VX_CALL0_POS, 27 + 453 D1:DAAC 19 1B - - .db VX_CALL1_POS, 27 + 454 D1:DAAE 23 1C - - .db VX_CALL0_POS, 28 + 455 D1:DAB0 19 1C - - .db VX_CALL1_POS, 28 + 456 D1:DAB2 23 1D - - .db VX_CALL0_POS, 29 + 457 D1:DAB4 19 1D - - .db VX_CALL1_POS, 29 + 458 D1:DAB6 23 1E - - .db VX_CALL0_POS, 30 + 459 D1:DAB8 19 1E - - .db VX_CALL1_POS, 30 + 460 D1:DABA 23 1F - - .db VX_CALL0_POS, 31 + 461 D1:DABC 19 1F - - .db VX_CALL1_POS, 31 + 462 D1:DABE 23 20 - - .db VX_CALL0_POS, 32 + 463 D1:DAC0 19 20 - - .db VX_CALL1_POS, 32 + 464 D1:DAC2 23 21 - - .db VX_CALL0_POS, 33 + 465 D1:DAC4 19 21 - - .db VX_CALL1_POS, 33 + 466 D1:DAC6 23 22 - - .db VX_CALL0_POS, 34 + 467 D1:DAC8 19 22 - - .db VX_CALL1_POS, 34 + 468 D1:DACA 23 23 - - .db VX_CALL0_POS, 35 + 469 D1:DACC 19 23 - - .db VX_CALL1_POS, 35 + 470 D1:DACE 23 24 - - .db VX_CALL0_POS, 36 + 471 D1:DAD0 19 24 - - .db VX_CALL1_POS, 36 + 472 D1:DAD2 23 25 - - .db VX_CALL0_POS, 37 + 473 D1:DAD4 19 25 - - .db VX_CALL1_POS, 37 + 474 D1:DAD6 23 26 - - .db VX_CALL0_POS, 38 + 475 D1:DAD8 19 26 - - .db VX_CALL1_POS, 38 + 476 D1:DADA 23 27 - - .db VX_CALL0_POS, 39 + 477 D1:DADC 19 27 - - .db VX_CALL1_POS, 39 + 478 D1:DADE 23 28 - - .db VX_CALL0_POS, 40 + 479 D1:DAE0 19 28 - - .db VX_CALL1_POS, 40 + 480 D1:DAE2 23 29 - - .db VX_CALL0_POS, 41 + 481 D1:DAE4 19 29 - - .db VX_CALL1_POS, 41 + 482 D1:DAE6 23 2A - - .db VX_CALL0_POS, 42 + 483 D1:DAE8 19 2A - - .db VX_CALL1_POS, 42 + 484 D1:DAEA 23 2B - - .db VX_CALL0_POS, 43 + 485 D1:DAEC 19 2B - - .db VX_CALL1_POS, 43 + 486 D1:DAEE 23 2C - - .db VX_CALL0_POS, 44 + 487 D1:DAF0 19 2C - - .db VX_CALL1_POS, 44 + 488 D1:DAF2 23 2D - - .db VX_CALL0_POS, 45 + 489 D1:DAF4 19 2D - - .db VX_CALL1_POS, 45 + 490 D1:DAF6 23 2E - - .db VX_CALL0_POS, 46 + 491 D1:DAF8 19 2E - - .db VX_CALL1_POS, 46 + 492 D1:DAFA 23 2F - - .db VX_CALL0_POS, 47 + 493 D1:DAFC 19 2F - - .db VX_CALL1_POS, 47 + 494 D1:DAFE 23 30 - - .db VX_CALL0_POS, 48 + 495 D1:DB00 19 30 - - .db VX_CALL1_POS, 48 + 496 D1:DB02 23 31 - - .db VX_CALL0_POS, 49 + 497 D1:DB04 19 31 - - .db VX_CALL1_POS, 49 + 498 D1:DB06 23 32 - - .db VX_CALL0_POS, 50 + 499 D1:DB08 19 32 - - .db VX_CALL1_POS, 50 + 500 D1:DB0A 23 33 - - .db VX_CALL0_POS, 51 + 501 D1:DB0C 19 33 - - .db VX_CALL1_POS, 51 + 502 D1:DB0E 23 34 - - .db VX_CALL0_POS, 52 + 503 D1:DB10 19 34 - - .db VX_CALL1_POS, 52 + 504 D1:DB12 23 35 - - .db VX_CALL0_POS, 53 + 505 D1:DB14 19 35 - - .db VX_CALL1_POS, 53 + 506 D1:DB16 23 36 - - .db VX_CALL0_POS, 54 + 507 D1:DB18 19 36 - - .db VX_CALL1_POS, 54 + 508 D1:DB1A 23 37 - - .db VX_CALL0_POS, 55 + 509 D1:DB1C 19 37 - - .db VX_CALL1_POS, 55 + 510 D1:DB1E 23 38 - - .db VX_CALL0_POS, 56 + 511 D1:DB20 19 38 - - .db VX_CALL1_POS, 56 + 512 D1:DB22 23 39 - - .db VX_CALL0_POS, 57 + 513 D1:DB24 19 39 - - .db VX_CALL1_POS, 57 + 514 D1:DB26 23 3A - - .db VX_CALL0_POS, 58 + 515 D1:DB28 19 3A - - .db VX_CALL1_POS, 58 + 516 D1:DB2A 23 3B - - .db VX_CALL0_POS, 59 + 517 D1:DB2C 19 3B - - .db VX_CALL1_POS, 59 + 518 D1:DB2E 23 3C - - .db VX_CALL0_POS, 60 + 519 D1:DB30 19 3C - - .db VX_CALL1_POS, 60 + 520 D1:DB32 23 3D - - .db VX_CALL0_POS, 61 + 521 D1:DB34 19 3D - - .db VX_CALL1_POS, 61 + 522 D1:DB36 23 3E - - .db VX_CALL0_POS, 62 + 523 D1:DB38 19 3E - - .db VX_CALL1_POS, 62 + 524 D1:DB3A 23 3F - - .db VX_CALL0_POS, 63 + 525 D1:DB3C 19 3F - - .db VX_CALL1_POS, 63 + 526 D1:DB3E 23 40 - - .db VX_CALL0_POS, 64 + 527 D1:DB40 19 40 - - .db VX_CALL1_POS, 64 + 528 D1:DB42 23 41 - - .db VX_CALL0_POS, 65 + 529 D1:DB44 19 41 - - .db VX_CALL1_POS, 65 + 530 D1:DB46 23 42 - - .db VX_CALL0_POS, 66 + 531 D1:DB48 19 42 - - .db VX_CALL1_POS, 66 + 532 D1:DB4A 23 43 - - .db VX_CALL0_POS, 67 + 533 D1:DB4C 19 43 - - .db VX_CALL1_POS, 67 + 534 D1:DB4E 23 44 - - .db VX_CALL0_POS, 68 + 535 D1:DB50 19 44 - - .db VX_CALL1_POS, 68 + 536 D1:DB52 23 45 - - .db VX_CALL0_POS, 69 + 537 D1:DB54 19 45 - - .db VX_CALL1_POS, 69 + 538 D1:DB56 23 46 - - .db VX_CALL0_POS, 70 + 539 D1:DB58 19 46 - - .db VX_CALL1_POS, 70 + 540 D1:DB5A 23 47 - - .db VX_CALL0_POS, 71 + 541 D1:DB5C 19 47 - - .db VX_CALL1_POS, 71 + 542 D1:DB5E 23 48 - - .db VX_CALL0_POS, 72 + 543 D1:DB60 19 48 - - .db VX_CALL1_POS, 72 + 544 D1:DB62 23 49 - - .db VX_CALL0_POS, 73 + 545 D1:DB64 19 49 - - .db VX_CALL1_POS, 73 + 546 D1:DB66 23 4A - - .db VX_CALL0_POS, 74 + 547 D1:DB68 19 4A - - .db VX_CALL1_POS, 74 + 548 D1:DB6A 23 4B - - .db VX_CALL0_POS, 75 + 549 D1:DB6C 19 4B - - .db VX_CALL1_POS, 75 + 550 D1:DB6E 23 4C - - .db VX_CALL0_POS, 76 + 551 D1:DB70 19 4C - - .db VX_CALL1_POS, 76 + 552 D1:DB72 23 4D - - .db VX_CALL0_POS, 77 + 553 D1:DB74 19 4D - - .db VX_CALL1_POS, 77 + 554 D1:DB76 23 4E - - .db VX_CALL0_POS, 78 + 555 D1:DB78 19 4E - - .db VX_CALL1_POS, 78 + 556 D1:DB7A 23 4F - - .db VX_CALL0_POS, 79 + 557 D1:DB7C 19 4F - - .db VX_CALL1_POS, 79 + 558 D1:DB7E 23 50 - - .db VX_CALL0_POS, 80 + 559 D1:DB80 19 50 - - .db VX_CALL1_POS, 80 + 560 D1:DB82 23 51 - - .db VX_CALL0_POS, 81 + 561 D1:DB84 19 51 - - .db VX_CALL1_POS, 81 + 562 D1:DB86 23 52 - - .db VX_CALL0_POS, 82 + 563 D1:DB88 19 52 - - .db VX_CALL1_POS, 82 + 564 D1:DB8A 23 53 - - .db VX_CALL0_POS, 83 + 565 D1:DB8C 19 53 - - .db VX_CALL1_POS, 83 + 566 D1:DB8E 23 54 - - .db VX_CALL0_POS, 84 + 567 D1:DB90 19 54 - - .db VX_CALL1_POS, 84 + 568 D1:DB92 23 55 - - .db VX_CALL0_POS, 85 + 569 D1:DB94 19 55 - - .db VX_CALL1_POS, 85 + 570 D1:DB96 23 56 - - .db VX_CALL0_POS, 86 + 571 D1:DB98 19 56 - - .db VX_CALL1_POS, 86 + 572 D1:DB9A 23 57 - - .db VX_CALL0_POS, 87 + 573 D1:DB9C 19 57 - - .db VX_CALL1_POS, 87 + 574 D1:DB9E 23 58 - - .db VX_CALL0_POS, 88 + 575 D1:DBA0 19 58 - - .db VX_CALL1_POS, 88 + 576 D1:DBA2 23 59 - - .db VX_CALL0_POS, 89 + 577 D1:DBA4 19 59 - - .db VX_CALL1_POS, 89 + 578 D1:DBA6 23 5A - - .db VX_CALL0_POS, 90 + 579 D1:DBA8 19 5A - - .db VX_CALL1_POS, 90 + 580 D1:DBAA 23 5B - - .db VX_CALL0_POS, 91 + 581 D1:DBAC 19 5B - - .db VX_CALL1_POS, 91 + 582 D1:DBAE 23 5C - - .db VX_CALL0_POS, 92 + 583 D1:DBB0 19 5C - - .db VX_CALL1_POS, 92 + 584 D1:DBB2 23 5D - - .db VX_CALL0_POS, 93 + 585 D1:DBB4 19 5D - - .db VX_CALL1_POS, 93 + 586 D1:DBB6 23 5E - - .db VX_CALL0_POS, 94 + 587 D1:DBB8 19 5E - - .db VX_CALL1_POS, 94 + 588 D1:DBBA 23 5F - - .db VX_CALL0_POS, 95 + 589 D1:DBBC 19 5F - - .db VX_CALL1_POS, 95 + 590 D1:DBBE 23 60 - - .db VX_CALL0_POS, 96 + 591 D1:DBC0 19 60 - - .db VX_CALL1_POS, 96 + 592 D1:DBC2 23 61 - - .db VX_CALL0_POS, 97 + 593 D1:DBC4 19 61 - - .db VX_CALL1_POS, 97 + 594 D1:DBC6 23 62 - - .db VX_CALL0_POS, 98 + 595 D1:DBC8 19 62 - - .db VX_CALL1_POS, 98 + 596 D1:DBCA 23 63 - - .db VX_CALL0_POS, 99 + 597 D1:DBCC 19 63 - - .db VX_CALL1_POS, 99 + 598 D1:DBCE 23 64 - - .db VX_CALL0_POS, 100 + 599 D1:DBD0 19 64 - - .db VX_CALL1_POS, 100 + 600 D1:DBD2 23 65 - - .db VX_CALL0_POS, 101 + 601 D1:DBD4 19 65 - - .db VX_CALL1_POS, 101 + 602 D1:DBD6 23 66 - - .db VX_CALL0_POS, 102 + 603 D1:DBD8 19 66 - - .db VX_CALL1_POS, 102 + 604 D1:DBDA 23 67 - - .db VX_CALL0_POS, 103 + 605 D1:DBDC 19 67 - - .db VX_CALL1_POS, 103 + 606 D1:DBDE 23 68 - - .db VX_CALL0_POS, 104 + 607 D1:DBE0 19 68 - - .db VX_CALL1_POS, 104 + 608 D1:DBE2 23 69 - - .db VX_CALL0_POS, 105 + 609 D1:DBE4 19 69 - - .db VX_CALL1_POS, 105 + 610 D1:DBE6 23 6A - - .db VX_CALL0_POS, 106 + 611 D1:DBE8 19 6A - - .db VX_CALL1_POS, 106 + 612 D1:DBEA 23 6B - - .db VX_CALL0_POS, 107 + 613 D1:DBEC 19 6B - - .db VX_CALL1_POS, 107 + 614 D1:DBEE 23 6C - - .db VX_CALL0_POS, 108 + 615 D1:DBF0 19 6C - - .db VX_CALL1_POS, 108 + 616 D1:DBF2 23 6D - - .db VX_CALL0_POS, 109 + 617 D1:DBF4 19 6D - - .db VX_CALL1_POS, 109 + 618 D1:DBF6 23 6E - - .db VX_CALL0_POS, 110 + 619 D1:DBF8 19 6E - - .db VX_CALL1_POS, 110 + 620 D1:DBFA 23 6F - - .db VX_CALL0_POS, 111 + 621 D1:DBFC 19 6F - - .db VX_CALL1_POS, 111 + 622 D1:DBFE 23 70 - - .db VX_CALL0_POS, 112 + 623 D1:DC00 19 70 - - .db VX_CALL1_POS, 112 + 624 D1:DC02 23 71 - - .db VX_CALL0_POS, 113 + 625 D1:DC04 19 71 - - .db VX_CALL1_POS, 113 + 626 D1:DC06 23 72 - - .db VX_CALL0_POS, 114 + 627 D1:DC08 19 72 - - .db VX_CALL1_POS, 114 + 628 D1:DC0A 23 73 - - .db VX_CALL0_POS, 115 + 629 D1:DC0C 19 73 - - .db VX_CALL1_POS, 115 + 630 D1:DC0E 23 74 - - .db VX_CALL0_POS, 116 + 631 D1:DC10 19 74 - - .db VX_CALL1_POS, 116 + 632 D1:DC12 23 75 - - .db VX_CALL0_POS, 117 + 633 D1:DC14 19 75 - - .db VX_CALL1_POS, 117 + 634 D1:DC16 23 76 - - .db VX_CALL0_POS, 118 + 635 D1:DC18 19 76 - - .db VX_CALL1_POS, 118 + 636 D1:DC1A 23 77 - - .db VX_CALL0_POS, 119 + 637 D1:DC1C 19 77 - - .db VX_CALL1_POS, 119 + 638 D1:DC1E 23 78 - - .db VX_CALL0_POS, 120 + 639 D1:DC20 19 78 - - .db VX_CALL1_POS, 120 + 640 D1:DC22 23 79 - - .db VX_CALL0_POS, 121 + 641 D1:DC24 19 79 - - .db VX_CALL1_POS, 121 + 642 D1:DC26 23 7A - - .db VX_CALL0_POS, 122 + 643 D1:DC28 19 7A - - .db VX_CALL1_POS, 122 + 644 D1:DC2A 23 7B - - .db VX_CALL0_POS, 123 + 645 D1:DC2C 19 7B - - .db VX_CALL1_POS, 123 + 646 D1:DC2E 23 7C - - .db VX_CALL0_POS, 124 + 647 D1:DC30 19 7C - - .db VX_CALL1_POS, 124 + 648 D1:DC32 23 7D - - .db VX_CALL0_POS, 125 + 649 D1:DC34 19 7D - - .db VX_CALL1_POS, 125 + 650 D1:DC36 23 7E - - .db VX_CALL0_POS, 126 + 651 D1:DC38 19 7E - - .db VX_CALL1_POS, 126 + 652 D1:DC3A 23 7F - - .db VX_CALL0_POS, 127 + 653 D1:DC3C 19 7F - - .db VX_CALL1_POS, 127 + 654 D1:DC3E 23 80 - - .db VX_CALL0_POS, 128 + 655 D1:DC40 19 80 - - .db VX_CALL1_POS, 128 + 656 D1:DC42 23 81 - - .db VX_CALL0_POS, 129 + 657 D1:DC44 19 81 - - .db VX_CALL1_POS, 129 + 658 D1:DC46 23 82 - - .db VX_CALL0_POS, 130 + 659 D1:DC48 19 82 - - .db VX_CALL1_POS, 130 + 660 D1:DC4A 23 83 - - .db VX_CALL0_POS, 131 + 661 D1:DC4C 19 83 - - .db VX_CALL1_POS, 131 + 662 D1:DC4E 23 84 - - .db VX_CALL0_POS, 132 + 663 D1:DC50 19 84 - - .db VX_CALL1_POS, 132 + 664 D1:DC52 23 85 - - .db VX_CALL0_POS, 133 + 665 D1:DC54 19 85 - - .db VX_CALL1_POS, 133 + 666 D1:DC56 23 86 - - .db VX_CALL0_POS, 134 + 667 D1:DC58 19 86 - - .db VX_CALL1_POS, 134 + 668 D1:DC5A 23 87 - - .db VX_CALL0_POS, 135 + 669 D1:DC5C 19 87 - - .db VX_CALL1_POS, 135 + 670 D1:DC5E 23 88 - - .db VX_CALL0_POS, 136 + 671 D1:DC60 19 88 - - .db VX_CALL1_POS, 136 + 672 D1:DC62 23 89 - - .db VX_CALL0_POS, 137 + 673 D1:DC64 19 89 - - .db VX_CALL1_POS, 137 + 674 D1:DC66 23 8A - - .db VX_CALL0_POS, 138 + 675 D1:DC68 19 8A - - .db VX_CALL1_POS, 138 + 676 D1:DC6A 23 8B - - .db VX_CALL0_POS, 139 + 677 D1:DC6C 19 8B - - .db VX_CALL1_POS, 139 + 678 D1:DC6E 23 8C - - .db VX_CALL0_POS, 140 + 679 D1:DC70 19 8C - - .db VX_CALL1_POS, 140 + 680 D1:DC72 23 8D - - .db VX_CALL0_POS, 141 + 681 D1:DC74 19 8D - - .db VX_CALL1_POS, 141 + 682 D1:DC76 23 8E - - .db VX_CALL0_POS, 142 + 683 D1:DC78 19 8E - - .db VX_CALL1_POS, 142 + 684 D1:DC7A 23 8F - - .db VX_CALL0_POS, 143 + 685 D1:DC7C 19 8F - - .db VX_CALL1_POS, 143 + 686 D1:DC7E 23 90 - - .db VX_CALL0_POS, 144 + 687 D1:DC80 19 90 - - .db VX_CALL1_POS, 144 + 688 D1:DC82 23 91 - - .db VX_CALL0_POS, 145 + 689 D1:DC84 19 91 - - .db VX_CALL1_POS, 145 + 690 D1:DC86 23 92 - - .db VX_CALL0_POS, 146 + 691 D1:DC88 19 92 - - .db VX_CALL1_POS, 146 + 692 D1:DC8A 23 93 - - .db VX_CALL0_POS, 147 + 693 D1:DC8C 19 93 - - .db VX_CALL1_POS, 147 + 694 D1:DC8E 23 94 - - .db VX_CALL0_POS, 148 + 695 D1:DC90 19 94 - - .db VX_CALL1_POS, 148 + 696 D1:DC92 23 95 - - .db VX_CALL0_POS, 149 + 697 D1:DC94 19 95 - - .db VX_CALL1_POS, 149 + 698 D1:DC96 23 96 - - .db VX_CALL0_POS, 150 + 699 D1:DC98 19 96 - - .db VX_CALL1_POS, 150 + 700 D1:DC9A 23 97 - - .db VX_CALL0_POS, 151 + 701 D1:DC9C 19 97 - - .db VX_CALL1_POS, 151 + 702 D1:DC9E 23 98 - - .db VX_CALL0_POS, 152 + 703 D1:DCA0 19 98 - - .db VX_CALL1_POS, 152 + 704 D1:DCA2 23 99 - - .db VX_CALL0_POS, 153 + 705 D1:DCA4 19 99 - - .db VX_CALL1_POS, 153 + 706 D1:DCA6 23 9A - - .db VX_CALL0_POS, 154 + 707 D1:DCA8 19 9A - - .db VX_CALL1_POS, 154 + 708 D1:DCAA 23 9B - - .db VX_CALL0_POS, 155 + 709 D1:DCAC 19 9B - - .db VX_CALL1_POS, 155 + 710 D1:DCAE 23 9C - - .db VX_CALL0_POS, 156 + 711 D1:DCB0 19 9C - - .db VX_CALL1_POS, 156 + 712 D1:DCB2 23 9D - - .db VX_CALL0_POS, 157 + 713 D1:DCB4 19 9D - - .db VX_CALL1_POS, 157 + 714 D1:DCB6 23 9E - - .db VX_CALL0_POS, 158 + 715 D1:DCB8 19 9E - - .db VX_CALL1_POS, 158 + 716 D1:DCBA 23 9F - - .db VX_CALL0_POS, 159 + 717 D1:DCBC 19 9F - - .db VX_CALL1_POS, 159 + 718 D1:DCBE 23 A0 - - .db VX_CALL0_POS, 160 + 719 D1:DCC0 19 A0 - - .db VX_CALL1_POS, 160 + 720 D1:DCC2 - - - - vxPixelShaderExitLUT: + 721 D1:DCC2 4C 00 - - .db VX_CALL_EXIT, 0 + 722 D1:DCC4 - - - - #comment + 723 D1:DCC4 + 724 D1:DCC4 lut table : + 725 D1:DCC4 ; aligned to 2 boundary + 726 D1:DCC4 ; call is within vxPixelShader and vxPixelShader+VX_PIXEL_SHADER_SUBSIZE + 727 D1:DCC4 ; for length = 0 jump to vxPixelShader+VX_PIXEL_SHADER_SUBSIZE*2+2 + 728 D1:DCC4 ; for length < 0 jump to vxPixelShader+VX_PIXEL_SHADER_SUBSIZE-1 and VX_PIXEL_SHADER_SUBSIZE*2+vxPixelShader-1 + 729 D1:DCC4 + 730 D1:DCC4 + 731 D1:DCC4 + 732 D1:DCC4 define ld (de+) ld (de),a \ inc de + 733 D1:DCC4 #define or (de+) ex de,hl \ or (hl) \ ex de,hl \ inc de + 734 D1:DCC4 #define and (de+) ex de,hl \ and (hl) \ ex de,hl \ inc de + 735 D1:DCC4 #define xor (de+) ex de,hl \ xor (hl) \ ex de,hl \ inc de + 736 D1:DCC4 + 737 D1:DCC4 ; lightning : 11 bytes, 32 cycles/pixel + 738 D1:DCC4 ld a, h ; get v to pass to next part + 739 D1:DCC4 add hl, sp ; v=v+dv (du on high) + 740 D1:DCC4 exx ; swap + 741 D1:DCC4 ld h, a ; paste v on high byte + 742 D1:DCC4 ld c, (hl) ; fetch texture, and get index to color table in same time + 743 D1:DCC4 adc hl, de ; u=u+du (on low) + 744 D1:DCC4 ld a, (bc) ; fetch lighted color + 745 D1:DCC4 exx ; swap + 746 D1:DCC4 ldpx ; write pixel and next + 747 D1:DCC4 + 748 D1:DCC4 + 749 D1:DCC4 vxRegister0Interpolation: + 750 D1:DCC4 ; bc = y-size, ix = adress + 751 D1:DCC4 ; de= error , iy = position + 752 D1:DCC4 ; sp= 320, sps = stack + 753 D1:DCC4 ld a, c + 754 D1:DCC4 ; compute error + 755 D1:DCC4 scf + 756 D1:DCC4 sbc hl, hl + 757 D1:DCC4 ld l, a + 758 D1:DCC4 sbc hl, de + 759 D1:DCC4 sra h + 760 D1:DCC4 rr l + 761 D1:DCC4 neg + 762 D1:DCC4 vxRegister0Loop: + 763 D1:DCC4 add hl, de + 764 D1:DCC4 jr nc, vxRegister0Next + 765 D1:DCC4 vxRegister0Restore: + 766 D1:DCC4 .db $DD + 767 D1:DCC4 vxRegister0Increment=$ + 768 D1:DCC4 nop + 769 D1:DCC4 add hl, bc + 770 D1:DCC4 jr c, vxRegister0Restore + 771 D1:DCC4 vxRegister0Next: + 772 D1:DCC4 ld (iy+VX_REGISTER0), ix ; this is framebuffer adress + 773 D1:DCC4 add ix, sp + 774 D1:DCC4 lea iy, iy+12 + 775 D1:DCC4 dec a + 776 D1:DCC4 jr nz, vxRegister0Loop + 777 D1:DCC4 ; magic end bytes + 778 D1:DCC4 ld bc, vxPixelShaderExitLUT/2+1 + 779 D1:DCC4 ld (iy+VX_REGISTER1), bc + 780 D1:DCC4 ld bc, -1 + 781 D1:DCC4 ld (iy+VX_REGISTER0), bc + 782 D1:DCC4 + 783 D1:DCC4 ;; lutadress = (-fb_reg1+LUTbase/2+fb_reg0)*2 = (fb_reg0-fb_reg1)*2+LUTbase + 784 D1:DCC4 + 785 D1:DCC4 ; do calculation for longest-smallest + 786 D1:DCC4 ; if length > 0, longest is at right, so draw right to left + 787 D1:DCC4 + 788 D1:DCC4 + 789 D1:DCC4 #endcomment +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxShaderInterpolation.ez80" + 596 D1:DCC4 - - - - + 597 D1:DCC4 - - - - + 598 D1:DCC4 - - - - vxTexturePolygon: + 599 D1:DCC4 D6 02 - - sub a, 2 + 600 D1:DCC6 47 - - - ld b, a + 601 D1:DCC7 FD 27 00 - ld hl, (iy+0) + 602 D1:DCCA - - - - vxTextureCyclicLoop: + 603 D1:DCCA C5 - - - push bc + 604 D1:DCCB FD 17 03 - ld de, (iy+3) + 605 D1:DCCE FD 07 06 - ld bc, (iy+6) + 606 D1:DCD1 E5 - - - push hl + 607 D1:DCD2 FD E5 - - push iy + 608 D1:DCD4 E5 - - - push hl + 609 D1:DCD5 C5 - - - push bc + 610 D1:DCD6 D5 - - - push de + 611 D1:DCD7 CD 37 BD D1 call vxNClip + 612 D1:DCDB D1 - - - pop de + 613 D1:DCDC C1 - - - pop bc + 614 D1:DCDD E1 - - - pop hl + 615 D1:DCDE D4 0D 08 E3 call nc,vxTextureTriangleNoClip + 616 D1:DCE2 FD E1 - - pop iy + 617 D1:DCE4 ED 33 03 - lea iy, iy+3 + 618 D1:DCE7 E1 - - - pop hl + 619 D1:DCE8 C1 - - - pop bc + 620 D1:DCE9 05 - - - dec b + 621 D1:DCEA C2 CA DC D1 jp nz, vxTextureCyclicLoop + 622 D1:DCEE C9 - - - ret + 623 D1:DCEF - - - - + 624 D1:DCEF - - - - VX_INVERSE_TABLE: + 625 D1:DCEF FE FF - - .dw 65534 ; position 0, so nothing in fact (div by 0) + 626 D1:DCF1 FE FF - - .dw 65534 ; corrected + 627 D1:DCF3 FF 7F - - .dw 32767 + 628 D1:DCF5 54 55 - - .dw 21844 + 629 D1:DCF7 FF 3F - - .dw 16383 + 630 D1:DCF9 32 33 - - .dw 13106 + 631 D1:DCFB A9 2A - - .dw 10921 + 632 D1:DCFD 91 24 - - .dw 9361 + 633 D1:DCFF FF 1F - - .dw 8191 + 634 D1:DD01 70 1C - - .dw 7280 + 635 D1:DD03 98 19 - - .dw 6552 + 636 D1:DD05 44 17 - - .dw 5956 + 637 D1:DD07 54 15 - - .dw 5460 + 638 D1:DD09 B0 13 - - .dw 5040 + 639 D1:DD0B 48 12 - - .dw 4680 + 640 D1:DD0D 10 11 - - .dw 4368 + 641 D1:DD0F FF 0F - - .dw 4095 + 642 D1:DD11 0E 0F - - .dw 3854 + 643 D1:DD13 37 0E - - .dw 3639 + 644 D1:DD15 78 0D - - .dw 3448 + 645 D1:DD17 CB 0C - - .dw 3275 + 646 D1:DD19 2F 0C - - .dw 3119 + 647 D1:DD1B A1 0B - - .dw 2977 + 648 D1:DD1D 20 0B - - .dw 2848 + 649 D1:DD1F A9 0A - - .dw 2729 + 650 D1:DD21 3C 0A - - .dw 2620 + 651 D1:DD23 D7 09 - - .dw 2519 + 652 D1:DD25 7A 09 - - .dw 2426 + 653 D1:DD27 23 09 - - .dw 2339 + 654 D1:DD29 D2 08 - - .dw 2258 + 655 D1:DD2B 87 08 - - .dw 2183 + 656 D1:DD2D 41 08 - - .dw 2113 + 657 D1:DD2F FF 07 - - .dw 2047 + 658 D1:DD31 C0 07 - - .dw 1984 + 659 D1:DD33 86 07 - - .dw 1926 + 660 D1:DD35 4F 07 - - .dw 1871 + 661 D1:DD37 1B 07 - - .dw 1819 + 662 D1:DD39 EA 06 - - .dw 1770 + 663 D1:DD3B BB 06 - - .dw 1723 + 664 D1:DD3D 8F 06 - - .dw 1679 + 665 D1:DD3F 65 06 - - .dw 1637 + 666 D1:DD41 3D 06 - - .dw 1597 + 667 D1:DD43 17 06 - - .dw 1559 + 668 D1:DD45 F3 05 - - .dw 1523 + 669 D1:DD47 D0 05 - - .dw 1488 + 670 D1:DD49 AF 05 - - .dw 1455 + 671 D1:DD4B 8F 05 - - .dw 1423 + 672 D1:DD4D 71 05 - - .dw 1393 + 673 D1:DD4F 54 05 - - .dw 1364 + 674 D1:DD51 38 05 - - .dw 1336 + 675 D1:DD53 1D 05 - - .dw 1309 + 676 D1:DD55 04 05 - - .dw 1284 + 677 D1:DD57 EB 04 - - .dw 1259 + 678 D1:DD59 D3 04 - - .dw 1235 + 679 D1:DD5B BC 04 - - .dw 1212 + 680 D1:DD5D A6 04 - - .dw 1190 + 681 D1:DD5F 91 04 - - .dw 1169 + 682 D1:DD61 7C 04 - - .dw 1148 + 683 D1:DD63 68 04 - - .dw 1128 + 684 D1:DD65 55 04 - - .dw 1109 + 685 D1:DD67 43 04 - - .dw 1091 + 686 D1:DD69 31 04 - - .dw 1073 + 687 D1:DD6B 20 04 - - .dw 1056 + 688 D1:DD6D 0F 04 - - .dw 1039 + 689 D1:DD6F FF 03 - - .dw 1023 + 690 D1:DD71 EF 03 - - .dw 1007 + 691 D1:DD73 DF 03 - - .dw 991 + 692 D1:DD75 D1 03 - - .dw 977 + 693 D1:DD77 C2 03 - - .dw 962 + 694 D1:DD79 B4 03 - - .dw 948 + 695 D1:DD7B A7 03 - - .dw 935 + 696 D1:DD7D 9A 03 - - .dw 922 + 697 D1:DD7F 8D 03 - - .dw 909 + 698 D1:DD81 80 03 - - .dw 896 + 699 D1:DD83 74 03 - - .dw 884 + 700 D1:DD85 68 03 - - .dw 872 + 701 D1:DD87 5D 03 - - .dw 861 + 702 D1:DD89 52 03 - - .dw 850 + 703 D1:DD8B 47 03 - - .dw 839 + 704 D1:DD8D 3C 03 - - .dw 828 + 705 D1:DD8F 32 03 - - .dw 818 + 706 D1:DD91 28 03 - - .dw 808 + 707 D1:DD93 1E 03 - - .dw 798 + 708 D1:DD95 14 03 - - .dw 788 + 709 D1:DD97 0B 03 - - .dw 779 + 710 D1:DD99 02 03 - - .dw 770 + 711 D1:DD9B F9 02 - - .dw 761 + 712 D1:DD9D F0 02 - - .dw 752 + 713 D1:DD9F E7 02 - - .dw 743 + 714 D1:DDA1 DF 02 - - .dw 735 + 715 D1:DDA3 D7 02 - - .dw 727 + 716 D1:DDA5 CF 02 - - .dw 719 + 717 D1:DDA7 C7 02 - - .dw 711 + 718 D1:DDA9 BF 02 - - .dw 703 + 719 D1:DDAB B8 02 - - .dw 696 + 720 D1:DDAD B0 02 - - .dw 688 + 721 D1:DDAF A9 02 - - .dw 681 + 722 D1:DDB1 A2 02 - - .dw 674 + 723 D1:DDB3 9B 02 - - .dw 667 + 724 D1:DDB5 94 02 - - .dw 660 + 725 D1:DDB7 8E 02 - - .dw 654 + 726 D1:DDB9 87 02 - - .dw 647 + 727 D1:DDBB 81 02 - - .dw 641 + 728 D1:DDBD 7B 02 - - .dw 635 + 729 D1:DDBF 75 02 - - .dw 629 + 730 D1:DDC1 6F 02 - - .dw 623 + 731 D1:DDC3 69 02 - - .dw 617 + 732 D1:DDC5 63 02 - - .dw 611 + 733 D1:DDC7 5D 02 - - .dw 605 + 734 D1:DDC9 58 02 - - .dw 600 + 735 D1:DDCB 52 02 - - .dw 594 + 736 D1:DDCD 4D 02 - - .dw 589 + 737 D1:DDCF 48 02 - - .dw 584 + 738 D1:DDD1 42 02 - - .dw 578 + 739 D1:DDD3 3D 02 - - .dw 573 + 740 D1:DDD5 38 02 - - .dw 568 + 741 D1:DDD7 33 02 - - .dw 563 + 742 D1:DDD9 2F 02 - - .dw 559 + 743 D1:DDDB 2A 02 - - .dw 554 + 744 D1:DDDD 25 02 - - .dw 549 + 745 D1:DDDF 21 02 - - .dw 545 + 746 D1:DDE1 1C 02 - - .dw 540 + 747 D1:DDE3 18 02 - - .dw 536 + 748 D1:DDE5 13 02 - - .dw 531 + 749 D1:DDE7 0F 02 - - .dw 527 + 750 D1:DDE9 0B 02 - - .dw 523 + 751 D1:DDEB 07 02 - - .dw 519 + 752 D1:DDED 03 02 - - .dw 515 + 753 D1:DDEF FF 01 - - .dw 511 + 754 D1:DDF1 FB 01 - - .dw 507 + 755 D1:DDF3 F7 01 - - .dw 503 + 756 D1:DDF5 F3 01 - - .dw 499 + 757 D1:DDF7 EF 01 - - .dw 495 + 758 D1:DDF9 EB 01 - - .dw 491 + 759 D1:DDFB E8 01 - - .dw 488 + 760 D1:DDFD E4 01 - - .dw 484 + 761 D1:DDFF E0 01 - - .dw 480 + 762 D1:DE01 DD 01 - - .dw 477 + 763 D1:DE03 D9 01 - - .dw 473 + 764 D1:DE05 D6 01 - - .dw 470 + 765 D1:DE07 D3 01 - - .dw 467 + 766 D1:DE09 CF 01 - - .dw 463 + 767 D1:DE0B CC 01 - - .dw 460 + 768 D1:DE0D C9 01 - - .dw 457 + 769 D1:DE0F C6 01 - - .dw 454 + 770 D1:DE11 C2 01 - - .dw 450 + 771 D1:DE13 BF 01 - - .dw 447 + 772 D1:DE15 BC 01 - - .dw 444 + 773 D1:DE17 B9 01 - - .dw 441 + 774 D1:DE19 B6 01 - - .dw 438 + 775 D1:DE1B B3 01 - - .dw 435 + 776 D1:DE1D B1 01 - - .dw 433 + 777 D1:DE1F AE 01 - - .dw 430 + 778 D1:DE21 AB 01 - - .dw 427 + 779 D1:DE23 A8 01 - - .dw 424 + 780 D1:DE25 A5 01 - - .dw 421 + 781 D1:DE27 A3 01 - - .dw 419 + 782 D1:DE29 A0 01 - - .dw 416 + 783 D1:DE2B 9D 01 - - .dw 413 + 784 D1:DE2D 9B 01 - - .dw 411 + 785 D1:DE2F 98 01 - - .dw 408 + 786 D1:DE31 96 01 - - .dw 406 + 787 D1:DE33 93 01 - - .dw 403 + 788 D1:DE35 91 01 - - .dw 401 + 789 D1:DE37 8E 01 - - .dw 398 + 790 D1:DE39 8C 01 - - .dw 396 + 791 D1:DE3B 89 01 - - .dw 393 + 792 D1:DE3D 87 01 - - .dw 391 + 793 D1:DE3F 85 01 - - .dw 389 + 794 D1:DE41 82 01 - - .dw 386 + 795 D1:DE43 80 01 - - .dw 384 + 796 D1:DE45 7E 01 - - .dw 382 + 797 D1:DE47 7C 01 - - .dw 380 + 798 D1:DE49 79 01 - - .dw 377 + 799 D1:DE4B 77 01 - - .dw 375 + 800 D1:DE4D 75 01 - - .dw 373 + 801 D1:DE4F 73 01 - - .dw 371 + 802 D1:DE51 71 01 - - .dw 369 + 803 D1:DE53 6F 01 - - .dw 367 + 804 D1:DE55 6D 01 - - .dw 365 + 805 D1:DE57 6B 01 - - .dw 363 + 806 D1:DE59 69 01 - - .dw 361 + 807 D1:DE5B 67 01 - - .dw 359 + 808 D1:DE5D 65 01 - - .dw 357 + 809 D1:DE5F 63 01 - - .dw 355 + 810 D1:DE61 61 01 - - .dw 353 + 811 D1:DE63 5F 01 - - .dw 351 + 812 D1:DE65 5D 01 - - .dw 349 + 813 D1:DE67 5B 01 - - .dw 347 + 814 D1:DE69 59 01 - - .dw 345 + 815 D1:DE6B 57 01 - - .dw 343 + 816 D1:DE6D 56 01 - - .dw 342 + 817 D1:DE6F 54 01 - - .dw 340 + 818 D1:DE71 52 01 - - .dw 338 + 819 D1:DE73 50 01 - - .dw 336 + 820 D1:DE75 4F 01 - - .dw 335 + 821 D1:DE77 4D 01 - - .dw 333 + 822 D1:DE79 4B 01 - - .dw 331 + 823 D1:DE7B 49 01 - - .dw 329 + 824 D1:DE7D 48 01 - - .dw 328 + 825 D1:DE7F 46 01 - - .dw 326 + 826 D1:DE81 45 01 - - .dw 325 + 827 D1:DE83 43 01 - - .dw 323 + 828 D1:DE85 41 01 - - .dw 321 + 829 D1:DE87 40 01 - - .dw 320 + 830 D1:DE89 3E 01 - - .dw 318 + 831 D1:DE8B 3D 01 - - .dw 317 + 832 D1:DE8D 3B 01 - - .dw 315 + 833 D1:DE8F 3A 01 - - .dw 314 + 834 D1:DE91 38 01 - - .dw 312 + 835 D1:DE93 37 01 - - .dw 311 + 836 D1:DE95 35 01 - - .dw 309 + 837 D1:DE97 34 01 - - .dw 308 + 838 D1:DE99 32 01 - - .dw 306 + 839 D1:DE9B 31 01 - - .dw 305 + 840 D1:DE9D 2F 01 - - .dw 303 + 841 D1:DE9F 2E 01 - - .dw 302 + 842 D1:DEA1 2D 01 - - .dw 301 + 843 D1:DEA3 2B 01 - - .dw 299 + 844 D1:DEA5 2A 01 - - .dw 298 + 845 D1:DEA7 28 01 - - .dw 296 + 846 D1:DEA9 27 01 - - .dw 295 + 847 D1:DEAB 26 01 - - .dw 294 + 848 D1:DEAD 24 01 - - .dw 292 + 849 D1:DEAF 23 01 - - .dw 291 + 850 D1:DEB1 22 01 - - .dw 290 + 851 D1:DEB3 20 01 - - .dw 288 + 852 D1:DEB5 1F 01 - - .dw 287 + 853 D1:DEB7 1E 01 - - .dw 286 + 854 D1:DEB9 1D 01 - - .dw 285 + 855 D1:DEBB 1B 01 - - .dw 283 + 856 D1:DEBD 1A 01 - - .dw 282 + 857 D1:DEBF 19 01 - - .dw 281 + 858 D1:DEC1 18 01 - - .dw 280 + 859 D1:DEC3 17 01 - - .dw 279 + 860 D1:DEC5 15 01 - - .dw 277 + 861 D1:DEC7 14 01 - - .dw 276 + 862 D1:DEC9 13 01 - - .dw 275 + 863 D1:DECB 12 01 - - .dw 274 + 864 D1:DECD 11 01 - - .dw 273 + 865 D1:DECF 10 01 - - .dw 272 + 866 D1:DED1 0E 01 - - .dw 270 + 867 D1:DED3 0D 01 - - .dw 269 + 868 D1:DED5 0C 01 - - .dw 268 + 869 D1:DED7 0B 01 - - .dw 267 + 870 D1:DED9 0A 01 - - .dw 266 + 871 D1:DEDB 09 01 - - .dw 265 + 872 D1:DEDD 08 01 - - .dw 264 + 873 D1:DEDF 07 01 - - .dw 263 + 874 D1:DEE1 06 01 - - .dw 262 + 875 D1:DEE3 05 01 - - .dw 261 + 876 D1:DEE5 04 01 - - .dw 260 + 877 D1:DEE7 03 01 - - .dw 259 + 878 D1:DEE9 02 01 - - .dw 258 + 879 D1:DEEB 01 01 - - .dw 257 + 880 D1:DEED 00 01 - - .dw 256 + 881 D1:DEEF FF 00 - - .dw 255 + 882 D1:DEF1 FE 00 - - .dw 254 + 883 D1:DEF3 FD 00 - - .dw 253 + 884 D1:DEF5 FC 00 - - .dw 252 + 885 D1:DEF7 FB 00 - - .dw 251 + 886 D1:DEF9 FA 00 - - .dw 250 + 887 D1:DEFB F9 00 - - .dw 249 + 888 D1:DEFD F8 00 - - .dw 248 + 889 D1:DEFF F7 00 - - .dw 247 + 890 D1:DF01 F6 00 - - .dw 246 + 891 D1:DF03 F5 00 - - .dw 245 + 892 D1:DF05 F4 00 - - .dw 244 + 893 D1:DF07 F3 00 - - .dw 243 + 894 D1:DF09 F2 00 - - .dw 242 + 895 D1:DF0B F1 00 - - .dw 241 + 896 D1:DF0D F0 00 - - .dw 240 + 897 D1:DF0F EF 00 - - .dw 239 + 898 D1:DF11 EF 00 - - .dw 239 + 899 D1:DF13 EE 00 - - .dw 238 + 900 D1:DF15 ED 00 - - .dw 237 + 901 D1:DF17 EC 00 - - .dw 236 + 902 D1:DF19 EB 00 - - .dw 235 + 903 D1:DF1B EA 00 - - .dw 234 + 904 D1:DF1D E9 00 - - .dw 233 + 905 D1:DF1F E9 00 - - .dw 233 + 906 D1:DF21 E8 00 - - .dw 232 + 907 D1:DF23 E7 00 - - .dw 231 + 908 D1:DF25 E6 00 - - .dw 230 + 909 D1:DF27 E5 00 - - .dw 229 + 910 D1:DF29 E4 00 - - .dw 228 + 911 D1:DF2B E4 00 - - .dw 228 + 912 D1:DF2D E3 00 - - .dw 227 + 913 D1:DF2F E2 00 - - .dw 226 + 914 D1:DF31 E1 00 - - .dw 225 + 915 D1:DF33 E0 00 - - .dw 224 + 916 D1:DF35 E0 00 - - .dw 224 + 917 D1:DF37 DF 00 - - .dw 223 + 918 D1:DF39 DE 00 - - .dw 222 + 919 D1:DF3B DD 00 - - .dw 221 + 920 D1:DF3D DD 00 - - .dw 221 + 921 D1:DF3F DC 00 - - .dw 220 + 922 D1:DF41 DB 00 - - .dw 219 + 923 D1:DF43 DA 00 - - .dw 218 + 924 D1:DF45 DA 00 - - .dw 218 + 925 D1:DF47 D9 00 - - .dw 217 + 926 D1:DF49 D8 00 - - .dw 216 + 927 D1:DF4B D8 00 - - .dw 216 + 928 D1:DF4D D7 00 - - .dw 215 + 929 D1:DF4F D6 00 - - .dw 214 + 930 D1:DF51 D5 00 - - .dw 213 + 931 D1:DF53 D5 00 - - .dw 213 + 932 D1:DF55 D4 00 - - .dw 212 + 933 D1:DF57 D3 00 - - .dw 211 + 934 D1:DF59 D3 00 - - .dw 211 + 935 D1:DF5B D2 00 - - .dw 210 + 936 D1:DF5D D1 00 - - .dw 209 + 937 D1:DF5F D1 00 - - .dw 209 + 938 D1:DF61 D0 00 - - .dw 208 + 939 D1:DF63 CF 00 - - .dw 207 + 940 D1:DF65 CF 00 - - .dw 207 + 941 D1:DF67 CE 00 - - .dw 206 + 942 D1:DF69 CD 00 - - .dw 205 + 943 D1:DF6B CD 00 - - .dw 205 + 944 D1:DF6D CC 00 - - .dw 204 +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" + 13 D1:DF6F - - - - #include "vxData.inc" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxData.inc" + 1 D1:DF6F - - - - ; lightmap + 2 D1:DF6F - - - - #define db .db + 3 D1:DF6F - - - - VX_COLOR_LUT_DATA: + 4 D1:DF6F 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 00 00 00 00 + 00 00 00 01 + 20 20 20 20 + 20 20 20 21 + 20 20 20 20 + 20 20 20 21 + 20 20 20 20 + 20 20 20 21 + 20 20 20 20 + 20 20 20 21 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 00 00 00 00 + 00 01 01 01 + 20 20 20 20 + 20 21 21 21 + 20 20 20 20 + 20 21 21 21 + 20 20 20 20 + 20 21 21 21 + 20 20 20 20 + 20 21 21 21 + 20 20 20 20 + 20 21 21 21 + 20 20 20 20 + 20 21 21 21 + 20 20 20 20 + 20 21 21 21 + 20 20 20 20 + 20 21 21 21 + 20 20 20 20 + 20 21 21 21 + 20 20 20 20 + 20 21 21 21 + 20 20 20 20 + 20 21 21 21 + 20 20 20 20 + 20 21 21 21 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 00 00 00 00 + 01 01 01 01 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 20 20 20 20 + 21 21 21 21 + 00 00 00 01 + 01 01 02 02 + 00 00 00 01 + 01 01 02 02 + 00 00 00 01 + 01 01 02 02 + 08 08 08 09 + 09 09 0A 0A + 00 00 00 01 + 01 01 02 02 + 00 00 00 01 + 01 01 02 02 + 00 00 00 01 + 01 01 02 02 + 08 08 08 09 + 09 09 0A 0A + 00 00 00 01 + 01 01 02 02 + 00 00 00 01 + 01 01 02 02 + 00 00 00 01 + 01 01 02 02 + 08 08 08 09 + 09 09 0A 0A + 20 20 20 21 + 21 21 22 22 + 20 20 20 21 + 21 21 22 22 + 20 20 20 21 + 21 21 22 22 + 28 28 28 29 + 29 29 2A 2A + 20 20 20 21 + 21 21 22 22 + 20 20 20 21 + 21 21 22 22 + 20 20 20 21 + 21 21 22 22 + 28 28 28 29 + 29 29 2A 2A + 20 20 20 21 + 21 21 22 22 + 20 20 20 21 + 21 21 22 22 + 20 20 20 21 + 21 21 22 22 + 28 28 28 29 + 29 29 2A 2A + 40 40 40 41 + 41 41 42 42 + 40 40 40 41 + 41 41 42 42 + 40 40 40 41 + 41 41 42 42 + 48 48 48 49 + 49 49 4A 4A + 40 40 40 41 + 41 41 42 42 + 40 40 40 41 + 41 41 42 42 + 40 40 40 41 + 41 41 42 42 + 48 48 48 49 + 49 49 4A 4A + 00 00 00 01 + 01 02 02 02 + 00 00 00 01 + 01 02 02 02 + 00 00 00 01 + 01 02 02 02 + 08 08 08 09 + 09 0A 0A 0A + 00 00 00 01 + 01 02 02 02 + 00 00 00 01 + 01 02 02 02 + 00 00 00 01 + 01 02 02 02 + 08 08 08 09 + 09 0A 0A 0A + 00 00 00 01 + 01 02 02 02 + 00 00 00 01 + 01 02 02 02 + 00 00 00 01 + 01 02 02 02 + 08 08 08 09 + 09 0A 0A 0A + 20 20 20 21 + 21 22 22 22 + 20 20 20 21 + 21 22 22 22 + 20 20 20 21 + 21 22 22 22 + 28 28 28 29 + 29 2A 2A 2A + 20 20 20 21 + 21 22 22 22 + 20 20 20 21 + 21 22 22 22 + 20 20 20 21 + 21 22 22 22 + 28 28 28 29 + 29 2A 2A 2A + 40 40 40 41 + 41 42 42 42 + 40 40 40 41 + 41 42 42 42 + 40 40 40 41 + 41 42 42 42 + 48 48 48 49 + 49 4A 4A 4A + 40 40 40 41 + 41 42 42 42 + 40 40 40 41 + 41 42 42 42 + 40 40 40 41 + 41 42 42 42 + 48 48 48 49 + 49 4A 4A 4A + 40 40 40 41 + 41 42 42 42 + 40 40 40 41 + 41 42 42 42 + 40 40 40 41 + 41 42 42 42 + 48 48 48 49 + 49 4A 4A 4A + 00 00 01 01 + 01 02 02 03 + 00 00 01 01 + 01 02 02 03 + 08 08 09 09 + 09 0A 0A 0B + 08 08 09 09 + 09 0A 0A 0B + 00 00 01 01 + 01 02 02 03 + 00 00 01 01 + 01 02 02 03 + 08 08 09 09 + 09 0A 0A 0B + 08 08 09 09 + 09 0A 0A 0B + 20 20 21 21 + 21 22 22 23 + 20 20 21 21 + 21 22 22 23 + 28 28 29 29 + 29 2A 2A 2B + 28 28 29 29 + 29 2A 2A 2B + 20 20 21 21 + 21 22 22 23 + 20 20 21 21 + 21 22 22 23 + 28 28 29 29 + 29 2A 2A 2B + 28 28 29 29 + 29 2A 2A 2B + 20 20 21 21 + 21 22 22 23 + 20 20 21 21 + 21 22 22 23 + 28 28 29 29 + 29 2A 2A 2B + 28 28 29 29 + 29 2A 2A 2B + 40 40 41 41 + 41 42 42 43 + 40 40 41 41 + 41 42 42 43 + 48 48 49 49 + 49 4A 4A 4B + 48 48 49 49 + 49 4A 4A 4B + 40 40 41 41 + 41 42 42 43 + 40 40 41 41 + 41 42 42 43 + 48 48 49 49 + 49 4A 4A 4B + 48 48 49 49 + 49 4A 4A 4B + 60 60 61 61 + 61 62 62 63 + 60 60 61 61 + 61 62 62 63 + 68 68 69 69 + 69 6A 6A 6B + 68 68 69 69 + 69 6A 6A 6B + 00 00 01 01 + 02 02 03 03 + 00 00 01 01 + 02 02 03 03 + 08 08 09 09 + 0A 0A 0B 0B + 08 08 09 09 + 0A 0A 0B 0B + 00 00 01 01 + 02 02 03 03 + 00 00 01 01 + 02 02 03 03 + 08 08 09 09 + 0A 0A 0B 0B + 08 08 09 09 + 0A 0A 0B 0B + 20 20 21 21 + 22 22 23 23 + 20 20 21 21 + 22 22 23 23 + 28 28 29 29 + 2A 2A 2B 2B + 28 28 29 29 + 2A 2A 2B 2B + 20 20 21 21 + 22 22 23 23 + 20 20 21 21 + 22 22 23 23 + 28 28 29 29 + 2A 2A 2B 2B + 28 28 29 29 + 2A 2A 2B 2B + 40 40 41 41 + 42 42 43 43 + 40 40 41 41 + 42 42 43 43 + 48 48 49 49 + 4A 4A 4B 4B + 48 48 49 49 + 4A 4A 4B 4B + 40 40 41 41 + 42 42 43 43 + 40 40 41 41 + 42 42 43 43 + 48 48 49 49 + 4A 4A 4B 4B + 48 48 49 49 + 4A 4A 4B 4B + 60 60 61 61 + 62 62 63 63 + 60 60 61 61 + 62 62 63 63 + 68 68 69 69 + 6A 6A 6B 6B + 68 68 69 69 + 6A 6A 6B 6B + 60 60 61 61 + 62 62 63 63 + 60 60 61 61 + 62 62 63 63 + 68 68 69 69 + 6A 6A 6B 6B + 68 68 69 69 + 6A 6A 6B 6B + 00 00 01 01 + 02 02 03 04 + 00 00 01 01 + 02 02 03 04 + 08 08 09 09 + 0A 0A 0B 0C + 08 08 09 09 + 0A 0A 0B 0C + 00 00 01 01 + 02 02 03 04 + 00 00 01 01 + 02 02 03 04 + 08 08 09 09 + 0A 0A 0B 0C + 08 08 09 09 + 0A 0A 0B 0C + 20 20 21 21 + 22 22 23 24 + 20 20 21 21 + 22 22 23 24 + 28 28 29 29 + 2A 2A 2B 2C + 28 28 29 29 + 2A 2A 2B 2C + 20 20 21 21 + 22 22 23 24 + 20 20 21 21 + 22 22 23 24 + 28 28 29 29 + 2A 2A 2B 2C + 28 28 29 29 + 2A 2A 2B 2C + 40 40 41 41 + 42 42 43 44 + 40 40 41 41 + 42 42 43 44 + 48 48 49 49 + 4A 4A 4B 4C + 48 48 49 49 + 4A 4A 4B 4C + 40 40 41 41 + 42 42 43 44 + 40 40 41 41 + 42 42 43 44 + 48 48 49 49 + 4A 4A 4B 4C + 48 48 49 49 + 4A 4A 4B 4C + 60 60 61 61 + 62 62 63 64 + 60 60 61 61 + 62 62 63 64 + 68 68 69 69 + 6A 6A 6B 6C + 68 68 69 69 + 6A 6A 6B 6C + 80 80 81 81 + 82 82 83 84 + 80 80 81 81 + 82 82 83 84 + 88 88 89 89 + 8A 8A 8B 8C + 88 88 89 89 + 8A 8A 8B 8C + 00 00 01 02 + 02 03 03 04 + 00 00 01 02 + 02 03 03 04 + 08 08 09 0A + 0A 0B 0B 0C + 10 10 11 12 + 12 13 13 14 + 00 00 01 02 + 02 03 03 04 + 00 00 01 02 + 02 03 03 04 + 08 08 09 0A + 0A 0B 0B 0C + 10 10 11 12 + 12 13 13 14 + 20 20 21 22 + 22 23 23 24 + 20 20 21 22 + 22 23 23 24 + 28 28 29 2A + 2A 2B 2B 2C + 30 30 31 32 + 32 33 33 34 + 40 40 41 42 + 42 43 43 44 + 40 40 41 42 + 42 43 43 44 + 48 48 49 4A + 4A 4B 4B 4C + 50 50 51 52 + 52 53 53 54 + 40 40 41 42 + 42 43 43 44 + 40 40 41 42 + 42 43 43 44 + 48 48 49 4A + 4A 4B 4B 4C + 50 50 51 52 + 52 53 53 54 + 60 60 61 62 + 62 63 63 64 + 60 60 61 62 + 62 63 63 64 + 68 68 69 6A + 6A 6B 6B 6C + 70 70 71 72 + 72 73 73 74 + 60 60 61 62 + 62 63 63 64 + 60 60 61 62 + 62 63 63 64 + 68 68 69 6A + 6A 6B 6B 6C + 70 70 71 72 + 72 73 73 74 + 80 80 81 82 + 82 83 83 84 + 80 80 81 82 + 82 83 83 84 + 88 88 89 8A + 8A 8B 8B 8C + 90 90 91 92 + 92 93 93 94 + 00 00 01 02 + 02 03 04 04 + 00 00 01 02 + 02 03 04 04 + 08 08 09 0A + 0A 0B 0C 0C + 10 10 11 12 + 12 13 14 14 + 00 00 01 02 + 02 03 04 04 + 00 00 01 02 + 02 03 04 04 + 08 08 09 0A + 0A 0B 0C 0C + 10 10 11 12 + 12 13 14 14 + 20 20 21 22 + 22 23 24 24 + 20 20 21 22 + 22 23 24 24 + 28 28 29 2A + 2A 2B 2C 2C + 30 30 31 32 + 32 33 34 34 + 40 40 41 42 + 42 43 44 44 + 40 40 41 42 + 42 43 44 44 + 48 48 49 4A + 4A 4B 4C 4C + 50 50 51 52 + 52 53 54 54 + 40 40 41 42 + 42 43 44 44 + 40 40 41 42 + 42 43 44 44 + 48 48 49 4A + 4A 4B 4C 4C + 50 50 51 52 + 52 53 54 54 + 60 60 61 62 + 62 63 64 64 + 60 60 61 62 + 62 63 64 64 + 68 68 69 6A + 6A 6B 6C 6C + 70 70 71 72 + 72 73 74 74 + 80 80 81 82 + 82 83 84 84 + 80 80 81 82 + 82 83 84 84 + 88 88 89 8A + 8A 8B 8C 8C + 90 90 91 92 + 92 93 94 94 + 80 80 81 82 + 82 83 84 84 + 80 80 81 82 + 82 83 84 84 + 88 88 89 8A + 8A 8B 8C 8C + 90 90 91 92 + 92 93 94 94 + 00 00 01 02 + 03 03 04 05 + 00 00 01 02 + 03 03 04 05 + 08 08 09 0A + 0B 0B 0C 0D + 10 10 11 12 + 13 13 14 15 + 00 00 01 02 + 03 03 04 05 + 00 00 01 02 + 03 03 04 05 + 08 08 09 0A + 0B 0B 0C 0D + 10 10 11 12 + 13 13 14 15 + 20 20 21 22 + 23 23 24 25 + 20 20 21 22 + 23 23 24 25 + 28 28 29 2A + 2B 2B 2C 2D + 30 30 31 32 + 33 33 34 35 + 40 40 41 42 + 43 43 44 45 + 40 40 41 42 + 43 43 44 45 + 48 48 49 4A + 4B 4B 4C 4D + 50 50 51 52 + 53 53 54 55 + 60 60 61 62 + 63 63 64 65 + 60 60 61 62 + 63 63 64 65 + 68 68 69 6A + 6B 6B 6C 6D + 70 70 71 72 + 73 73 74 75 + 60 60 61 62 + 63 63 64 65 + 60 60 61 62 + 63 63 64 65 + 68 68 69 6A + 6B 6B 6C 6D + 70 70 71 72 + 73 73 74 75 + 80 80 81 82 + 83 83 84 85 + 80 80 81 82 + 83 83 84 85 + 88 88 89 8A + 8B 8B 8C 8D + 90 90 91 92 + 93 93 94 95 + A0 A0 A1 A2 + A3 A3 A4 A5 + A0 A0 A1 A2 + A3 A3 A4 A5 + A8 A8 A9 AA + AB AB AC AD + B0 B0 B1 B2 + B3 B3 B4 B5 + 00 00 01 02 + 03 04 05 05 + 00 00 01 02 + 03 04 05 05 + 08 08 09 0A + 0B 0C 0D 0D + 10 10 11 12 + 13 14 15 15 + 00 00 01 02 + 03 04 05 05 + 00 00 01 02 + 03 04 05 05 + 08 08 09 0A + 0B 0C 0D 0D + 10 10 11 12 + 13 14 15 15 + 20 20 21 22 + 23 24 25 25 + 20 20 21 22 + 23 24 25 25 + 28 28 29 2A + 2B 2C 2D 2D + 30 30 31 32 + 33 34 35 35 + 40 40 41 42 + 43 44 45 45 + 40 40 41 42 + 43 44 45 45 + 48 48 49 4A + 4B 4C 4D 4D + 50 50 51 52 + 53 54 55 55 + 60 60 61 62 + 63 64 65 65 + 60 60 61 62 + 63 64 65 65 + 68 68 69 6A + 6B 6C 6D 6D + 70 70 71 72 + 73 74 75 75 + 80 80 81 82 + 83 84 85 85 + 80 80 81 82 + 83 84 85 85 + 88 88 89 8A + 8B 8C 8D 8D + 90 90 91 92 + 93 94 95 95 + A0 A0 A1 A2 + A3 A4 A5 A5 + A0 A0 A1 A2 + A3 A4 A5 A5 + A8 A8 A9 AA + AB AC AD AD + B0 B0 B1 B2 + B3 B4 B5 B5 + A0 A0 A1 A2 + A3 A4 A5 A5 + A0 A0 A1 A2 + A3 A4 A5 A5 + A8 A8 A9 AA + AB AC AD AD + B0 B0 B1 B2 + B3 B4 B5 B5 + 00 01 01 02 + 03 04 05 06 + 08 09 09 0A + 0B 0C 0D 0E + 08 09 09 0A + 0B 0C 0D 0E + 10 11 11 12 + 13 14 15 16 + 20 21 21 22 + 23 24 25 26 + 28 29 29 2A + 2B 2C 2D 2E + 28 29 29 2A + 2B 2C 2D 2E + 30 31 31 32 + 33 34 35 36 + 20 21 21 22 + 23 24 25 26 + 28 29 29 2A + 2B 2C 2D 2E + 28 29 29 2A + 2B 2C 2D 2E + 30 31 31 32 + 33 34 35 36 + 40 41 41 42 + 43 44 45 46 + 48 49 49 4A + 4B 4C 4D 4E + 48 49 49 4A + 4B 4C 4D 4E + 50 51 51 52 + 53 54 55 56 + 60 61 61 62 + 63 64 65 66 + 68 69 69 6A + 6B 6C 6D 6E + 68 69 69 6A + 6B 6C 6D 6E + 70 71 71 72 + 73 74 75 76 + 80 81 81 82 + 83 84 85 86 + 88 89 89 8A + 8B 8C 8D 8E + 88 89 89 8A + 8B 8C 8D 8E + 90 91 91 92 + 93 94 95 96 + A0 A1 A1 A2 + A3 A4 A5 A6 + A8 A9 A9 AA + AB AC AD AE + A8 A9 A9 AA + AB AC AD AE + B0 B1 B1 B2 + B3 B4 B5 B6 + C0 C1 C1 C2 + C3 C4 C5 C6 + C8 C9 C9 CA + CB CC CD CE + C8 C9 C9 CA + CB CC CD CE + D0 D1 D1 D2 + D3 D4 D5 D6 + 00 01 02 02 + 03 04 05 06 + 08 09 0A 0A + 0B 0C 0D 0E + 10 11 12 12 + 13 14 15 16 + 10 11 12 12 + 13 14 15 16 + 20 21 22 22 + 23 24 25 26 + 28 29 2A 2A + 2B 2C 2D 2E + 30 31 32 32 + 33 34 35 36 + 30 31 32 32 + 33 34 35 36 + 40 41 42 42 + 43 44 45 46 + 48 49 4A 4A + 4B 4C 4D 4E + 50 51 52 52 + 53 54 55 56 + 50 51 52 52 + 53 54 55 56 + 40 41 42 42 + 43 44 45 46 + 48 49 4A 4A + 4B 4C 4D 4E + 50 51 52 52 + 53 54 55 56 + 50 51 52 52 + 53 54 55 56 + 60 61 62 62 + 63 64 65 66 + 68 69 6A 6A + 6B 6C 6D 6E + 70 71 72 72 + 73 74 75 76 + 70 71 72 72 + 73 74 75 76 + 80 81 82 82 + 83 84 85 86 + 88 89 8A 8A + 8B 8C 8D 8E + 90 91 92 92 + 93 94 95 96 + 90 91 92 92 + 93 94 95 96 + A0 A1 A2 A2 + A3 A4 A5 A6 + A8 A9 AA AA + AB AC AD AE + B0 B1 B2 B2 + B3 B4 B5 B6 + B0 B1 B2 B2 + B3 B4 B5 B6 + C0 C1 C2 C2 + C3 C4 C5 C6 + C8 C9 CA CA + CB CC CD CE + D0 D1 D2 D2 + D3 D4 D5 D6 + D0 D1 D2 D2 + D3 D4 D5 D6 + 00 01 02 03 + 04 05 06 07 + 08 09 0A 0B + 0C 0D 0E 0F + 10 11 12 13 + 14 15 16 17 + 18 19 1A 1B + 1C 1D 1E 1F + 20 21 22 23 + 24 25 26 27 + 28 29 2A 2B + 2C 2D 2E 2F + 30 31 32 33 + 34 35 36 37 + 38 39 3A 3B + 3C 3D 3E 3F + 40 41 42 43 + 44 45 46 47 + 48 49 4A 4B + 4C 4D 4E 4F + 50 51 52 53 + 54 55 56 57 + 58 59 5A 5B + 5C 5D 5E 5F + 60 61 62 63 + 64 65 66 67 + 68 69 6A 6B + 6C 6D 6E 6F + 70 71 72 73 + 74 75 76 77 + 78 79 7A 7B + 7C 7D 7E 7F + 80 81 82 83 + 84 85 86 87 + 88 89 8A 8B + 8C 8D 8E 8F + 90 91 92 93 + 94 95 96 97 + 98 99 9A 9B + 9C 9D 9E 9F + A0 A1 A2 A3 + A4 A5 A6 A7 + A8 A9 AA AB + AC AD AE AF + B0 B1 B2 B3 + B4 B5 B6 B7 + B8 B9 BA BB + BC BD BE BF + C0 C1 C2 C3 + C4 C5 C6 C7 + C8 C9 CA CB + CC CD CE CF + D0 D1 D2 D3 + D4 D5 D6 D7 + D8 D9 DA DB + DC DD DE DF + E0 E1 E2 E3 + E4 E5 E6 E7 + E8 E9 EA EB + EC ED EE EF + F0 F1 F2 F3 + F4 F5 F6 F7 + F8 F9 FA FB + FC FD FE FF + 00 01 02 03 + 04 05 06 07 + 08 09 0A 0B + 0C 0D 0E 0F + 10 11 12 13 + 14 15 16 17 + 18 19 1A 1B + 1C 1D 1E 1F + 20 21 22 23 + 24 25 26 27 + 28 29 2A 2B + 2C 2D 2E 2F + 30 31 32 33 + 34 35 36 37 + 38 39 3A 3B + 3C 3D 3E 3F + 40 41 42 43 + 44 45 46 47 + 48 49 4A 4B + 4C 4D 4E 4F + 50 51 52 53 + 54 55 56 57 + 58 59 5A 5B + 5C 5D 5E 5F + 60 61 62 63 + 64 65 66 67 + 68 69 6A 6B + 6C 6D 6E 6F + 70 71 72 73 + 74 75 76 77 + 78 79 7A 7B + 7C 7D 7E 7F + 80 81 82 83 + 84 85 86 87 + 88 89 8A 8B + 8C 8D 8E 8F + 90 91 92 93 + 94 95 96 97 + 98 99 9A 9B + 9C 9D 9E 9F + A0 A1 A2 A3 + A4 A5 A6 A7 + A8 A9 AA AB + AC AD AE AF + B0 B1 B2 B3 + B4 B5 B6 B7 + B8 B9 BA BB + BC BD BE BF + C0 C1 C2 C3 + C4 C5 C6 C7 + C8 C9 CA CB + CC CD CE CF + D0 D1 D2 D3 + D4 D5 D6 D7 + D8 D9 DA DB + DC DD DE DF + E0 E1 E2 E3 + E4 E5 E6 E7 + E8 E9 EA EB + EC ED EE EF + F0 F1 F2 F3 + F4 F5 F6 F7 + F8 F9 FA FB + FC FD FE FF + 00 01 02 03 + 04 05 06 07 + 08 09 0A 0B + 0C 0D 0E 0F + 10 11 12 13 + 14 15 16 17 + 18 19 1A 1B + 1C 1D 1E 1F + 20 21 22 23 + 24 25 26 27 + 28 29 2A 2B + 2C 2D 2E 2F + 30 31 32 33 + 34 35 36 37 + 38 39 3A 3B + 3C 3D 3E 3F + 40 41 42 43 + 44 45 46 47 + 48 49 4A 4B + 4C 4D 4E 4F + 50 51 52 53 + 54 55 56 57 + 58 59 5A 5B + 5C 5D 5E 5F + 60 61 62 63 + 64 65 66 67 + 68 69 6A 6B + 6C 6D 6E 6F + 70 71 72 73 + 74 75 76 77 + 78 79 7A 7B + 7C 7D 7E 7F + 80 81 82 83 + 84 85 86 87 + 88 89 8A 8B + 8C 8D 8E 8F + 90 91 92 93 + 94 95 96 97 + 98 99 9A 9B + 9C 9D 9E 9F + A0 A1 A2 A3 + A4 A5 A6 A7 + A8 A9 AA AB + AC AD AE AF + B0 B1 B2 B3 + B4 B5 B6 B7 + B8 B9 BA BB + BC BD BE BF + C0 C1 C2 C3 + C4 C5 C6 C7 + C8 C9 CA CB + CC CD CE CF + D0 D1 D2 D3 + D4 D5 D6 D7 + D8 D9 DA DB + DC DD DE DF + E0 E1 E2 E3 + E4 E5 E6 E7 + E8 E9 EA EB + EC ED EE EF + F0 F1 F2 F3 + F4 F5 F6 F7 + F8 F9 FA FB + FC FD FE FF + 00 01 02 03 + 04 06 07 07 + 08 09 0A 0B + 0C 0E 0F 0F + 10 11 12 13 + 14 16 17 17 + 18 19 1A 1B + 1C 1E 1F 1F + 20 21 22 23 + 24 26 27 27 + 28 29 2A 2B + 2C 2E 2F 2F + 30 31 32 33 + 34 36 37 37 + 38 39 3A 3B + 3C 3E 3F 3F + 40 41 42 43 + 44 46 47 47 + 48 49 4A 4B + 4C 4E 4F 4F + 50 51 52 53 + 54 56 57 57 + 58 59 5A 5B + 5C 5E 5F 5F + 60 61 62 63 + 64 66 67 67 + 68 69 6A 6B + 6C 6E 6F 6F + 70 71 72 73 + 74 76 77 77 + 78 79 7A 7B + 7C 7E 7F 7F + 80 81 82 83 + 84 86 87 87 + 88 89 8A 8B + 8C 8E 8F 8F + 90 91 92 93 + 94 96 97 97 + 98 99 9A 9B + 9C 9E 9F 9F + C0 C1 C2 C3 + C4 C6 C7 C7 + C8 C9 CA CB + CC CE CF CF + D0 D1 D2 D3 + D4 D6 D7 D7 + D8 D9 DA DB + DC DE DF DF + E0 E1 E2 E3 + E4 E6 E7 E7 + E8 E9 EA EB + EC EE EF EF + F0 F1 F2 F3 + F4 F6 F7 F7 + F8 F9 FA FB + FC FE FF FF + E0 E1 E2 E3 + E4 E6 E7 E7 + E8 E9 EA EB + EC EE EF EF + F0 F1 F2 F3 + F4 F6 F7 F7 + F8 F9 FA FB + FC FE FF FF + 00 01 02 03 + 05 06 07 07 + 08 09 0A 0B + 0D 0E 0F 0F + 10 11 12 13 + 15 16 17 17 + 18 19 1A 1B + 1D 1E 1F 1F + 20 21 22 23 + 25 26 27 27 + 28 29 2A 2B + 2D 2E 2F 2F + 30 31 32 33 + 35 36 37 37 + 38 39 3A 3B + 3D 3E 3F 3F + 40 41 42 43 + 45 46 47 47 + 48 49 4A 4B + 4D 4E 4F 4F + 50 51 52 53 + 55 56 57 57 + 58 59 5A 5B + 5D 5E 5F 5F + 60 61 62 63 + 65 66 67 67 + 68 69 6A 6B + 6D 6E 6F 6F + 70 71 72 73 + 75 76 77 77 + 78 79 7A 7B + 7D 7E 7F 7F + A0 A1 A2 A3 + A5 A6 A7 A7 + A8 A9 AA AB + AD AE AF AF + B0 B1 B2 B3 + B5 B6 B7 B7 + B8 B9 BA BB + BD BE BF BF + C0 C1 C2 C3 + C5 C6 C7 C7 + C8 C9 CA CB + CD CE CF CF + D0 D1 D2 D3 + D5 D6 D7 D7 + D8 D9 DA DB + DD DE DF DF + E0 E1 E2 E3 + E5 E6 E7 E7 + E8 E9 EA EB + ED EE EF EF + F0 F1 F2 F3 + F5 F6 F7 F7 + F8 F9 FA FB + FD FE FF FF + E0 E1 E2 E3 + E5 E6 E7 E7 + E8 E9 EA EB + ED EE EF EF + F0 F1 F2 F3 + F5 F6 F7 F7 + F8 F9 FA FB + FD FE FF FF + 00 01 02 04 + 05 06 07 07 + 08 09 0A 0C + 0D 0E 0F 0F + 10 11 12 14 + 15 16 17 17 + 18 19 1A 1C + 1D 1E 1F 1F + 20 21 22 24 + 25 26 27 27 + 28 29 2A 2C + 2D 2E 2F 2F + 30 31 32 34 + 35 36 37 37 + 38 39 3A 3C + 3D 3E 3F 3F + 40 41 42 44 + 45 46 47 47 + 48 49 4A 4C + 4D 4E 4F 4F + 50 51 52 54 + 55 56 57 57 + 58 59 5A 5C + 5D 5E 5F 5F + 80 81 82 84 + 85 86 87 87 + 88 89 8A 8C + 8D 8E 8F 8F + 90 91 92 94 + 95 96 97 97 + 98 99 9A 9C + 9D 9E 9F 9F + A0 A1 A2 A4 + A5 A6 A7 A7 + A8 A9 AA AC + AD AE AF AF + B0 B1 B2 B4 + B5 B6 B7 B7 + B8 B9 BA BC + BD BE BF BF + C0 C1 C2 C4 + C5 C6 C7 C7 + C8 C9 CA CC + CD CE CF CF + D0 D1 D2 D4 + D5 D6 D7 D7 + D8 D9 DA DC + DD DE DF DF + E0 E1 E2 E4 + E5 E6 E7 E7 + E8 E9 EA EC + ED EE EF EF + F0 F1 F2 F4 + F5 F6 F7 F7 + F8 F9 FA FC + FD FE FF FF + E0 E1 E2 E4 + E5 E6 E7 E7 + E8 E9 EA EC + ED EE EF EF + F0 F1 F2 F4 + F5 F6 F7 F7 + F8 F9 FA FC + FD FE FF FF + 00 01 02 04 + 05 07 07 07 + 08 09 0A 0C + 0D 0F 0F 0F + 10 11 12 14 + 15 17 17 17 + 18 19 1A 1C + 1D 1F 1F 1F + 20 21 22 24 + 25 27 27 27 + 28 29 2A 2C + 2D 2F 2F 2F + 30 31 32 34 + 35 37 37 37 + 38 39 3A 3C + 3D 3F 3F 3F + 40 41 42 44 + 45 47 47 47 + 48 49 4A 4C + 4D 4F 4F 4F + 50 51 52 54 + 55 57 57 57 + 58 59 5A 5C + 5D 5F 5F 5F + 80 81 82 84 + 85 87 87 87 + 88 89 8A 8C + 8D 8F 8F 8F + 90 91 92 94 + 95 97 97 97 + 98 99 9A 9C + 9D 9F 9F 9F + A0 A1 A2 A4 + A5 A7 A7 A7 + A8 A9 AA AC + AD AF AF AF + B0 B1 B2 B4 + B5 B7 B7 B7 + B8 B9 BA BC + BD BF BF BF + E0 E1 E2 E4 + E5 E7 E7 E7 + E8 E9 EA EC + ED EF EF EF + F0 F1 F2 F4 + F5 F7 F7 F7 + F8 F9 FA FC + FD FF FF FF + E0 E1 E2 E4 + E5 E7 E7 E7 + E8 E9 EA EC + ED EF EF EF + F0 F1 F2 F4 + F5 F7 F7 F7 + F8 F9 FA FC + FD FF FF FF + E0 E1 E2 E4 + E5 E7 E7 E7 + E8 E9 EA EC + ED EF EF EF + F0 F1 F2 F4 + F5 F7 F7 F7 + F8 F9 FA FC + FD FF FF FF + 00 01 03 04 + 05 07 07 07 + 08 09 0B 0C + 0D 0F 0F 0F + 18 19 1B 1C + 1D 1F 1F 1F + 18 19 1B 1C + 1D 1F 1F 1F + 20 21 23 24 + 25 27 27 27 + 28 29 2B 2C + 2D 2F 2F 2F + 38 39 3B 3C + 3D 3F 3F 3F + 38 39 3B 3C + 3D 3F 3F 3F + 60 61 63 64 + 65 67 67 67 + 68 69 6B 6C + 6D 6F 6F 6F + 78 79 7B 7C + 7D 7F 7F 7F + 78 79 7B 7C + 7D 7F 7F 7F + 80 81 83 84 + 85 87 87 87 + 88 89 8B 8C + 8D 8F 8F 8F + 98 99 9B 9C + 9D 9F 9F 9F + 98 99 9B 9C + 9D 9F 9F 9F + A0 A1 A3 A4 + A5 A7 A7 A7 + A8 A9 AB AC + AD AF AF AF + B8 B9 BB BC + BD BF BF BF + B8 B9 BB BC + BD BF BF BF + E0 E1 E3 E4 + E5 E7 E7 E7 + E8 E9 EB EC + ED EF EF EF + F8 F9 FB FC + FD FF FF FF + F8 F9 FB FC + FD FF FF FF + E0 E1 E3 E4 + E5 E7 E7 E7 + E8 E9 EB EC + ED EF EF EF + F8 F9 FB FC + FD FF FF FF + F8 F9 FB FC + FD FF FF FF + E0 E1 E3 E4 + E5 E7 E7 E7 + E8 E9 EB EC + ED EF EF EF + F8 F9 FB FC + FD FF FF FF + F8 F9 FB FC + FD FF FF FF + 00 01 03 04 + 06 07 07 07 + 08 09 0B 0C + 0E 0F 0F 0F + 18 19 1B 1C + 1E 1F 1F 1F + 18 19 1B 1C + 1E 1F 1F 1F + 20 21 23 24 + 26 27 27 27 + 28 29 2B 2C + 2E 2F 2F 2F + 38 39 3B 3C + 3E 3F 3F 3F + 38 39 3B 3C + 3E 3F 3F 3F + 60 61 63 64 + 66 67 67 67 + 68 69 6B 6C + 6E 6F 6F 6F + 78 79 7B 7C + 7E 7F 7F 7F + 78 79 7B 7C + 7E 7F 7F 7F + 80 81 83 84 + 86 87 87 87 + 88 89 8B 8C + 8E 8F 8F 8F + 98 99 9B 9C + 9E 9F 9F 9F + 98 99 9B 9C + 9E 9F 9F 9F + C0 C1 C3 C4 + C6 C7 C7 C7 + C8 C9 CB CC + CE CF CF CF + D8 D9 DB DC + DE DF DF DF + D8 D9 DB DC + DE DF DF DF + E0 E1 E3 E4 + E6 E7 E7 E7 + E8 E9 EB EC + EE EF EF EF + F8 F9 FB FC + FE FF FF FF + F8 F9 FB FC + FE FF FF FF + E0 E1 E3 E4 + E6 E7 E7 E7 + E8 E9 EB EC + EE EF EF EF + F8 F9 FB FC + FE FF FF FF + F8 F9 FB FC + FE FF FF FF + E0 E1 E3 E4 + E6 E7 E7 E7 + E8 E9 EB EC + EE EF EF EF + F8 F9 FB FC + FE FF FF FF + F8 F9 FB FC + FE FF FF FF + 00 01 03 04 + 06 07 07 07 + 08 09 0B 0C + 0E 0F 0F 0F + 18 19 1B 1C + 1E 1F 1F 1F + 18 19 1B 1C + 1E 1F 1F 1F + 20 21 23 24 + 26 27 27 27 + 28 29 2B 2C + 2E 2F 2F 2F + 38 39 3B 3C + 3E 3F 3F 3F + 38 39 3B 3C + 3E 3F 3F 3F + 60 61 63 64 + 66 67 67 67 + 68 69 6B 6C + 6E 6F 6F 6F + 78 79 7B 7C + 7E 7F 7F 7F + 78 79 7B 7C + 7E 7F 7F 7F + 80 81 83 84 + 86 87 87 87 + 88 89 8B 8C + 8E 8F 8F 8F + 98 99 9B 9C + 9E 9F 9F 9F + 98 99 9B 9C + 9E 9F 9F 9F + C0 C1 C3 C4 + C6 C7 C7 C7 + C8 C9 CB CC + CE CF CF CF + D8 D9 DB DC + DE DF DF DF + D8 D9 DB DC + DE DF DF DF + E0 E1 E3 E4 + E6 E7 E7 E7 + E8 E9 EB EC + EE EF EF EF + F8 F9 FB FC + FE FF FF FF + F8 F9 FB FC + FE FF FF FF + E0 E1 E3 E4 + E6 E7 E7 E7 + E8 E9 EB EC + EE EF EF EF + F8 F9 FB FC + FE FF FF FF + F8 F9 FB FC + FE FF FF FF + E0 E1 E3 E4 + E6 E7 E7 E7 + E8 E9 EB EC + EE EF EF EF + F8 F9 FB FC + FE FF FF FF + F8 F9 FB FC + FE FF FF FF + 00 01 03 05 + 06 07 07 07 + 08 09 0B 0D + 0E 0F 0F 0F + 18 19 1B 1D + 1E 1F 1F 1F + 18 19 1B 1D + 1E 1F 1F 1F + 20 21 23 25 + 26 27 27 27 + 28 29 2B 2D + 2E 2F 2F 2F + 38 39 3B 3D + 3E 3F 3F 3F + 38 39 3B 3D + 3E 3F 3F 3F + 60 61 63 65 + 66 67 67 67 + 68 69 6B 6D + 6E 6F 6F 6F + 78 79 7B 7D + 7E 7F 7F 7F + 78 79 7B 7D + 7E 7F 7F 7F + A0 A1 A3 A5 + A6 A7 A7 A7 + A8 A9 AB AD + AE AF AF AF + B8 B9 BB BD + BE BF BF BF + B8 B9 BB BD + BE BF BF BF + C0 C1 C3 C5 + C6 C7 C7 C7 + C8 C9 CB CD + CE CF CF CF + D8 D9 DB DD + DE DF DF DF + D8 D9 DB DD + DE DF DF DF + E0 E1 E3 E5 + E6 E7 E7 E7 + E8 E9 EB ED + EE EF EF EF + F8 F9 FB FD + FE FF FF FF + F8 F9 FB FD + FE FF FF FF + E0 E1 E3 E5 + E6 E7 E7 E7 + E8 E9 EB ED + EE EF EF EF + F8 F9 FB FD + FE FF FF FF + F8 F9 FB FD + FE FF FF FF + E0 E1 E3 E5 + E6 E7 E7 E7 + E8 E9 EB ED + EE EF EF EF + F8 F9 FB FD + FE FF FF FF + F8 F9 FB FD + FE FF FF FF + 00 01 03 05 + 06 07 07 07 + 08 09 0B 0D + 0E 0F 0F 0F + 18 19 1B 1D + 1E 1F 1F 1F + 18 19 1B 1D + 1E 1F 1F 1F + 20 21 23 25 + 26 27 27 27 + 28 29 2B 2D + 2E 2F 2F 2F + 38 39 3B 3D + 3E 3F 3F 3F + 38 39 3B 3D + 3E 3F 3F 3F + 60 61 63 65 + 66 67 67 67 + 68 69 6B 6D + 6E 6F 6F 6F + 78 79 7B 7D + 7E 7F 7F 7F + 78 79 7B 7D + 7E 7F 7F 7F + A0 A1 A3 A5 + A6 A7 A7 A7 + A8 A9 AB AD + AE AF AF AF + B8 B9 BB BD + BE BF BF BF + B8 B9 BB BD + BE BF BF BF + C0 C1 C3 C5 + C6 C7 C7 C7 + C8 C9 CB CD + CE CF CF CF + D8 D9 DB DD + DE DF DF DF + D8 D9 DB DD + DE DF DF DF + E0 E1 E3 E5 + E6 E7 E7 E7 + E8 E9 EB ED + EE EF EF EF + F8 F9 FB FD + FE FF FF FF + F8 F9 FB FD + FE FF FF FF + E0 E1 E3 E5 + E6 E7 E7 E7 + E8 E9 EB ED + EE EF EF EF + F8 F9 FB FD + FE FF FF FF + F8 F9 FB FD + FE FF FF FF + E0 E1 E3 E5 + E6 E7 E7 E7 + E8 E9 EB ED + EE EF EF EF + F8 F9 FB FD + FE FF FF FF + F8 F9 FB FD + FE FF FF FF + 00 01 03 05 + 07 07 07 07 + 08 09 0B 0D + 0F 0F 0F 0F + 18 19 1B 1D + 1F 1F 1F 1F + 18 19 1B 1D + 1F 1F 1F 1F + 20 21 23 25 + 27 27 27 27 + 28 29 2B 2D + 2F 2F 2F 2F + 38 39 3B 3D + 3F 3F 3F 3F + 38 39 3B 3D + 3F 3F 3F 3F + 60 61 63 65 + 67 67 67 67 + 68 69 6B 6D + 6F 6F 6F 6F + 78 79 7B 7D + 7F 7F 7F 7F + 78 79 7B 7D + 7F 7F 7F 7F + A0 A1 A3 A5 + A7 A7 A7 A7 + A8 A9 AB AD + AF AF AF AF + B8 B9 BB BD + BF BF BF BF + B8 B9 BB BD + BF BF BF BF + E0 E1 E3 E5 + E7 E7 E7 E7 + E8 E9 EB ED + EF EF EF EF + F8 F9 FB FD + FF FF FF FF + F8 F9 FB FD + FF FF FF FF + E0 E1 E3 E5 + E7 E7 E7 E7 + E8 E9 EB ED + EF EF EF EF + F8 F9 FB FD + FF FF FF FF + F8 F9 FB FD + FF FF FF FF + E0 E1 E3 E5 + E7 E7 E7 E7 + E8 E9 EB ED + EF EF EF EF + F8 F9 FB FD + FF FF FF FF + F8 F9 FB FD + FF FF FF FF + E0 E1 E3 E5 + E7 E7 E7 E7 + E8 E9 EB ED + EF EF EF EF + F8 F9 FB FD + FF FF FF FF + F8 F9 FB FD + FF FF FF FF + 00 01 03 05 + 07 07 07 07 + 08 09 0B 0D + 0F 0F 0F 0F + 18 19 1B 1D + 1F 1F 1F 1F + 18 19 1B 1D + 1F 1F 1F 1F + 20 21 23 25 + 27 27 27 27 + 28 29 2B 2D + 2F 2F 2F 2F + 38 39 3B 3D + 3F 3F 3F 3F + 38 39 3B 3D + 3F 3F 3F 3F + 60 61 63 65 + 67 67 67 67 + 68 69 6B 6D + 6F 6F 6F 6F + 78 79 7B 7D + 7F 7F 7F 7F + 78 79 7B 7D + 7F 7F 7F 7F + A0 A1 A3 A5 + A7 A7 A7 A7 + A8 A9 AB AD + AF AF AF AF + B8 B9 BB BD + BF BF BF BF + B8 B9 BB BD + BF BF BF BF + E0 E1 E3 E5 + E7 E7 E7 E7 + E8 E9 EB ED + EF EF EF EF + F8 F9 FB FD + FF FF FF FF + F8 F9 FB FD + FF FF FF FF + E0 E1 E3 E5 + E7 E7 E7 E7 + E8 E9 EB ED + EF EF EF EF + F8 F9 FB FD + FF FF FF FF + F8 F9 FB FD + FF FF FF FF + E0 E1 E3 E5 + E7 E7 E7 E7 + E8 E9 EB ED + EF EF EF EF + F8 F9 FB FD + FF FF FF FF + F8 F9 FB FD + FF FF FF FF + E0 E1 E3 E5 + E7 E7 E7 E7 + E8 E9 EB ED + EF EF EF EF + F8 F9 FB FD + FF FF FF FF + F8 F9 FB FD + FF FF FF FF + 00 02 03 05 + 07 07 07 07 + 10 12 13 15 + 17 17 17 17 + 18 1A 1B 1D + 1F 1F 1F 1F + 18 1A 1B 1D + 1F 1F 1F 1F + 40 42 43 45 + 47 47 47 47 + 50 52 53 55 + 57 57 57 57 + 58 5A 5B 5D + 5F 5F 5F 5F + 58 5A 5B 5D + 5F 5F 5F 5F + 60 62 63 65 + 67 67 67 67 + 70 72 73 75 + 77 77 77 77 + 78 7A 7B 7D + 7F 7F 7F 7F + 78 7A 7B 7D + 7F 7F 7F 7F + A0 A2 A3 A5 + A7 A7 A7 A7 + B0 B2 B3 B5 + B7 B7 B7 B7 + B8 BA BB BD + BF BF BF BF + B8 BA BB BD + BF BF BF BF + E0 E2 E3 E5 + E7 E7 E7 E7 + F0 F2 F3 F5 + F7 F7 F7 F7 + F8 FA FB FD + FF FF FF FF + F8 FA FB FD + FF FF FF FF + E0 E2 E3 E5 + E7 E7 E7 E7 + F0 F2 F3 F5 + F7 F7 F7 F7 + F8 FA FB FD + FF FF FF FF + F8 FA FB FD + FF FF FF FF + E0 E2 E3 E5 + E7 E7 E7 E7 + F0 F2 F3 F5 + F7 F7 F7 F7 + F8 FA FB FD + FF FF FF FF + F8 FA FB FD + FF FF FF FF + E0 E2 E3 E5 + E7 E7 E7 E7 + F0 F2 F3 F5 + F7 F7 F7 F7 + F8 FA FB FD + FF FF FF FF + F8 FA FB FD + FF FF FF FF + 00 02 04 05 + 07 07 07 07 + 10 12 14 15 + 17 17 17 17 + 18 1A 1C 1D + 1F 1F 1F 1F + 18 1A 1C 1D + 1F 1F 1F 1F + 40 42 44 45 + 47 47 47 47 + 50 52 54 55 + 57 57 57 57 + 58 5A 5C 5D + 5F 5F 5F 5F + 58 5A 5C 5D + 5F 5F 5F 5F + 80 82 84 85 + 87 87 87 87 + 90 92 94 95 + 97 97 97 97 + 98 9A 9C 9D + 9F 9F 9F 9F + 98 9A 9C 9D + 9F 9F 9F 9F + A0 A2 A4 A5 + A7 A7 A7 A7 + B0 B2 B4 B5 + B7 B7 B7 B7 + B8 BA BC BD + BF BF BF BF + B8 BA BC BD + BF BF BF BF + E0 E2 E4 E5 + E7 E7 E7 E7 + F0 F2 F4 F5 + F7 F7 F7 F7 + F8 FA FC FD + FF FF FF FF + F8 FA FC FD + FF FF FF FF + E0 E2 E4 E5 + E7 E7 E7 E7 + F0 F2 F4 F5 + F7 F7 F7 F7 + F8 FA FC FD + FF FF FF FF + F8 FA FC FD + FF FF FF FF + E0 E2 E4 E5 + E7 E7 E7 E7 + F0 F2 F4 F5 + F7 F7 F7 F7 + F8 FA FC FD + FF FF FF FF + F8 FA FC FD + FF FF FF FF + E0 E2 E4 E5 + E7 E7 E7 E7 + F0 F2 F4 F5 + F7 F7 F7 F7 + F8 FA FC FD + FF FF FF FF + F8 FA FC FD + FF FF FF FF .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,32,32,32,32,32,32,32,33,32,32,32,32,32,32,32,33,32,32,32,32,32,32,32,33,32,32,32,32,32,32,32,33,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,32,32,32,32,32,33,33,33,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,32,32,32,32,33,33,33,33,0,0,0,1,1,1,2,2,0,0,0,1,1,1,2,2,0,0,0,1,1,1,2,2,8,8,8,9,9,9,10,10,0,0,0,1,1,1,2,2,0,0,0,1,1,1,2,2,0,0,0,1,1,1,2,2,8,8,8,9,9,9,10,10,0,0,0,1,1,1,2,2,0,0,0,1,1,1,2,2,0,0,0,1,1,1,2,2,8,8,8,9,9,9,10,10,32,32,32,33,33,33,34,34,32,32,32,33,33,33,34,34,32,32,32,33,33,33,34,34,40,40,40,41,41,41,42,42,32,32,32,33,33,33,34,34,32,32,32,33,33,33,34,34,32,32,32,33,33,33,34,34,40,40,40,41,41,41,42,42,32,32,32,33,33,33,34,34,32,32,32,33,33,33,34,34,32,32,32,33,33,33,34,34,40,40,40,41,41,41,42,42,64,64,64,65,65,65,66,66,64,64,64,65,65,65,66,66,64,64,64,65,65,65,66,66,72,72,72,73,73,73,74,74,64,64,64,65,65,65,66,66,64,64,64,65,65,65,66,66,64,64,64,65,65,65,66,66,72,72,72,73,73,73,74,74,0,0,0,1,1,2,2,2,0,0,0,1,1,2,2,2,0,0,0,1,1,2,2,2,8,8,8,9,9,10,10,10,0,0,0,1,1,2,2,2,0,0,0,1,1,2,2,2,0,0,0,1,1,2,2,2,8,8,8,9,9,10,10,10,0,0,0,1,1,2,2,2,0,0,0,1,1,2,2,2,0,0,0,1,1,2,2,2,8,8,8,9,9,10,10,10,32,32,32,33,33,34,34,34,32,32,32,33,33,34,34,34,32,32,32,33,33,34,34,34,40,40,40,41,41,42,42,42,32,32,32,33,33,34,34,34,32,32,32,33,33,34,34,34,32,32,32,33,33,34,34,34,40,40,40,41,41,42,42,42,64,64,64,65,65,66,66,66,64,64,64,65,65,66,66,66,64,64,64,65,65,66,66,66,72,72,72,73,73,74,74,74,64,64,64,65,65,66,66,66,64,64,64,65,65,66,66,66,64,64,64,65,65,66,66,66,72,72,72,73,73,74,74,74,64,64,64,65,65,66,66,66,64,64,64,65,65,66,66,66,64,64,64,65,65,66,66,66,72,72,72,73,73,74,74,74,0,0,1,1,1,2,2,3,0,0,1,1,1,2,2,3,8,8,9,9,9,10,10,11,8,8,9,9,9,10,10,11,0,0,1,1,1,2,2,3,0,0,1,1,1,2,2,3,8,8,9,9,9,10,10,11,8,8,9,9,9,10,10,11,32,32,33,33,33,34,34,35,32,32,33,33,33,34,34,35,40,40,41,41,41,42,42,43,40,40,41,41,41,42,42,43,32,32,33,33,33,34,34,35,32,32,33,33,33,34,34,35,40,40,41,41,41,42,42,43,40,40,41,41,41,42,42,43,32,32,33,33,33,34,34,35,32,32,33,33,33,34,34,35,40,40,41,41,41,42,42,43,40,40,41,41,41,42,42,43,64,64,65,65,65,66,66,67,64,64,65,65,65,66,66,67,72,72,73,73,73,74,74,75,72,72,73,73,73,74,74,75,64,64,65,65,65,66,66,67,64,64,65,65,65,66,66,67,72,72,73,73,73,74,74,75,72,72,73,73,73,74,74,75,96,96,97,97,97,98,98,99,96,96,97,97,97,98,98,99,104,104,105,105,105,106,106,107,104,104,105,105,105,106,106,107,0,0,1,1,2,2,3,3,0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11,8,8,9,9,10,10,11,11,0,0,1,1,2,2,3,3,0,0,1,1,2,2,3,3,8,8,9,9,10,10,11,11,8,8,9,9,10,10,11,11,32,32,33,33,34,34,35,35,32,32,33,33,34,34,35,35,40,40,41,41,42,42,43,43,40,40,41,41,42,42,43,43,32,32,33,33,34,34,35,35,32,32,33,33,34,34,35,35,40,40,41,41,42,42,43,43,40,40,41,41,42,42,43,43,64,64,65,65,66,66,67,67,64,64,65,65,66,66,67,67,72,72,73,73,74,74,75,75,72,72,73,73,74,74,75,75,64,64,65,65,66,66,67,67,64,64,65,65,66,66,67,67,72,72,73,73,74,74,75,75,72,72,73,73,74,74,75,75,96,96,97,97,98,98,99,99,96,96,97,97,98,98,99,99,104,104,105,105,106,106,107,107,104,104,105,105,106,106,107,107,96,96,97,97,98,98,99,99,96,96,97,97,98,98,99,99,104,104,105,105,106,106,107,107,104,104,105,105,106,106,107,107,0,0,1,1,2,2,3,4,0,0,1,1,2,2,3,4,8,8,9,9,10,10,11,12,8,8,9,9,10,10,11,12,0,0,1,1,2,2,3,4,0,0,1,1,2,2,3,4,8,8,9,9,10,10,11,12,8,8,9,9,10,10,11,12,32,32,33,33,34,34,35,36,32,32,33,33,34,34,35,36,40,40,41,41,42,42,43,44,40,40,41,41,42,42,43,44,32,32,33,33,34,34,35,36,32,32,33,33,34,34,35,36,40,40,41,41,42,42,43,44,40,40,41,41,42,42,43,44,64,64,65,65,66,66,67,68,64,64,65,65,66,66,67,68,72,72,73,73,74,74,75,76,72,72,73,73,74,74,75,76,64,64,65,65,66,66,67,68,64,64,65,65,66,66,67,68,72,72,73,73,74,74,75,76,72,72,73,73,74,74,75,76,96,96,97,97,98,98,99,100,96,96,97,97,98,98,99,100,104,104,105,105,106,106,107,108,104,104,105,105,106,106,107,108,128,128,129,129,130,130,131,132,128,128,129,129,130,130,131,132,136,136,137,137,138,138,139,140,136,136,137,137,138,138,139,140,0,0,1,2,2,3,3,4,0,0,1,2,2,3,3,4,8,8,9,10,10,11,11,12,16,16,17,18,18,19,19,20,0,0,1,2,2,3,3,4,0,0,1,2,2,3,3,4,8,8,9,10,10,11,11,12,16,16,17,18,18,19,19,20,32,32,33,34,34,35,35,36,32,32,33,34,34,35,35,36,40,40,41,42,42,43,43,44,48,48,49,50,50,51,51,52,64,64,65,66,66,67,67,68,64,64,65,66,66,67,67,68,72,72,73,74,74,75,75,76,80,80,81,82,82,83,83,84,64,64,65,66,66,67,67,68,64,64,65,66,66,67,67,68,72,72,73,74,74,75,75,76,80,80,81,82,82,83,83,84,96,96,97,98,98,99,99,100,96,96,97,98,98,99,99,100,104,104,105,106,106,107,107,108,112,112,113,114,114,115,115,116,96,96,97,98,98,99,99,100,96,96,97,98,98,99,99,100,104,104,105,106,106,107,107,108,112,112,113,114,114,115,115,116,128,128,129,130,130,131,131,132,128,128,129,130,130,131,131,132,136,136,137,138,138,139,139,140,144,144,145,146,146,147,147,148,0,0,1,2,2,3,4,4,0,0,1,2,2,3,4,4,8,8,9,10,10,11,12,12,16,16,17,18,18,19,20,20,0,0,1,2,2,3,4,4,0,0,1,2,2,3,4,4,8,8,9,10,10,11,12,12,16,16,17,18,18,19,20,20,32,32,33,34,34,35,36,36,32,32,33,34,34,35,36,36,40,40,41,42,42,43,44,44,48,48,49,50,50,51,52,52,64,64,65,66,66,67,68,68,64,64,65,66,66,67,68,68,72,72,73,74,74,75,76,76,80,80,81,82,82,83,84,84,64,64,65,66,66,67,68,68,64,64,65,66,66,67,68,68,72,72,73,74,74,75,76,76,80,80,81,82,82,83,84,84,96,96,97,98,98,99,100,100,96,96,97,98,98,99,100,100,104,104,105,106,106,107,108,108,112,112,113,114,114,115,116,116,128,128,129,130,130,131,132,132,128,128,129,130,130,131,132,132,136,136,137,138,138,139,140,140,144,144,145,146,146,147,148,148,128,128,129,130,130,131,132,132,128,128,129,130,130,131,132,132,136,136,137,138,138,139,140,140,144,144,145,146,146,147,148,148,0,0,1,2,3,3,4,5,0,0,1,2,3,3,4,5,8,8,9,10,11,11,12,13,16,16,17,18,19,19,20,21,0,0,1,2,3,3,4,5,0,0,1,2,3,3,4,5,8,8,9,10,11,11,12,13,16,16,17,18,19,19,20,21,32,32,33,34,35,35,36,37,32,32,33,34,35,35,36,37,40,40,41,42,43,43,44,45,48,48,49,50,51,51,52,53,64,64,65,66,67,67,68,69,64,64,65,66,67,67,68,69,72,72,73,74,75,75,76,77,80,80,81,82,83,83,84,85,96,96,97,98,99,99,100,101,96,96,97,98,99,99,100,101,104,104,105,106,107,107,108,109,112,112,113,114,115,115,116,117,96,96,97,98,99,99,100,101,96,96,97,98,99,99,100,101,104,104,105,106,107,107,108,109,112,112,113,114,115,115,116,117,128,128,129,130,131,131,132,133,128,128,129,130,131,131,132,133,136,136,137,138,139,139,140,141,144,144,145,146,147,147,148,149,160,160,161,162,163,163,164,165,160,160,161,162,163,163,164,165,168,168,169,170,171,171,172,173,176,176,177,178,179,179,180,181,0,0,1,2,3,4,5,5,0,0,1,2,3,4,5,5,8,8,9,10,11,12,13,13,16,16,17,18,19,20,21,21,0,0,1,2,3,4,5,5,0,0,1,2,3,4,5,5,8,8,9,10,11,12,13,13,16,16,17,18,19,20,21,21,32,32,33,34,35,36,37,37,32,32,33,34,35,36,37,37,40,40,41,42,43,44,45,45,48,48,49,50,51,52,53,53,64,64,65,66,67,68,69,69,64,64,65,66,67,68,69,69,72,72,73,74,75,76,77,77,80,80,81,82,83,84,85,85,96,96,97,98,99,100,101,101,96,96,97,98,99,100,101,101,104,104,105,106,107,108,109,109,112,112,113,114,115,116,117,117,128,128,129,130,131,132,133,133,128,128,129,130,131,132,133,133,136,136,137,138,139,140,141,141,144,144,145,146,147,148,149,149,160,160,161,162,163,164,165,165,160,160,161,162,163,164,165,165,168,168,169,170,171,172,173,173,176,176,177,178,179,180,181,181,160,160,161,162,163,164,165,165,160,160,161,162,163,164,165,165,168,168,169,170,171,172,173,173,176,176,177,178,179,180,181,181,0,1,1,2,3,4,5,6,8,9,9,10,11,12,13,14,8,9,9,10,11,12,13,14,16,17,17,18,19,20,21,22,32,33,33,34,35,36,37,38,40,41,41,42,43,44,45,46,40,41,41,42,43,44,45,46,48,49,49,50,51,52,53,54,32,33,33,34,35,36,37,38,40,41,41,42,43,44,45,46,40,41,41,42,43,44,45,46,48,49,49,50,51,52,53,54,64,65,65,66,67,68,69,70,72,73,73,74,75,76,77,78,72,73,73,74,75,76,77,78,80,81,81,82,83,84,85,86,96,97,97,98,99,100,101,102,104,105,105,106,107,108,109,110,104,105,105,106,107,108,109,110,112,113,113,114,115,116,117,118,128,129,129,130,131,132,133,134,136,137,137,138,139,140,141,142,136,137,137,138,139,140,141,142,144,145,145,146,147,148,149,150,160,161,161,162,163,164,165,166,168,169,169,170,171,172,173,174,168,169,169,170,171,172,173,174,176,177,177,178,179,180,181,182,192,193,193,194,195,196,197,198,200,201,201,202,203,204,205,206,200,201,201,202,203,204,205,206,208,209,209,210,211,212,213,214,0,1,2,2,3,4,5,6,8,9,10,10,11,12,13,14,16,17,18,18,19,20,21,22,16,17,18,18,19,20,21,22,32,33,34,34,35,36,37,38,40,41,42,42,43,44,45,46,48,49,50,50,51,52,53,54,48,49,50,50,51,52,53,54,64,65,66,66,67,68,69,70,72,73,74,74,75,76,77,78,80,81,82,82,83,84,85,86,80,81,82,82,83,84,85,86,64,65,66,66,67,68,69,70,72,73,74,74,75,76,77,78,80,81,82,82,83,84,85,86,80,81,82,82,83,84,85,86,96,97,98,98,99,100,101,102,104,105,106,106,107,108,109,110,112,113,114,114,115,116,117,118,112,113,114,114,115,116,117,118,128,129,130,130,131,132,133,134,136,137,138,138,139,140,141,142,144,145,146,146,147,148,149,150,144,145,146,146,147,148,149,150,160,161,162,162,163,164,165,166,168,169,170,170,171,172,173,174,176,177,178,178,179,180,181,182,176,177,178,178,179,180,181,182,192,193,194,194,195,196,197,198,200,201,202,202,203,204,205,206,208,209,210,210,211,212,213,214,208,209,210,210,211,212,213,214,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,0,1,2,3,4,6,7,7,8,9,10,11,12,14,15,15,16,17,18,19,20,22,23,23,24,25,26,27,28,30,31,31,32,33,34,35,36,38,39,39,40,41,42,43,44,46,47,47,48,49,50,51,52,54,55,55,56,57,58,59,60,62,63,63,64,65,66,67,68,70,71,71,72,73,74,75,76,78,79,79,80,81,82,83,84,86,87,87,88,89,90,91,92,94,95,95,96,97,98,99,100,102,103,103,104,105,106,107,108,110,111,111,112,113,114,115,116,118,119,119,120,121,122,123,124,126,127,127,128,129,130,131,132,134,135,135,136,137,138,139,140,142,143,143,144,145,146,147,148,150,151,151,152,153,154,155,156,158,159,159,192,193,194,195,196,198,199,199,200,201,202,203,204,206,207,207,208,209,210,211,212,214,215,215,216,217,218,219,220,222,223,223,224,225,226,227,228,230,231,231,232,233,234,235,236,238,239,239,240,241,242,243,244,246,247,247,248,249,250,251,252,254,255,255,224,225,226,227,228,230,231,231,232,233,234,235,236,238,239,239,240,241,242,243,244,246,247,247,248,249,250,251,252,254,255,255,0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15,16,17,18,19,21,22,23,23,24,25,26,27,29,30,31,31,32,33,34,35,37,38,39,39,40,41,42,43,45,46,47,47,48,49,50,51,53,54,55,55,56,57,58,59,61,62,63,63,64,65,66,67,69,70,71,71,72,73,74,75,77,78,79,79,80,81,82,83,85,86,87,87,88,89,90,91,93,94,95,95,96,97,98,99,101,102,103,103,104,105,106,107,109,110,111,111,112,113,114,115,117,118,119,119,120,121,122,123,125,126,127,127,160,161,162,163,165,166,167,167,168,169,170,171,173,174,175,175,176,177,178,179,181,182,183,183,184,185,186,187,189,190,191,191,192,193,194,195,197,198,199,199,200,201,202,203,205,206,207,207,208,209,210,211,213,214,215,215,216,217,218,219,221,222,223,223,224,225,226,227,229,230,231,231,232,233,234,235,237,238,239,239,240,241,242,243,245,246,247,247,248,249,250,251,253,254,255,255,224,225,226,227,229,230,231,231,232,233,234,235,237,238,239,239,240,241,242,243,245,246,247,247,248,249,250,251,253,254,255,255,0,1,2,4,5,6,7,7,8,9,10,12,13,14,15,15,16,17,18,20,21,22,23,23,24,25,26,28,29,30,31,31,32,33,34,36,37,38,39,39,40,41,42,44,45,46,47,47,48,49,50,52,53,54,55,55,56,57,58,60,61,62,63,63,64,65,66,68,69,70,71,71,72,73,74,76,77,78,79,79,80,81,82,84,85,86,87,87,88,89,90,92,93,94,95,95,128,129,130,132,133,134,135,135,136,137,138,140,141,142,143,143,144,145,146,148,149,150,151,151,152,153,154,156,157,158,159,159,160,161,162,164,165,166,167,167,168,169,170,172,173,174,175,175,176,177,178,180,181,182,183,183,184,185,186,188,189,190,191,191,192,193,194,196,197,198,199,199,200,201,202,204,205,206,207,207,208,209,210,212,213,214,215,215,216,217,218,220,221,222,223,223,224,225,226,228,229,230,231,231,232,233,234,236,237,238,239,239,240,241,242,244,245,246,247,247,248,249,250,252,253,254,255,255,224,225,226,228,229,230,231,231,232,233,234,236,237,238,239,239,240,241,242,244,245,246,247,247,248,249,250,252,253,254,255,255,0,1,2,4,5,7,7,7,8,9,10,12,13,15,15,15,16,17,18,20,21,23,23,23,24,25,26,28,29,31,31,31,32,33,34,36,37,39,39,39,40,41,42,44,45,47,47,47,48,49,50,52,53,55,55,55,56,57,58,60,61,63,63,63,64,65,66,68,69,71,71,71,72,73,74,76,77,79,79,79,80,81,82,84,85,87,87,87,88,89,90,92,93,95,95,95,128,129,130,132,133,135,135,135,136,137,138,140,141,143,143,143,144,145,146,148,149,151,151,151,152,153,154,156,157,159,159,159,160,161,162,164,165,167,167,167,168,169,170,172,173,175,175,175,176,177,178,180,181,183,183,183,184,185,186,188,189,191,191,191,224,225,226,228,229,231,231,231,232,233,234,236,237,239,239,239,240,241,242,244,245,247,247,247,248,249,250,252,253,255,255,255,224,225,226,228,229,231,231,231,232,233,234,236,237,239,239,239,240,241,242,244,245,247,247,247,248,249,250,252,253,255,255,255,224,225,226,228,229,231,231,231,232,233,234,236,237,239,239,239,240,241,242,244,245,247,247,247,248,249,250,252,253,255,255,255,0,1,3,4,5,7,7,7,8,9,11,12,13,15,15,15,24,25,27,28,29,31,31,31,24,25,27,28,29,31,31,31,32,33,35,36,37,39,39,39,40,41,43,44,45,47,47,47,56,57,59,60,61,63,63,63,56,57,59,60,61,63,63,63,96,97,99,100,101,103,103,103,104,105,107,108,109,111,111,111,120,121,123,124,125,127,127,127,120,121,123,124,125,127,127,127,128,129,131,132,133,135,135,135,136,137,139,140,141,143,143,143,152,153,155,156,157,159,159,159,152,153,155,156,157,159,159,159,160,161,163,164,165,167,167,167,168,169,171,172,173,175,175,175,184,185,187,188,189,191,191,191,184,185,187,188,189,191,191,191,224,225,227,228,229,231,231,231,232,233,235,236,237,239,239,239,248,249,251,252,253,255,255,255,248,249,251,252,253,255,255,255,224,225,227,228,229,231,231,231,232,233,235,236,237,239,239,239,248,249,251,252,253,255,255,255,248,249,251,252,253,255,255,255,224,225,227,228,229,231,231,231,232,233,235,236,237,239,239,239,248,249,251,252,253,255,255,255,248,249,251,252,253,255,255,255,0,1,3,4,6,7,7,7,8,9,11,12,14,15,15,15,24,25,27,28,30,31,31,31,24,25,27,28,30,31,31,31,32,33,35,36,38,39,39,39,40,41,43,44,46,47,47,47,56,57,59,60,62,63,63,63,56,57,59,60,62,63,63,63,96,97,99,100,102,103,103,103,104,105,107,108,110,111,111,111,120,121,123,124,126,127,127,127,120,121,123,124,126,127,127,127,128,129,131,132,134,135,135,135,136,137,139,140,142,143,143,143,152,153,155,156,158,159,159,159,152,153,155,156,158,159,159,159,192,193,195,196,198,199,199,199,200,201,203,204,206,207,207,207,216,217,219,220,222,223,223,223,216,217,219,220,222,223,223,223,224,225,227,228,230,231,231,231,232,233,235,236,238,239,239,239,248,249,251,252,254,255,255,255,248,249,251,252,254,255,255,255,224,225,227,228,230,231,231,231,232,233,235,236,238,239,239,239,248,249,251,252,254,255,255,255,248,249,251,252,254,255,255,255,224,225,227,228,230,231,231,231,232,233,235,236,238,239,239,239,248,249,251,252,254,255,255,255,248,249,251,252,254,255,255,255,0,1,3,4,6,7,7,7,8,9,11,12,14,15,15,15,24,25,27,28,30,31,31,31,24,25,27,28,30,31,31,31,32,33,35,36,38,39,39,39,40,41,43,44,46,47,47,47,56,57,59,60,62,63,63,63,56,57,59,60,62,63,63,63,96,97,99,100,102,103,103,103,104,105,107,108,110,111,111,111,120,121,123,124,126,127,127,127,120,121,123,124,126,127,127,127,128,129,131,132,134,135,135,135,136,137,139,140,142,143,143,143,152,153,155,156,158,159,159,159,152,153,155,156,158,159,159,159,192,193,195,196,198,199,199,199,200,201,203,204,206,207,207,207,216,217,219,220,222,223,223,223,216,217,219,220,222,223,223,223,224,225,227,228,230,231,231,231,232,233,235,236,238,239,239,239,248,249,251,252,254,255,255,255,248,249,251,252,254,255,255,255,224,225,227,228,230,231,231,231,232,233,235,236,238,239,239,239,248,249,251,252,254,255,255,255,248,249,251,252,254,255,255,255,224,225,227,228,230,231,231,231,232,233,235,236,238,239,239,239,248,249,251,252,254,255,255,255,248,249,251,252,254,255,255,255,0,1,3,5,6,7,7,7,8,9,11,13,14,15,15,15,24,25,27,29,30,31,31,31,24,25,27,29,30,31,31,31,32,33,35,37,38,39,39,39,40,41,43,45,46,47,47,47,56,57,59,61,62,63,63,63,56,57,59,61,62,63,63,63,96,97,99,101,102,103,103,103,104,105,107,109,110,111,111,111,120,121,123,125,126,127,127,127,120,121,123,125,126,127,127,127,160,161,163,165,166,167,167,167,168,169,171,173,174,175,175,175,184,185,187,189,190,191,191,191,184,185,187,189,190,191,191,191,192,193,195,197,198,199,199,199,200,201,203,205,206,207,207,207,216,217,219,221,222,223,223,223,216,217,219,221,222,223,223,223,224,225,227,229,230,231,231,231,232,233,235,237,238,239,239,239,248,249,251,253,254,255,255,255,248,249,251,253,254,255,255,255,224,225,227,229,230,231,231,231,232,233,235,237,238,239,239,239,248,249,251,253,254,255,255,255,248,249,251,253,254,255,255,255,224,225,227,229,230,231,231,231,232,233,235,237,238,239,239,239,248,249,251,253,254,255,255,255,248,249,251,253,254,255,255,255,0,1,3,5,6,7,7,7,8,9,11,13,14,15,15,15,24,25,27,29,30,31,31,31,24,25,27,29,30,31,31,31,32,33,35,37,38,39,39,39,40,41,43,45,46,47,47,47,56,57,59,61,62,63,63,63,56,57,59,61,62,63,63,63,96,97,99,101,102,103,103,103,104,105,107,109,110,111,111,111,120,121,123,125,126,127,127,127,120,121,123,125,126,127,127,127,160,161,163,165,166,167,167,167,168,169,171,173,174,175,175,175,184,185,187,189,190,191,191,191,184,185,187,189,190,191,191,191,192,193,195,197,198,199,199,199,200,201,203,205,206,207,207,207,216,217,219,221,222,223,223,223,216,217,219,221,222,223,223,223,224,225,227,229,230,231,231,231,232,233,235,237,238,239,239,239,248,249,251,253,254,255,255,255,248,249,251,253,254,255,255,255,224,225,227,229,230,231,231,231,232,233,235,237,238,239,239,239,248,249,251,253,254,255,255,255,248,249,251,253,254,255,255,255,224,225,227,229,230,231,231,231,232,233,235,237,238,239,239,239,248,249,251,253,254,255,255,255,248,249,251,253,254,255,255,255,0,1,3,5,7,7,7,7,8,9,11,13,15,15,15,15,24,25,27,29,31,31,31,31,24,25,27,29,31,31,31,31,32,33,35,37,39,39,39,39,40,41,43,45,47,47,47,47,56,57,59,61,63,63,63,63,56,57,59,61,63,63,63,63,96,97,99,101,103,103,103,103,104,105,107,109,111,111,111,111,120,121,123,125,127,127,127,127,120,121,123,125,127,127,127,127,160,161,163,165,167,167,167,167,168,169,171,173,175,175,175,175,184,185,187,189,191,191,191,191,184,185,187,189,191,191,191,191,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,0,1,3,5,7,7,7,7,8,9,11,13,15,15,15,15,24,25,27,29,31,31,31,31,24,25,27,29,31,31,31,31,32,33,35,37,39,39,39,39,40,41,43,45,47,47,47,47,56,57,59,61,63,63,63,63,56,57,59,61,63,63,63,63,96,97,99,101,103,103,103,103,104,105,107,109,111,111,111,111,120,121,123,125,127,127,127,127,120,121,123,125,127,127,127,127,160,161,163,165,167,167,167,167,168,169,171,173,175,175,175,175,184,185,187,189,191,191,191,191,184,185,187,189,191,191,191,191,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,224,225,227,229,231,231,231,231,232,233,235,237,239,239,239,239,248,249,251,253,255,255,255,255,248,249,251,253,255,255,255,255,0,2,3,5,7,7,7,7,16,18,19,21,23,23,23,23,24,26,27,29,31,31,31,31,24,26,27,29,31,31,31,31,64,66,67,69,71,71,71,71,80,82,83,85,87,87,87,87,88,90,91,93,95,95,95,95,88,90,91,93,95,95,95,95,96,98,99,101,103,103,103,103,112,114,115,117,119,119,119,119,120,122,123,125,127,127,127,127,120,122,123,125,127,127,127,127,160,162,163,165,167,167,167,167,176,178,179,181,183,183,183,183,184,186,187,189,191,191,191,191,184,186,187,189,191,191,191,191,224,226,227,229,231,231,231,231,240,242,243,245,247,247,247,247,248,250,251,253,255,255,255,255,248,250,251,253,255,255,255,255,224,226,227,229,231,231,231,231,240,242,243,245,247,247,247,247,248,250,251,253,255,255,255,255,248,250,251,253,255,255,255,255,224,226,227,229,231,231,231,231,240,242,243,245,247,247,247,247,248,250,251,253,255,255,255,255,248,250,251,253,255,255,255,255,224,226,227,229,231,231,231,231,240,242,243,245,247,247,247,247,248,250,251,253,255,255,255,255,248,250,251,253,255,255,255,255,0,2,4,5,7,7,7,7,16,18,20,21,23,23,23,23,24,26,28,29,31,31,31,31,24,26,28,29,31,31,31,31,64,66,68,69,71,71,71,71,80,82,84,85,87,87,87,87,88,90,92,93,95,95,95,95,88,90,92,93,95,95,95,95,128,130,132,133,135,135,135,135,144,146,148,149,151,151,151,151,152,154,156,157,159,159,159,159,152,154,156,157,159,159,159,159,160,162,164,165,167,167,167,167,176,178,180,181,183,183,183,183,184,186,188,189,191,191,191,191,184,186,188,189,191,191,191,191,224,226,228,229,231,231,231,231,240,242,244,245,247,247,247,247,248,250,252,253,255,255,255,255,248,250,252,253,255,255,255,255,224,226,228,229,231,231,231,231,240,242,244,245,247,247,247,247,248,250,252,253,255,255,255,255,248,250,252,253,255,255,255,255,224,226,228,229,231,231,231,231,240,242,244,245,247,247,247,247,248,250,252,253,255,255,255,255,248,250,252,253,255,255,255,255,224,226,228,229,231,231,231,231,240,242,244,245,247,247,247,247,248,250,252,253,255,255,255,255,248,250,252,253,255,255,255,255 + 5 D1:FF6F - - - - + 6 D1:FF6F - - - - ; sin LUT , this lut shouldn't cross 64K boundary ! + 7 D1:FF6F - - - - VX_SIN_LUT_DATA: + 8 D1:FF6F - - - - VX_SIN_TABLE_SIZE=512 + 9 D1:FF6F 00 65 C9 2E + 92 F7 5B C0 .db 0,101,201,46,146,247,91,192 + 10 D1:FF77 24 88 ED 51 + B5 1A 7E E2 .db 36,136,237,81,181,26,126,226 + 11 D1:FF7F 46 AA 0E 72 + D6 39 9D 01 .db 70,170,14,114,214,57,157,1 + 12 D1:FF87 64 C7 2B 8E + F1 54 B7 1A .db 100,199,43,142,241,84,183,26 + 13 D1:FF8F 7C DF 41 A4 + 06 68 CA 2B .db 124,223,65,164,6,104,202,43 + 14 D1:FF97 8D EE 50 B1 + 12 73 D3 34 .db 141,238,80,177,18,115,211,52 + 15 D1:FF9F 94 F4 54 B4 + 13 73 D2 31 .db 148,244,84,180,19,115,210,49 + 16 D1:FFA7 90 EE 4C AB + 09 66 C4 21 .db 144,238,76,171,9,102,196,33 + 17 D1:FFAF 7E DB 37 93 + EF 4B A7 02 .db 126,219,55,147,239,75,167,2 + 18 D1:FFB7 5D B8 12 6C + C6 20 79 D3 .db 93,184,18,108,198,32,121,211 + 19 D1:FFBF 2B 84 DC 34 + 8C E3 3A 91 .db 43,132,220,52,140,227,58,145 + 20 D1:FFC7 E7 3D 93 E8 + 3D 92 E7 3B .db 231,61,147,232,61,146,231,59 + 21 D1:FFCF 8E E2 35 88 + DA 2C 7E CF .db 142,226,53,136,218,44,126,207 + 22 D1:FFD7 20 71 C1 11 + 60 AF FE 4C .db 32,113,193,17,96,175,254,76 + 23 D1:FFDF 9A E7 35 81 + CE 1A 65 B0 .db 154,231,53,129,206,26,101,176 + 24 D1:FFE7 FB 45 8F D8 + 21 6A B2 FA .db 251,69,143,216,33,106,178,250 + 25 D1:FFEF 41 88 CF 15 + 5A 9F E4 28 .db 65,136,207,21,90,159,228,40 + 26 D1:FFF7 6C AF F2 34 + 76 B8 F9 39 .db 108,175,242,52,118,184,249,57 + 27 D1:FFFF 79 B9 F8 36 + 74 B2 EF 2C .db 121,185,248,54,116,178,239,44 + 28 D2:0007 68 A3 DF 19 + 53 8D C6 FF .db 104,163,223,25,83,141,198,255 + 29 D2:000F 37 6E A5 DC + 12 48 7D B1 .db 55,110,165,220,18,72,125,177 + 30 D2:0017 E5 18 4B 7E + B0 E1 12 42 .db 229,24,75,126,176,225,18,66 + 31 D2:001F 71 A1 CF FD + 2B 58 84 B0 .db 113,161,207,253,43,88,132,176 + 32 D2:0027 DB 06 30 59 + 82 AB D3 FA .db 219,6,48,89,130,171,211,250 + 33 D2:002F 21 47 6D 92 + B6 DA FD 20 .db 33,71,109,146,182,218,253,32 + 34 D2:0037 42 64 85 A5 + C5 E4 03 21 .db 66,100,133,165,197,228,3,33 + 35 D2:003F 3F 5B 78 93 + AF C9 E3 FC .db 63,91,120,147,175,201,227,252 + 36 D2:0047 15 2D 45 5C + 72 88 9D B1 .db 21,45,69,92,114,136,157,177 + 37 D2:004F C5 D8 EB FD + 0F 20 30 40 .db 197,216,235,253,15,32,48,64 + 38 D2:0057 4F 5D 6B 78 + 85 91 9C A7 .db 79,93,107,120,133,145,156,167 + 39 D2:005F B1 BB C4 CC + D4 DB E1 E7 .db 177,187,196,204,212,219,225,231 + 40 D2:0067 EC F1 F5 F8 + FB FD FF 00 .db 236,241,245,248,251,253,255,0 + 41 D2:006F 00 00 00 01 + 01 01 02 02 .db 0,0,0,1,1,1,2,2 + 42 D2:0077 03 03 03 04 + 04 05 05 05 .db 3,3,3,4,4,5,5,5 + 43 D2:007F 06 06 07 07 + 07 08 08 09 .db 6,6,7,7,7,8,8,9 + 44 D2:0087 09 09 0A 0A + 0A 0B 0B 0C .db 9,9,10,10,10,11,11,12 + 45 D2:008F 0C 0C 0D 0D + 0E 0E 0E 0F .db 12,12,13,13,14,14,14,15 + 46 D2:0097 0F 0F 10 10 + 11 11 11 12 .db 15,15,16,16,17,17,17,18 + 47 D2:009F 12 12 13 13 + 14 14 14 15 .db 18,18,19,19,20,20,20,21 + 48 D2:00A7 15 15 16 16 + 17 17 17 18 .db 21,21,22,22,23,23,23,24 + 49 D2:00AF 18 18 19 19 + 19 1A 1A 1B .db 24,24,25,25,25,26,26,27 + 50 D2:00B7 1B 1B 1C 1C + 1C 1D 1D 1D .db 27,27,28,28,28,29,29,29 + 51 D2:00BF 1E 1E 1E 1F + 1F 1F 20 20 .db 30,30,30,31,31,31,32,32 + 52 D2:00C7 20 21 21 21 + 22 22 22 23 .db 32,33,33,33,34,34,34,35 + 53 D2:00CF 23 23 24 24 + 24 25 25 25 .db 35,35,36,36,36,37,37,37 + 54 D2:00D7 26 26 26 27 + 27 27 27 28 .db 38,38,38,39,39,39,39,40 + 55 D2:00DF 28 28 29 29 + 29 2A 2A 2A .db 40,40,41,41,41,42,42,42 + 56 D2:00E7 2A 2B 2B 2B + 2C 2C 2C 2C .db 42,43,43,43,44,44,44,44 + 57 D2:00EF 2D 2D 2D 2E + 2E 2E 2E 2F .db 45,45,45,46,46,46,46,47 + 58 D2:00F7 2F 2F 2F 30 + 30 30 30 31 .db 47,47,47,48,48,48,48,49 + 59 D2:00FF 31 31 31 32 + 32 32 32 33 .db 49,49,49,50,50,50,50,51 + 60 D2:0107 33 33 33 34 + 34 34 34 34 .db 51,51,51,52,52,52,52,52 + 61 D2:010F 35 35 35 35 + 36 36 36 36 .db 53,53,53,53,54,54,54,54 + 62 D2:0117 36 37 37 37 + 37 37 38 38 .db 54,55,55,55,55,55,56,56 + 63 D2:011F 38 38 38 38 + 39 39 39 39 .db 56,56,56,56,57,57,57,57 + 64 D2:0127 39 3A 3A 3A + 3A 3A 3A 3A .db 57,58,58,58,58,58,58,58 + 65 D2:012F 3B 3B 3B 3B + 3B 3B 3B 3C .db 59,59,59,59,59,59,59,60 + 66 D2:0137 3C 3C 3C 3C + 3C 3C 3D 3D .db 60,60,60,60,60,60,61,61 + 67 D2:013F 3D 3D 3D 3D + 3D 3D 3D 3D .db 61,61,61,61,61,61,61,61 + 68 D2:0147 3E 3E 3E 3E + 3E 3E 3E 3E .db 62,62,62,62,62,62,62,62 + 69 D2:014F 3E 3E 3E 3E + 3F 3F 3F 3F .db 62,62,62,62,63,63,63,63 + 70 D2:0157 3F 3F 3F 3F + 3F 3F 3F 3F .db 63,63,63,63,63,63,63,63 + 71 D2:015F 3F 3F 3F 3F + 3F 3F 3F 3F .db 63,63,63,63,63,63,63,63 + 72 D2:0167 3F 3F 3F 3F + 3F 3F 3F 40 .db 63,63,63,63,63,63,63,64 +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\vxMain.ez80" + 14 D2:016F - - - - + 15 D2:016F - - - - ; functions + 16 D2:016F - - - - + 17 D2:016F - - - - vxEngineInit: + 18 D2:016F - - - - ; get indic off + 19 D2:016F CD 48 08 02 call _RunIndicoff + 20 D2:0173 - - - - ; disable interrupt and start LCD interrupt + 21 D2:0173 CD 74 03 00 call _boot_ClearVRAM + 22 D2:0177 F3 - - - di + 23 D2:0178 3A 1C 00 E3 ld a, (VX_LCD_IMSC) + 24 D2:017C F6 04 - - or %00000100 + 25 D2:017E 32 1C 00 E3 ld (VX_LCD_IMSC), a + 26 D2:0182 - - - - + 27 D2:0182 - - - - ; setup 8bpp mode + 28 D2:0182 3E 27 - - ld a,VX_BPP8 + 29 D2:0184 32 18 00 E3 ld (VX_LCD_CTRL),a + 30 D2:0188 - - - - ; load vram buffer + 31 D2:0188 21 00 00 D4 ld hl, VX_FRAMEBUFFER_AUX0 + 32 D2:018C 22 10 00 E3 ld (VX_LCD_BUFFER), hl + 33 D2:0190 21 00 2C D5 ld hl, VX_FRAMEBUFFER_AUX1 + 34 D2:0194 22 14 00 E3 ld (vxFramebuffer), hl + 35 D2:0198 - - - - + 36 D2:0198 - - - - + 37 D2:0198 FD 21 00 00 + D1 - - - ld iy, VX_GEOMETRY_QUEUE + 38 D2:019D FD 22 86 BD + D1 - - - ld (vxSubmissionQueue), iy + 39 D2:01A2 21 00 BE D1 ld hl, VX_BATCH_DATA + 40 D2:01A6 22 8C BD D1 ld (vxBatchData), hl + 41 D2:01AA B7 - - - or a, a + 42 D2:01AB ED 62 - - sbc hl, hl + 43 D2:01AD 22 89 BD D1 ld (vxGeometrySize), hl + 44 D2:01B1 - - - - ;; ld hl, 0E00005h + 45 D2:01B1 - - - - ;;; ld (hl), 2 ; Set flash wait states to 5 + 1 = 6 (total access time = 7) + 46 D2:01B1 CD CE C4 D1 call vxCreateMemoryPool + 47 D2:01B5 - - - - + 48 D2:01B5 21 79 88 D1 ld hl,0D18879h + 49 D2:01B9 11 11 06 C9 ld de,0C90611h + 50 D2:01BD ED 1F - - ld (hl),de + 51 D2:01BF 2B - - - dec hl + 52 D2:01C0 36 ED - - ld (hl),0EDh + 53 D2:01C2 E5 - - - push hl + 54 D2:01C3 14 - - - inc d + 55 D2:01C4 CD 78 88 D1 call 0D18878h + 56 D2:01C8 E1 - - - pop hl + 57 D2:01C9 - - - - + 58 D2:01C9 - - - - #define VX_COLOR_LUT $D00000 + 59 D2:01C9 - - - - #define VX_SIN_TABLE $D02000 + 60 D2:01C9 - - - - + 61 D2:01C9 21 6F DF D1 ld hl, VX_COLOR_LUT_DATA + 62 D2:01CD 11 00 00 D0 ld de, VX_COLOR_LUT + 63 D2:01D1 01 00 20 00 ld bc, 8192 + 64 D2:01D5 ED B0 - - ldir + 65 D2:01D7 21 6F FF D1 ld hl, VX_SIN_LUT_DATA + 66 D2:01DB 11 00 20 D0 ld de, VX_SIN_TABLE + 67 D2:01DF 01 00 02 00 ld bc, 512 + 68 D2:01E3 ED B0 - - ldir + 69 D2:01E5 - - - - + 70 D2:01E5 CD 7C B3 D1 call vxResetPalette + 71 D2:01E9 - - - - ; insert stack position + 72 D2:01E9 21 EF 01 D2 ld hl, vxEngineQuit + 73 D2:01ED E3 - - - ex (sp), hl + 74 D2:01EE E9 - - - jp (hl) + 75 D2:01EF - - - - vxEngineQuit: + 76 D2:01EF 3E D0 - - ld a, $D0 + 77 D2:01F1 ED 6D - - .db $ED,$6D + 78 D2:01F3 21 00 00 F5 ld hl,$F50000 + 79 D2:01F7 AF - - - xor a ; Mode 0 + 80 D2:01F8 77 - - - ld (hl),a + 81 D2:01F9 2C - - - inc l ; 0F50001h + 82 D2:01FA 36 0F - - ld (hl),15 ; Wait 15*256 APB cycles before scanning each row + 83 D2:01FC 2C - - - inc l ; 0F50002h + 84 D2:01FD AF - - - xor a + 85 D2:01FE 77 - - - ld (hl),a + 86 D2:01FF 2C - - - inc l ; 0F50003h + 87 D2:0200 36 0F - - ld (hl),15 ; Wait 15 APB cycles before each scan + 88 D2:0202 2C - - - inc l ; 0F50004h + 89 D2:0203 3E 08 - - ld a,8 ; Number of rows to scan + 90 D2:0205 77 - - - ld (hl),a + 91 D2:0206 2C - - - inc l ; 0F50005h + 92 D2:0207 77 - - - ld (hl),a ; Number of columns to scan + 93 D2:0208 FD 21 80 00 + D0 - - - ld iy, OS__FLAGS + 94 D2:020D 3E 2D - - ld a, VX_BPP16 + 95 D2:020F 32 18 00 E3 ld (VX_LCD_CTRL),a + 96 D2:0213 21 00 00 D4 ld hl, VX_FRAMEBUFFER_AUX0 + 97 D2:0217 22 10 00 E3 ld (VX_LCD_BUFFER), hl + 98 D2:021B - - - - + 99 D2:021B CD 27 C5 D1 call vxDestroyMemoryPool + 100 D2:021F - - - - + 101 D2:021F CD 28 08 02 call _HomeUp + 102 D2:0223 CD 14 08 02 call _Clrscrn + 103 D2:0227 CD 3C 1A 02 call _DrawStatusBar + 104 D2:022B CD 44 08 02 call _RunIndicon + 105 D2:022F FB - - - ei + 106 D2:0230 C3 50 1A 02 jp _DrawBatteryIndicator +Listing for file "example1.ez80" + 181 D2:0234 - - - - #include "graphics_lib.asm" +Listing for file "C:\Users\Zeromus\Documents\GitHub\Virtual3D\graphics_lib.asm" + 1 D2:0234 - - - - ; quickly hacked C routines to be able to display digits + 2 D2:0234 - - - - + 3 D2:0234 - - - - + 4 D2:0234 - - - - ;------------------------------------------------------------------------------- + 5 D2:0234 - - - - ; Used throughout the library + 6 D2:0234 - - - - lcdSize equ lcdWidth*lcdHeight + 7 D2:0234 - - - - currDrawBuffer equ 0E30014h + 8 D2:0234 - - - - _GetTextX: + 9 D2:0234 - - - - ; Gets the X position of the text cursor + 10 D2:0234 - - - - ; Arguments: + 11 D2:0234 - - - - ; None + 12 D2:0234 - - - - ; Returns: + 13 D2:0234 - - - - ; X Text cursor posistion + 14 D2:0234 2A 91 02 D2 ld hl,(TextXPos_SMC) + 15 D2:0238 C9 - - - ret + 16 D2:0239 - - - - + 17 D2:0239 - - - - ;------------------------------------------------------------------------------- + 18 D2:0239 - - - - _GetTextY: + 19 D2:0239 - - - - ; Gets the Y position of the text cursor + 20 D2:0239 - - - - ; Arguments: + 21 D2:0239 - - - - ; None + 22 D2:0239 - - - - ; Returns: + 23 D2:0239 - - - - ; Y Text cursor posistion + 24 D2:0239 3A 9F 02 D2 ld a,(TextYPos_SMC) + 25 D2:023D C9 - - - ret + 26 D2:023E - - - - + 27 D2:023E - - - - ;------------------------------------------------------------------------------- + 28 D2:023E - - - - _SetTextBGColorC: + 29 D2:023E - - - - ; Sets the background text color for text routines + 30 D2:023E - - - - ; Arguments: + 31 D2:023E - - - - ; arg0 : Color index to set BG to + 32 D2:023E - - - - ; Returns: + 33 D2:023E - - - - ; Previous text color palette index + 34 D2:023E E1 - - - pop hl + 35 D2:023F D1 - - - pop de + 36 D2:0240 D5 - - - push de + 37 D2:0241 E5 - - - push hl + 38 D2:0242 21 D0 02 D2 ld hl,TextBGColor_SMC + 39 D2:0246 7E - - - ld a,(hl) + 40 D2:0247 73 - - - ld (hl),e + 41 D2:0248 C9 - - - ret + 42 D2:0249 - - - - + 43 D2:0249 - - - - ;------------------------------------------------------------------------------- + 44 D2:0249 - - - - _SetTextFGColorC: + 45 D2:0249 - - - - ; Sets the foreground text color for text routines + 46 D2:0249 - - - - ; Arguments: + 47 D2:0249 - - - - ; arg0 : Color index to set FG to + 48 D2:0249 - - - - ; Returns: + 49 D2:0249 - - - - ; Previous text color palette index + 50 D2:0249 E1 - - - pop hl + 51 D2:024A D1 - - - pop de + 52 D2:024B D5 - - - push de + 53 D2:024C E5 - - - push hl + 54 D2:024D 21 D6 02 D2 ld hl,TextFGColor_SMC + 55 D2:0251 7E - - - ld a,(hl) + 56 D2:0252 73 - - - ld (hl),e + 57 D2:0253 C9 - - - ret + 58 D2:0254 - - - - + 59 D2:0254 - - - - ;------------------------------------------------------------------------------- + 60 D2:0254 - - - - _SetTextTransparentColorC: + 61 D2:0254 - - - - ; Sets the transparency text color for text routines + 62 D2:0254 - - - - ; Arguments: + 63 D2:0254 - - - - ; arg0 : Color index to set transparent text to + 64 D2:0254 - - - - ; Returns: + 65 D2:0254 - - - - ; Previous text color palette index + 66 D2:0254 E1 - - - pop hl + 67 D2:0255 D1 - - - pop de + 68 D2:0256 D5 - - - push de + 69 D2:0257 E5 - - - push hl + 70 D2:0258 21 D8 02 D2 ld hl,TextTransColor_SMC + 71 D2:025C 7E - - - ld a,(hl) + 72 D2:025D 73 - - - ld (hl),e + 73 D2:025E C9 - - - ret + 74 D2:025F - - - - + 75 D2:025F - - - - ;------------------------------------------------------------------------------- + 76 D2:025F - - - - _SetTextXY: + 77 D2:025F - - - - ; Sets the transparency text color for text routines + 78 D2:025F - - - - ; Arguments: + 79 D2:025F - - - - ; arg0 : Text X Pos + 80 D2:025F - - - - ; arg1 : Text Y Pos + 81 D2:025F - - - - ; Returns: + 82 D2:025F - - - - ; None + 83 D2:025F 21 03 00 00 ld hl,3 + 84 D2:0263 39 - - - add hl,sp + 85 D2:0264 11 91 02 D2 ld de,TextXPos_SMC + 86 D2:0268 ED A0 - - ldi + 87 D2:026A ED A0 - - ldi + 88 D2:026C 23 - - - inc hl + 89 D2:026D 7E - - - ld a,(hl) + 90 D2:026E 32 9F 02 D2 ld (TextYPos_SMC),a + 91 D2:0272 C9 - - - ret + 92 D2:0273 - - - - _PrintChar: + 93 D2:0273 - - - - ; Places a character at the current cursor position + 94 D2:0273 - - - - ; Arguments: + 95 D2:0273 - - - - ; arg0 : Character to draw + 96 D2:0273 - - - - ; Returns: + 97 D2:0273 - - - - ; None + 98 D2:0273 FD 21 00 00 + 00 - - - ld iy,0 + 99 D2:0278 FD 39 - - add iy,sp + 100 D2:027A FD 7E 03 - ld a,(iy+3) + 101 D2:027D - - - - _PrintChar_ASM: + 102 D2:027D DD E5 - - push ix ; save stack pointer + 103 D2:027F E5 - - - push hl ; save hl pointer if string + 104 D2:0280 5F - - - ld e,a ; e = char + 105 D2:0281 - - - - MonoFlag_SMC =$+1 + 106 D2:0281 3E 00 - - ld a,0 + 107 D2:0283 B7 - - - or a,a + 108 D2:0284 20 0A - - jr nz,+_ + 109 D2:0286 ED 62 - - sbc hl,hl + 110 D2:0288 6B - - - ld l,e ; hl = character + 111 D2:0289 ED 4B 3F 05 + D2 - - - ld bc,(CharSpacing_ASM) + 112 D2:028E 09 - - - add hl,bc + 113 D2:028F 7E - - - ld a,(hl) ; a = char width + 114 D2:0290 - - - - TextXPos_SMC = $+1 + 115 D2:0290 01 00 00 00 _: ld bc,0 + 116 D2:0294 ED 62 - - sbc hl,hl + 117 D2:0296 6F - - - ld l,a + 118 D2:0297 DD 67 - - ld ixh,a ; ixh = char width + 119 D2:0299 09 - - - add hl,bc + 120 D2:029A 22 91 02 D2 ld (TextXPos_SMC),hl + 121 D2:029E - - - - TextYPos_SMC = $+1 + 122 D2:029E 2E 00 - - ld l,0 + 123 D2:02A0 26 A0 - - ld h,lcdWidth/2 + 124 D2:02A2 ED 6C - - mlt hl + 125 D2:02A4 29 - - - add hl,hl + 126 D2:02A5 09 - - - add hl,bc + 127 D2:02A6 ED 4B 14 00 + E3 - - - ld bc,(vxFramebuffer) + 128 D2:02AB 09 - - - add hl,bc + 129 D2:02AC EB - - - ex de,hl ; de = draw location + 130 D2:02AD 7D - - - ld a,l ; l = character + 131 D2:02AE ED 62 - - sbc hl,hl + 132 D2:02B0 6F - - - ld l,a ; hl = character + 133 D2:02B1 29 - - - add hl,hl + 134 D2:02B2 29 - - - add hl,hl + 135 D2:02B3 29 - - - add hl,hl + 136 D2:02B4 ED 4B 42 05 + D2 - - - ld bc,(TextData_ASM) ; get text data array + 137 D2:02B9 09 - - - add hl,bc + 138 D2:02BA FD 21 00 00 + 00 - - - ld iy,0 + 139 D2:02BF - - - - UseLargeFont_SMC =$+1 + 140 D2:02BF 3E 00 - - ld a,0 + 141 D2:02C1 B7 - - - or a,a + 142 D2:02C2 20 28 - - jr nz,_PrintLargeFont_ASM + 143 D2:02C4 DD 2E 08 - ld ixl,8 + 144 D2:02C7 4E - - - _: ld c,(hl) ; c = 8 pixels + 145 D2:02C8 FD 19 - - add iy,de ; get draw location + 146 D2:02CA ED 13 00 - lea de,iy + 147 D2:02CD DD 44 - - ld b,ixh + 148 D2:02CF - - - - TextBGColor_SMC =$+1 + 149 D2:02CF 3E 00 - - _: ld a,0 + 150 D2:02D1 CB 01 - - rlc c + 151 D2:02D3 30 02 - - jr nc,+_ + 152 D2:02D5 - - - - TextFGColor_SMC =$+1 + 153 D2:02D5 3E FF - - ld a,255 + 154 D2:02D7 - - - - TextTransColor_SMC =$+1 + 155 D2:02D7 FE 00 - - _: cp a,0 ; check if transparent + 156 D2:02D9 28 01 - - jr z,+_ + 157 D2:02DB 12 - - - ld (de),a + 158 D2:02DC 13 - - - _: inc de ; move to next pixel + 159 D2:02DD 10 F0 - - djnz ---_ + 160 D2:02DF 11 40 01 00 ld de,lcdWidth + 161 D2:02E3 23 - - - inc hl + 162 D2:02E4 DD 2D - - dec ixl + 163 D2:02E6 20 DF - - jr nz,----_ + 164 D2:02E8 E1 - - - pop hl ; restore hl and stack pointer + 165 D2:02E9 DD E1 - - pop ix + 166 D2:02EB C9 - - - ret + 167 D2:02EC - - - - + 168 D2:02EC - - - - _PrintLargeFont_ASM: + 169 D2:02EC DD 2E 10 - ld ixl,16 + 170 D2:02EF 4E - - - _: ld c,(hl) ; c = 8 pixels + 171 D2:02F0 FD 19 - - add iy,de ; get draw location + 172 D2:02F2 ED 13 00 - lea de,iy + 173 D2:02F5 DD 44 - - ld b,ixh + 174 D2:02F7 3A D0 02 D2 _: ld a,(TextBGColor_SMC) + 175 D2:02FB CB 01 - - rlc c + 176 D2:02FD 30 04 - - jr nc,+_ + 177 D2:02FF 3A D6 02 D2 ld a,(TextFGColor_SMC) + 178 D2:0303 DD BD - - _: cp a,ixl ; check if transparent + 179 D2:0305 28 03 - - jr z,+_ + 180 D2:0307 12 - - - ld (de),a + 181 D2:0308 13 - - - inc de + 182 D2:0309 12 - - - ld (de),a + 183 D2:030A 13 - - - _: inc de ; move to next pixel + 184 D2:030B 10 EA - - djnz ---_ + 185 D2:030D 11 40 01 00 ld de,lcdWidth + 186 D2:0311 23 - - - inc hl + 187 D2:0312 DD 2D - - dec ixl + 188 D2:0314 20 D9 - - jr nz,----_ + 189 D2:0316 E1 - - - pop hl ; restore hl and stack pointer + 190 D2:0317 DD E1 - - pop ix + 191 D2:0319 C9 - - - ret + 192 D2:031A - - - - + 193 D2:031A - - - - ;------------------------------------------------------------------------------- + 194 D2:031A - - - - _PrintUInt: + 195 D2:031A - - - - ; Places an unsigned int at the current cursor position + 196 D2:031A - - - - ; Arguments: + 197 D2:031A - - - - ; arg0 : Number to print + 198 D2:031A - - - - ; arg1 : Number of characters to print + 199 D2:031A - - - - ; Returns: + 200 D2:031A - - - - ; None + 201 D2:031A FD 21 00 00 + 00 - - - ld iy,0 + 202 D2:031F FD 39 - - add iy,sp + 203 D2:0321 FD 27 03 - ld hl,(iy+3) + 204 D2:0324 FD 4E 06 - ld c,(iy+6) + 205 D2:0327 - - - - _PrintUInt_ASM: + 206 D2:0327 3E 08 - - ld a,8 + 207 D2:0329 91 - - - sub a,c + 208 D2:032A D8 - - - ret c + 209 D2:032B 4F - - - ld c,a + 210 D2:032C 06 08 - - ld b,8 + 211 D2:032E ED 4C - - mlt bc + 212 D2:0330 79 - - - ld a,c + 213 D2:0331 32 36 03 D2 ld (Offset_SMC),a + 214 D2:0335 - - - - Offset_SMC =$+1 + 215 D2:0335 18 FE - - jr $ + 216 D2:0337 01 80 69 67 ld bc,-10000000 + 217 D2:033B CD 73 03 D2 call Num1 + 218 D2:033F 01 C0 BD F0 ld bc,-1000000 + 219 D2:0343 CD 73 03 D2 call Num1 + 220 D2:0347 01 60 79 FE ld bc,-100000 + 221 D2:034B CD 73 03 D2 call Num1 + 222 D2:034F 01 F0 D8 FF ld bc,-10000 + 223 D2:0353 CD 73 03 D2 call Num1 + 224 D2:0357 01 18 FC FF ld bc,-1000 + 225 D2:035B CD 73 03 D2 call Num1 + 226 D2:035F 01 9C FF FF ld bc,-100 + 227 D2:0363 CD 73 03 D2 call Num1 + 228 D2:0367 01 F6 FF FF ld bc,-10 + 229 D2:036B CD 73 03 D2 call Num1 + 230 D2:036F 01 FF FF FF ld bc,-1 + 231 D2:0373 3E 2F - - Num1: ld a,'0'-1 + 232 D2:0375 3C - - - Num2: inc a + 233 D2:0376 09 - - - add hl,bc + 234 D2:0377 38 FC - - jr c,Num2 + 235 D2:0379 ED 42 - - sbc hl,bc + 236 D2:037B C3 7D 02 D2 jp _PrintChar_ASM + 237 D2:037F - - - - + 238 D2:037F - - - - ;------------------------------------------------------------------------------- + 239 D2:037F - - - - _PrintInt: + 240 D2:037F - - - - ; Places an int at the current cursor position + 241 D2:037F - - - - ; Arguments: + 242 D2:037F - - - - ; arg0 : Number to print + 243 D2:037F - - - - ; arg1 : Number of characters to print + 244 D2:037F - - - - ; Returns: + 245 D2:037F - - - - ; None + 246 D2:037F FD 21 00 00 + 00 - - - ld iy,0 + 247 D2:0384 ED 03 00 - lea bc,iy + 248 D2:0387 FD 39 - - add iy,sp + 249 D2:0389 FD 4E 06 - ld c,(iy+6) + 250 D2:038C FD 27 03 - ld hl,(iy+3) + 251 D2:038F FD CB 05 7E bit 7,(iy+5) + 252 D2:0393 28 0E - - jr z,+_ + 253 D2:0395 C5 - - - push bc + 254 D2:0396 E5 - - - push hl + 255 D2:0397 C1 - - - pop bc + 256 D2:0398 ED 62 - - sbc hl,hl + 257 D2:039A ED 42 - - sbc hl,bc + 258 D2:039C 3E 2D - - ld a,'-' + 259 D2:039E CD 7D 02 D2 call _PrintChar_ASM + 260 D2:03A2 C1 - - - pop bc + 261 D2:03A3 C3 27 03 D2 _: jp _PrintUInt_ASM + 262 D2:03A7 - - - - + 263 D2:03A7 - - - - ;------------------------------------------------------------------------------- + 264 D2:03A7 - - - - _GetStringWidth: + 265 D2:03A7 - - - - ; Gets the width of a string + 266 D2:03A7 - - - - ; Arguments: + 267 D2:03A7 - - - - ; arg0 : Pointer to string + 268 D2:03A7 - - - - ; Returns: + 269 D2:03A7 - - - - ; Width of string in pixels + 270 D2:03A7 D1 - - - pop de + 271 D2:03A8 E1 - - - pop hl + 272 D2:03A9 E5 - - - push hl + 273 D2:03AA D5 - - - push de + 274 D2:03AB 01 00 00 00 ld bc,0 + 275 D2:03AF 7E - - - _: ld a,(hl) + 276 D2:03B0 B7 - - - or a,a + 277 D2:03B1 28 09 - - jr z,+_ + 278 D2:03B3 E5 - - - push hl + 279 D2:03B4 CD CC 03 D2 call _GetCharWidth_ASM + 280 D2:03B8 E1 - - - pop hl + 281 D2:03B9 23 - - - inc hl + 282 D2:03BA 18 F3 - - jr -_ + 283 D2:03BC C5 - - - _: push bc + 284 D2:03BD E1 - - - pop hl + 285 D2:03BE C9 - - - ret + 286 D2:03BF - - - - + 287 D2:03BF - - - - ;------------------------------------------------------------------------------- + 288 D2:03BF - - - - _GetCharWidth: + 289 D2:03BF - - - - ; Gets the width of a character + 290 D2:03BF - - - - ; Arguments: + 291 D2:03BF - - - - ; arg0 : Character + 292 D2:03BF - - - - ; Returns: + 293 D2:03BF - - - - ; Width of character in pixels + 294 D2:03BF FD 21 00 00 + 00 - - - ld iy,0 + 295 D2:03C4 ED 03 00 - lea bc,iy + 296 D2:03C7 FD 39 - - add iy,sp + 297 D2:03C9 FD 7E 03 - ld a,(iy+3) + 298 D2:03CC - - - - _GetCharWidth_ASM: + 299 D2:03CC B7 - - - or a,a + 300 D2:03CD ED 62 - - sbc hl,hl + 301 D2:03CF 6F - - - ld l,a + 302 D2:03D0 3A 82 02 D2 ld a,(MonoFlag_SMC) + 303 D2:03D4 B7 - - - or a,a + 304 D2:03D5 20 0E - - jr nz,+_ + 305 D2:03D7 ED 5B 3F 05 + D2 - - - ld de,(CharSpacing_ASM) + 306 D2:03DC 19 - - - add hl,de + 307 D2:03DD 7E - - - ld a,(hl) + 308 D2:03DE ED 62 - - sbc hl,hl + 309 D2:03E0 6F - - - ld l,a + 310 D2:03E1 09 - - - add hl,bc + 311 D2:03E2 E5 - - - push hl + 312 D2:03E3 C1 - - - pop bc + 313 D2:03E4 C9 - - - ret + 314 D2:03E5 ED 62 - - _: sbc hl,hl + 315 D2:03E7 6F - - - ld l,a + 316 D2:03E8 09 - - - add hl,bc + 317 D2:03E9 C9 - - - ret + 318 D2:03EA - - - - + 319 D2:03EA - - - - ;------------------------------------------------------------------------------- + 320 D2:03EA - - - - _SetCustomFontData: + 321 D2:03EA - - - - ; Sets the font to be custom + 322 D2:03EA - - - - ; Arguments: + 323 D2:03EA - - - - ; arg0 : Pointer to font data + 324 D2:03EA - - - - ; Set Pointer to NULL to use default font + 325 D2:03EA - - - - ; Returns: + 326 D2:03EA - - - - ; None + 327 D2:03EA D1 - - - pop de + 328 D2:03EB E1 - - - pop hl + 329 D2:03EC E5 - - - push hl + 330 D2:03ED D5 - - - push de + 331 D2:03EE 19 - - - add hl,de + 332 D2:03EF B7 - - - or a,a + 333 D2:03F0 ED 52 - - sbc hl,de + 334 D2:03F2 20 04 - - jr nz,+_ + 335 D2:03F4 21 E5 05 D2 ld hl,Char000 + 336 D2:03F8 22 42 05 D2 _: ld (TextData_ASM),hl + 337 D2:03FC C9 - - - ret + 338 D2:03FD - - - - + 339 D2:03FD - - - - ;------------------------------------------------------------------------------- + 340 D2:03FD - - - - _SetCustomFontSpacing: + 341 D2:03FD - - - - ; Sets the font to be custom spacing + 342 D2:03FD - - - - ; Arguments: + 343 D2:03FD - - - - ; arg0 : Pointer to font spacing + 344 D2:03FD - - - - ; Set Pointer to NULL to use default font spacing + 345 D2:03FD - - - - ; Returns: + 346 D2:03FD - - - - ; None + 347 D2:03FD D1 - - - pop de + 348 D2:03FE E1 - - - pop hl + 349 D2:03FF E5 - - - push hl + 350 D2:0400 D5 - - - push de + 351 D2:0401 19 - - - add hl,de + 352 D2:0402 B7 - - - or a,a + 353 D2:0403 ED 52 - - sbc hl,de + 354 D2:0405 20 04 - - jr nz,+_ + 355 D2:0407 21 45 05 D2 ld hl,DefaultCharSpacing_ASM + 356 D2:040B 22 3F 05 D2 _: ld (CharSpacing_ASM),hl + 357 D2:040F C9 - - - ret + 358 D2:0410 - - - - + 359 D2:0410 - - - - ;------------------------------------------------------------------------------- + 360 D2:0410 - - - - _SetMonospaceFont: + 361 D2:0410 - - - - ; Sets the font to be monospace + 362 D2:0410 - - - - ; Arguments: + 363 D2:0410 - - - - ; arg0 : Monospace spacing amount + 364 D2:0410 - - - - ; Returns: + 365 D2:0410 - - - - ; None + 366 D2:0410 E1 - - - pop hl + 367 D2:0411 D1 - - - pop de + 368 D2:0412 D5 - - - push de + 369 D2:0413 E5 - - - push hl + 370 D2:0414 7B - - - ld a,e + 371 D2:0415 32 82 02 D2 ld (MonoFlag_SMC),a + 372 D2:0419 C9 - - - ret + 373 D2:041A - - - - + 374 D2:041A - - - - + 375 D2:041A - - - - ;------------------------------------------------------------------------------- + 376 D2:041A - - - - _Max_ASM: + 377 D2:041A - - - - ; Calculate the resut of a signed comparison + 378 D2:041A - - - - ; Inputs: + 379 D2:041A - - - - ; DE,HL=numbers + 380 D2:041A - - - - ; Oututs: + 381 D2:041A - - - - ; HL=max number + 382 D2:041A B7 - - - or a,a + 383 D2:041B ED 52 - - sbc hl,de + 384 D2:041D 19 - - - add hl,de + 385 D2:041E F2 24 04 D2 jp p,+_ + 386 D2:0422 E8 - - - ret pe + 387 D2:0423 EB - - - ex de,hl + 388 D2:0424 E0 - - - _: ret po + 389 D2:0425 EB - - - ex de,hl + 390 D2:0426 C9 - - - ret + 391 D2:0427 - - - - + 392 D2:0427 - - - - ;------------------------------------------------------------------------------- + 393 D2:0427 - - - - _Min_ASM: + 394 D2:0427 - - - - ; Calculate the resut of a signed comparison + 395 D2:0427 - - - - ; Inputs: + 396 D2:0427 - - - - ; DE,HL=numbers + 397 D2:0427 - - - - ; Oututs: + 398 D2:0427 - - - - ; HL=min number + 399 D2:0427 B7 - - - or a,a + 400 D2:0428 ED 52 - - sbc hl,de + 401 D2:042A EB - - - ex de,hl + 402 D2:042B F2 31 04 D2 jp p,_ + 403 D2:042F E8 - - - ret pe + 404 D2:0430 19 - - - add hl,de + 405 D2:0431 E0 - - - _: ret po + 406 D2:0432 19 - - - add hl,de + 407 D2:0433 C9 - - - ret + 408 D2:0434 - - - - + 409 D2:0434 - - - - ;------------------------------------------------------------------------------- + 410 D2:0434 - - - - _ClipRectangularRegion_ASM: + 411 D2:0434 - - - - ; Calculates the new coordinates given the clip and inputs + 412 D2:0434 - - - - ; Inputs: + 413 D2:0434 - - - - ; None + 414 D2:0434 - - - - ; Outputs: + 415 D2:0434 - - - - ; Modifies data registers + 416 D2:0434 - - - - ; Sets C flag if offscreen + 417 D2:0434 2A E5 09 D2 ld hl,(_xmin) + 418 D2:0438 FD 17 03 - ld de,(iy+3) + 419 D2:043B CD 1A 04 D2 call _Max_ASM + 420 D2:043F FD 2F 03 - ld (iy+3),hl + 421 D2:0442 2A EB 09 D2 ld hl,(_xmax) + 422 D2:0446 FD 17 09 - ld de,(iy+9) + 423 D2:0449 CD 27 04 D2 call _Min_ASM + 424 D2:044D FD 2F 09 - ld (iy+9),hl + 425 D2:0450 FD 17 03 - ld de,(iy+3) + 426 D2:0453 CD 77 04 D2 call _SignedCompare_ASM + 427 D2:0457 D8 - - - ret c + 428 D2:0458 2A E8 09 D2 ld hl,(_ymin) + 429 D2:045C FD 17 06 - ld de,(iy+6) + 430 D2:045F CD 1A 04 D2 call _Max_ASM + 431 D2:0463 FD 2F 06 - ld (iy+6),hl + 432 D2:0466 2A EE 09 D2 ld hl,(_ymax) + 433 D2:046A FD 17 0C - ld de,(iy+12) + 434 D2:046D CD 27 04 D2 call _Min_ASM + 435 D2:0471 FD 2F 0C - ld (iy+12),hl + 436 D2:0474 FD 17 06 - ld de,(iy+6) + 437 D2:0477 - - - - _SignedCompare_ASM: + 438 D2:0477 B7 - - - or a,a + 439 D2:0478 ED 52 - - sbc hl,de + 440 D2:047A 29 - - - add hl,hl + 441 D2:047B E0 - - - ret po + 442 D2:047C 3F - - - ccf + 443 D2:047D C9 - - - ret + 444 D2:047E - - - - + 445 D2:047E - - - - ;------------------------------------------------------------------------------- + 446 D2:047E - - - - _SetFullScreenClipping_ASM: + 447 D2:047E - - - - ; Sets the clipping to the entire screen + 448 D2:047E - - - - ; Inputs: + 449 D2:047E - - - - ; None + 450 D2:047E - - - - ; Outputs: + 451 D2:047E - - - - ; HL=0 + 452 D2:047E 21 40 01 00 ld hl,lcdWidth + 453 D2:0482 22 EB 09 D2 ld (_xmax),hl + 454 D2:0486 21 F0 00 00 ld hl,lcdHeight + 455 D2:048A 22 EE 09 D2 ld (_ymax),hl + 456 D2:048E 2E 00 - - ld l,0 + 457 D2:0490 22 E5 09 D2 ld (_xmin),hl + 458 D2:0494 22 E8 09 D2 ld (_ymin),hl + 459 D2:0498 C9 - - - ret + 460 D2:0499 - - - - + 461 D2:0499 - - - - ;------------------------------------------------------------------------------- + 462 D2:0499 - - - - __idivs_ASM: + 463 D2:0499 - - - - ; Performs signed interger division + 464 D2:0499 - - - - ; Inputs: + 465 D2:0499 - - - - ; HL : Operand 1 + 466 D2:0499 - - - - ; BC : Operand 2 + 467 D2:0499 - - - - ; Outputs: + 468 D2:0499 - - - - ; HL = HL/BC + 469 D2:0499 EB - - - ex de,hl + 470 D2:049A AF - - - xor a,a + 471 D2:049B ED 62 - - sbc hl,hl + 472 D2:049D ED 42 - - sbc hl,bc + 473 D2:049F F2 A6 04 D2 jp p,+_ + 474 D2:04A3 E5 - - - push hl + 475 D2:04A4 C1 - - - pop bc + 476 D2:04A5 3C - - - inc a + 477 D2:04A6 - - - - + 478 D2:04A6 B7 - - - _: or a,a + 479 D2:04A7 ED 62 - - sbc hl,hl + 480 D2:04A9 ED 52 - - sbc hl,de + 481 D2:04AB FA B1 04 D2 jp m,+_ + 482 D2:04AF EB - - - ex de,hl + 483 D2:04B0 3C - - - inc a + 484 D2:04B1 - - - - + 485 D2:04B1 19 - - - _: add hl,de + 486 D2:04B2 1F - - - rra + 487 D2:04B3 3E 18 - - ld a,24 + 488 D2:04B5 - - - - + 489 D2:04B5 EB - - - _: ex de,hl + 490 D2:04B6 ED 6A - - adc hl,hl + 491 D2:04B8 EB - - - ex de,hl + 492 D2:04B9 ED 6A - - adc hl,hl + 493 D2:04BB 09 - - - add hl,bc + 494 D2:04BC 38 02 - - jr c,+_ + 495 D2:04BE ED 42 - - sbc hl,bc + 496 D2:04C0 3D - - - _: dec a + 497 D2:04C1 20 F2 - - jr nz,--_ + 498 D2:04C3 - - - - + 499 D2:04C3 EB - - - ex de,hl + 500 D2:04C4 ED 6A - - adc hl,hl + 501 D2:04C6 D8 - - - ret c + 502 D2:04C7 EB - - - ex de,hl + 503 D2:04C8 ED 62 - - sbc hl,hl + 504 D2:04CA ED 52 - - sbc hl,de + 505 D2:04CC C9 - - - ret + 506 D2:04CD - - - - + 507 D2:04CD - - - - ;------------------------------------------------------------------------------- + 508 D2:04CD - - - - __imuls_ASM: + 509 D2:04CD - - - - __imulu_ASM: + 510 D2:04CD - - - - ; Performs (un)signed integer multiplication + 511 D2:04CD - - - - ; Inputs: + 512 D2:04CD - - - - ; HL : Operand 1 + 513 D2:04CD - - - - ; BC : Operand 2 + 514 D2:04CD - - - - ; Outputs: + 515 D2:04CD - - - - ; HL = HL*BC + 516 D2:04CD C5 - - - push bc + 517 D2:04CE E5 - - - push hl + 518 D2:04CF EB - - - ex de,hl + 519 D2:04D0 21 02 00 00 ld hl,2 + 520 D2:04D4 39 - - - add hl,sp + 521 D2:04D5 46 - - - ld b,(hl) + 522 D2:04D6 ED 4C - - mlt bc + 523 D2:04D8 23 - - - inc hl + 524 D2:04D9 23 - - - inc hl + 525 D2:04DA 23 - - - inc hl + 526 D2:04DB 7A - - - ld a,d + 527 D2:04DC 56 - - - ld d,(hl) + 528 D2:04DD ED 5C - - mlt de + 529 D2:04DF 2B - - - dec hl + 530 D2:04E0 6E - - - ld l,(hl) + 531 D2:04E1 67 - - - ld h,a + 532 D2:04E2 ED 6C - - mlt hl + 533 D2:04E4 7D - - - ld a,l + 534 D2:04E5 83 - - - add a,e + 535 D2:04E6 81 - - - add a,c + 536 D2:04E7 D1 - - - pop de + 537 D2:04E8 C1 - - - pop bc + 538 D2:04E9 C5 - - - push bc + 539 D2:04EA B7 - - - or a,a + 540 D2:04EB ED 62 - - sbc hl,hl + 541 D2:04ED 52 19 - - add.s hl,de + 542 D2:04EF EB - - - ex de,hl + 543 D2:04F0 60 - - - ld h,b + 544 D2:04F1 ED 6C - - mlt hl + 545 D2:04F3 42 - - - ld b,d + 546 D2:04F4 ED 4C - - mlt bc + 547 D2:04F6 09 - - - add hl,bc + 548 D2:04F7 84 - - - add a,h + 549 D2:04F8 67 - - - ld h,a + 550 D2:04F9 C1 - - - pop bc + 551 D2:04FA 51 - - - ld d,c + 552 D2:04FB ED 5C - - mlt de + 553 D2:04FD 29 - - - add hl,hl + 554 D2:04FE 29 - - - add hl,hl + 555 D2:04FF 29 - - - add hl,hl + 556 D2:0500 29 - - - add hl,hl + 557 D2:0501 29 - - - add hl,hl + 558 D2:0502 29 - - - add hl,hl + 559 D2:0503 29 - - - add hl,hl + 560 D2:0504 29 - - - add hl,hl + 561 D2:0505 19 - - - add hl,de + 562 D2:0506 C9 - - - ret + 563 D2:0507 - - - - + 564 D2:0507 - - - - ;------------------------------------------------------------------------------- + 565 D2:0507 - - - - _ComputeOutcode_ASM: + 566 D2:0507 - - - - ; Compute the bitcode for a point (x, y) using the clip rectangle + 567 D2:0507 - - - - ; bounded diagonally by (xmin, ymin), and (xmax, ymax) + 568 D2:0507 - - - - ; Inputs: + 569 D2:0507 - - - - ; HL : X Argument + 570 D2:0507 - - - - ; DE : Y Argument + 571 D2:0507 - - - - ; Outputs: + 572 D2:0507 - - - - ; A : Bitcode + 573 D2:0507 ED 4B E5 09 + D2 - - - ld bc,(_xmin) + 574 D2:050C E5 - - - push hl + 575 D2:050D AF - - - xor a,a + 576 D2:050E ED 42 - - sbc hl,bc + 577 D2:0510 C1 - - - pop bc + 578 D2:0511 29 - - - add hl,hl + 579 D2:0512 E2 17 05 D2 jp po,+_ + 580 D2:0516 3F - - - ccf + 581 D2:0517 17 - - - _: rla + 582 D2:0518 2A EB 09 D2 ld hl,(_xmax) + 583 D2:051C ED 42 - - sbc hl,bc + 584 D2:051E 29 - - - add hl,hl + 585 D2:051F E2 24 05 D2 jp po,+_ + 586 D2:0523 3F - - - ccf + 587 D2:0524 17 - - - _: rla + 588 D2:0525 2A E8 09 D2 ld hl,(_ymin) + 589 D2:0529 37 - - - scf + 590 D2:052A ED 52 - - sbc hl,de + 591 D2:052C 29 - - - add hl,hl + 592 D2:052D EA 32 05 D2 jp pe,+_ + 593 D2:0531 3F - - - ccf + 594 D2:0532 17 - - - _: rla + 595 D2:0533 2A EE 09 D2 ld hl,(_ymax) + 596 D2:0537 ED 52 - - sbc hl,de + 597 D2:0539 29 - - - add hl,hl + 598 D2:053A 17 - - - rla + 599 D2:053B E0 - - - ret po + 600 D2:053C EE 01 - - xor a,1 + 601 D2:053E C9 - - - ret + 602 D2:053F - - - - + 603 D2:053F - - - - ;------------------------------------------------------------------------------- + 604 D2:053F - - - - CharSpacing_ASM: + 605 D2:053F 45 05 D2 - .dl DefaultCharSpacing_ASM + 606 D2:0542 - - - - TextData_ASM: + 607 D2:0542 E5 05 D2 - .dl DefaultTextData_ASM + 608 D2:0545 - - - - + 609 D2:0545 - - - - DefaultCharSpacing_ASM: + 610 D2:0545 - - - - ; 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F + 611 D2:0545 08 08 08 08 + 08 08 08 08 + 08 08 08 08 + 08 02 08 08 .db 8,8,8,8,8,8,8,8,8,8,8,8,8,2,8,8 + 612 D2:0555 08 08 08 08 + 08 08 08 08 + 08 08 08 08 + 08 08 08 08 .db 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 + 613 D2:0565 03 04 06 08 + 08 08 08 05 + 05 05 08 07 + 04 07 03 08 .db 3,4,6,8,8,8,8,5,5,5,8,7,4,7,3,8 + 614 D2:0575 08 07 08 08 + 08 08 08 08 + 08 08 03 04 + 06 07 06 07 .db 8,7,8,8,8,8,8,8,8,8,3,4,6,7,6,7 + 615 D2:0585 08 08 08 08 + 08 08 08 08 + 08 08 08 08 + 08 08 08 08 .db 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 + 616 D2:0595 08 08 08 08 + 08 08 08 08 + 08 08 08 05 + 08 05 08 08 .db 8,8,8,8,8,8,8,8,8,8,8,5,8,5,8,8 + 617 D2:05A5 04 08 08 08 + 08 08 08 08 + 08 05 08 08 + 05 08 08 08 .db 4,8,8,8,8,8,8,8,8,5,8,8,5,8,8,8 + 618 D2:05B5 08 08 08 08 + 07 08 08 08 + 08 08 08 07 + 03 07 08 08 .db 8,8,8,8,7,8,8,8,8,8,8,7,3,7,8,8 + 619 D2:05C5 08 08 08 08 + 08 08 08 08 + 08 08 08 08 + 08 08 08 08 .db 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 + 620 D2:05D5 08 08 08 08 + 08 08 08 08 + 08 08 08 08 + 08 08 08 08 .db 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 + 621 D2:05E5 - - - - + 622 D2:05E5 - - - - ;------------------------------------------------------------------------------- + 623 D2:05E5 - - - - DefaultTextData_ASM: + 624 D2:05E5 00 00 00 00 + 00 00 00 00 Char000: .db $00,$00,$00,$00,$00,$00,$00,$00 ; . + 625 D2:05ED 7E 81 A5 81 + BD BD 81 7E Char001: .db $7E,$81,$A5,$81,$BD,$BD,$81,$7E ; . + 626 D2:05F5 7E FF DB FF + C3 C3 FF 7E Char002: .db $7E,$FF,$DB,$FF,$C3,$C3,$FF,$7E ; . + 627 D2:05FD 6C FE FE FE + 7C 38 10 00 Char003: .db $6C,$FE,$FE,$FE,$7C,$38,$10,$00 ; . + 628 D2:0605 10 38 7C FE + 7C 38 10 00 Char004: .db $10,$38,$7C,$FE,$7C,$38,$10,$00 ; . + 629 D2:060D 38 7C 38 FE + FE 10 10 7C Char005: .db $38,$7C,$38,$FE,$FE,$10,$10,$7C ; . + 630 D2:0615 00 18 3C 7E + FF 7E 18 7E Char006: .db $00,$18,$3C,$7E,$FF,$7E,$18,$7E ; . + 631 D2:061D 00 00 18 3C + 3C 18 00 00 Char007: .db $00,$00,$18,$3C,$3C,$18,$00,$00 ; . + 632 D2:0625 FF FF E7 C3 + C3 E7 FF FF Char008: .db $FF,$FF,$E7,$C3,$C3,$E7,$FF,$FF ; . + 633 D2:062D 00 3C 66 42 + 42 66 3C 00 Char009: .db $00,$3C,$66,$42,$42,$66,$3C,$00 ; . + 634 D2:0635 FF C3 99 BD + BD 99 C3 FF Char010: .db $FF,$C3,$99,$BD,$BD,$99,$C3,$FF ; . + 635 D2:063D 0F 07 0F 7D + CC CC CC 78 Char011: .db $0F,$07,$0F,$7D,$CC,$CC,$CC,$78 ; . + 636 D2:0645 3C 66 66 66 + 3C 18 7E 18 Char012: .db $3C,$66,$66,$66,$3C,$18,$7E,$18 ; . + 637 D2:064D 3F 33 3F 30 + 30 70 F0 E0 Char013: .db $3F,$33,$3F,$30,$30,$70,$F0,$E0 ; . + 638 D2:0655 7F 63 7F 63 + 63 67 E6 C0 Char014: .db $7F,$63,$7F,$63,$63,$67,$E6,$C0 ; . + 639 D2:065D 99 5A 3C E7 + E7 3C 5A 99 Char015: .db $99,$5A,$3C,$E7,$E7,$3C,$5A,$99 ; . + 640 D2:0665 80 E0 F8 FE + F8 E0 80 00 Char016: .db $80,$E0,$F8,$FE,$F8,$E0,$80,$00 ; . + 641 D2:066D 02 0E 3E FE + 3E 0E 02 00 Char017: .db $02,$0E,$3E,$FE,$3E,$0E,$02,$00 ; . + 642 D2:0675 18 3C 7E 18 + 18 7E 3C 18 Char018: .db $18,$3C,$7E,$18,$18,$7E,$3C,$18 ; . + 643 D2:067D 66 66 66 66 + 66 00 66 00 Char019: .db $66,$66,$66,$66,$66,$00,$66,$00 ; . + 644 D2:0685 7F DB DB 7B + 1B 1B 1B 00 Char020: .db $7F,$DB,$DB,$7B,$1B,$1B,$1B,$00 ; . + 645 D2:068D 3F 60 7C 66 + 66 3E 06 FC Char021: .db $3F,$60,$7C,$66,$66,$3E,$06,$FC ; . + 646 D2:0695 00 00 00 00 + 7E 7E 7E 00 Char022: .db $00,$00,$00,$00,$7E,$7E,$7E,$00 ; . + 647 D2:069D 18 3C 7E 18 + 7E 3C 18 FF Char023: .db $18,$3C,$7E,$18,$7E,$3C,$18,$FF ; . + 648 D2:06A5 18 3C 7E 18 + 18 18 18 00 Char024: .db $18,$3C,$7E,$18,$18,$18,$18,$00 ; . + 649 D2:06AD 18 18 18 18 + 7E 3C 18 00 Char025: .db $18,$18,$18,$18,$7E,$3C,$18,$00 ; . + 650 D2:06B5 00 18 0C FE + 0C 18 00 00 Char026: .db $00,$18,$0C,$FE,$0C,$18,$00,$00 ; . + 651 D2:06BD 00 30 60 FE + 60 30 00 00 Char027: .db $00,$30,$60,$FE,$60,$30,$00,$00 ; . + 652 D2:06C5 00 00 C0 C0 + C0 FE 00 00 Char028: .db $00,$00,$C0,$C0,$C0,$FE,$00,$00 ; . + 653 D2:06CD 00 24 66 FF + 66 24 00 00 Char029: .db $00,$24,$66,$FF,$66,$24,$00,$00 ; . + 654 D2:06D5 00 18 3C 7E + FF FF 00 00 Char030: .db $00,$18,$3C,$7E,$FF,$FF,$00,$00 ; . + 655 D2:06DD 00 FF FF 7E + 3C 18 00 00 Char031: .db $00,$FF,$FF,$7E,$3C,$18,$00,$00 ; . + 656 D2:06E5 00 00 00 00 + 00 00 00 00 Char032: .db $00,$00,$00,$00,$00,$00,$00,$00 ; + 657 D2:06ED C0 C0 C0 C0 + C0 00 C0 00 Char033: .db $C0,$C0,$C0,$C0,$C0,$00,$C0,$00 ; ! + 658 D2:06F5 D8 D8 D8 00 + 00 00 00 00 Char034: .db $D8,$D8,$D8,$00,$00,$00,$00,$00 ; " + 659 D2:06FD 6C 6C FE 6C + FE 6C 6C 00 Char035: .db $6C,$6C,$FE,$6C,$FE,$6C,$6C,$00 ; # + 660 D2:0705 18 7E C0 7C + 06 FC 18 00 Char036: .db $18,$7E,$C0,$7C,$06,$FC,$18,$00 ; $ + 661 D2:070D 00 C6 CC 18 + 30 66 C6 00 Char037: .db $00,$C6,$CC,$18,$30,$66,$C6,$00 ; % + 662 D2:0715 38 6C 38 76 + DC CC 76 00 Char038: .db $38,$6C,$38,$76,$DC,$CC,$76,$00 ; & + 663 D2:071D 30 30 60 00 + 00 00 00 00 Char039: .db $30,$30,$60,$00,$00,$00,$00,$00 ; ' + 664 D2:0725 30 60 C0 C0 + C0 60 30 00 Char040: .db $30,$60,$C0,$C0,$C0,$60,$30,$00 ; ( + 665 D2:072D C0 60 30 30 + 30 60 C0 00 Char041: .db $C0,$60,$30,$30,$30,$60,$C0,$00 ; ) + 666 D2:0735 00 66 3C FF + 3C 66 00 00 Char042: .db $00,$66,$3C,$FF,$3C,$66,$00,$00 ; * + 667 D2:073D 00 30 30 FC + FC 30 30 00 Char043: .db $00,$30,$30,$FC,$FC,$30,$30,$00 ; + + 668 D2:0745 00 00 00 00 + 00 60 60 C0 Char044: .db $00,$00,$00,$00,$00,$60,$60,$C0 ; , + 669 D2:074D 00 00 00 FC + 00 00 00 00 Char045: .db $00,$00,$00,$FC,$00,$00,$00,$00 ; - + 670 D2:0755 00 00 00 00 + 00 C0 C0 00 Char046: .db $00,$00,$00,$00,$00,$C0,$C0,$00 ; . + 671 D2:075D 06 0C 18 30 + 60 C0 80 00 Char047: .db $06,$0C,$18,$30,$60,$C0,$80,$00 ; / + 672 D2:0765 7C CE DE F6 + E6 C6 7C 00 Char048: .db $7C,$CE,$DE,$F6,$E6,$C6,$7C,$00 ; 0 + 673 D2:076D 30 70 30 30 + 30 30 FC 00 Char049: .db $30,$70,$30,$30,$30,$30,$FC,$00 ; 1 + 674 D2:0775 7C C6 06 7C + C0 C0 FE 00 Char050: .db $7C,$C6,$06,$7C,$C0,$C0,$FE,$00 ; 2 + 675 D2:077D FC 06 06 3C + 06 06 FC 00 Char051: .db $FC,$06,$06,$3C,$06,$06,$FC,$00 ; 3 + 676 D2:0785 0C CC CC CC + FE 0C 0C 00 Char052: .db $0C,$CC,$CC,$CC,$FE,$0C,$0C,$00 ; 4 + 677 D2:078D FE C0 FC 06 + 06 C6 7C 00 Char053: .db $FE,$C0,$FC,$06,$06,$C6,$7C,$00 ; 5 + 678 D2:0795 7C C0 C0 FC + C6 C6 7C 00 Char054: .db $7C,$C0,$C0,$FC,$C6,$C6,$7C,$00 ; 6 + 679 D2:079D FE 06 06 0C + 18 30 30 00 Char055: .db $FE,$06,$06,$0C,$18,$30,$30,$00 ; 7 + 680 D2:07A5 7C C6 C6 7C + C6 C6 7C 00 Char056: .db $7C,$C6,$C6,$7C,$C6,$C6,$7C,$00 ; 8 + 681 D2:07AD 7C C6 C6 7E + 06 06 7C 00 Char057: .db $7C,$C6,$C6,$7E,$06,$06,$7C,$00 ; 9 + 682 D2:07B5 00 C0 C0 00 + 00 C0 C0 00 Char058: .db $00,$C0,$C0,$00,$00,$C0,$C0,$00 ; : + 683 D2:07BD 00 60 60 00 + 00 60 60 C0 Char059: .db $00,$60,$60,$00,$00,$60,$60,$C0 ; ; + 684 D2:07C5 18 30 60 C0 + 60 30 18 00 Char060: .db $18,$30,$60,$C0,$60,$30,$18,$00 ; < + 685 D2:07CD 00 00 FC 00 + FC 00 00 00 Char061: .db $00,$00,$FC,$00,$FC,$00,$00,$00 ; = + 686 D2:07D5 C0 60 30 18 + 30 60 C0 00 Char062: .db $C0,$60,$30,$18,$30,$60,$C0,$00 ; > + 687 D2:07DD 78 CC 18 30 + 30 00 30 00 Char063: .db $78,$CC,$18,$30,$30,$00,$30,$00 ; ? + 688 D2:07E5 7C C6 DE DE + DE C0 7E 00 Char064: .db $7C,$C6,$DE,$DE,$DE,$C0,$7E,$00 ; @ + 689 D2:07ED 38 6C C6 C6 + FE C6 C6 00 Char065: .db $38,$6C,$C6,$C6,$FE,$C6,$C6,$00 ; A + 690 D2:07F5 FC C6 C6 FC + C6 C6 FC 00 Char066: .db $FC,$C6,$C6,$FC,$C6,$C6,$FC,$00 ; B + 691 D2:07FD 7C C6 C0 C0 + C0 C6 7C 00 Char067: .db $7C,$C6,$C0,$C0,$C0,$C6,$7C,$00 ; C + 692 D2:0805 F8 CC C6 C6 + C6 CC F8 00 Char068: .db $F8,$CC,$C6,$C6,$C6,$CC,$F8,$00 ; D + 693 D2:080D FE C0 C0 F8 + C0 C0 FE 00 Char069: .db $FE,$C0,$C0,$F8,$C0,$C0,$FE,$00 ; E + 694 D2:0815 FE C0 C0 F8 + C0 C0 C0 00 Char070: .db $FE,$C0,$C0,$F8,$C0,$C0,$C0,$00 ; F + 695 D2:081D 7C C6 C0 C0 + CE C6 7C 00 Char071: .db $7C,$C6,$C0,$C0,$CE,$C6,$7C,$00 ; G + 696 D2:0825 C6 C6 C6 FE + C6 C6 C6 00 Char072: .db $C6,$C6,$C6,$FE,$C6,$C6,$C6,$00 ; H + 697 D2:082D 7E 18 18 18 + 18 18 7E 00 Char073: .db $7E,$18,$18,$18,$18,$18,$7E,$00 ; I + 698 D2:0835 06 06 06 06 + 06 C6 7C 00 Char074: .db $06,$06,$06,$06,$06,$C6,$7C,$00 ; J + 699 D2:083D C6 CC D8 F0 + D8 CC C6 00 Char075: .db $C6,$CC,$D8,$F0,$D8,$CC,$C6,$00 ; K + 700 D2:0845 C0 C0 C0 C0 + C0 C0 FE 00 Char076: .db $C0,$C0,$C0,$C0,$C0,$C0,$FE,$00 ; L + 701 D2:084D C6 EE FE FE + D6 C6 C6 00 Char077: .db $C6,$EE,$FE,$FE,$D6,$C6,$C6,$00 ; M + 702 D2:0855 C6 E6 F6 DE + CE C6 C6 00 Char078: .db $C6,$E6,$F6,$DE,$CE,$C6,$C6,$00 ; N + 703 D2:085D 7C C6 C6 C6 + C6 C6 7C 00 Char079: .db $7C,$C6,$C6,$C6,$C6,$C6,$7C,$00 ; O + 704 D2:0865 FC C6 C6 FC + C0 C0 C0 00 Char080: .db $FC,$C6,$C6,$FC,$C0,$C0,$C0,$00 ; P + 705 D2:086D 7C C6 C6 C6 + D6 DE 7C 06 Char081: .db $7C,$C6,$C6,$C6,$D6,$DE,$7C,$06 ; Q + 706 D2:0875 FC C6 C6 FC + D8 CC C6 00 Char082: .db $FC,$C6,$C6,$FC,$D8,$CC,$C6,$00 ; R + 707 D2:087D 7C C6 C0 7C + 06 C6 7C 00 Char083: .db $7C,$C6,$C0,$7C,$06,$C6,$7C,$00 ; S + 708 D2:0885 FF 18 18 18 + 18 18 18 00 Char084: .db $FF,$18,$18,$18,$18,$18,$18,$00 ; T + 709 D2:088D C6 C6 C6 C6 + C6 C6 FE 00 Char085: .db $C6,$C6,$C6,$C6,$C6,$C6,$FE,$00 ; U + 710 D2:0895 C6 C6 C6 C6 + C6 7C 38 00 Char086: .db $C6,$C6,$C6,$C6,$C6,$7C,$38,$00 ; V + 711 D2:089D C6 C6 C6 C6 + D6 FE 6C 00 Char087: .db $C6,$C6,$C6,$C6,$D6,$FE,$6C,$00 ; W + 712 D2:08A5 C6 C6 6C 38 + 6C C6 C6 00 Char088: .db $C6,$C6,$6C,$38,$6C,$C6,$C6,$00 ; X + 713 D2:08AD C6 C6 C6 7C + 18 30 E0 00 Char089: .db $C6,$C6,$C6,$7C,$18,$30,$E0,$00 ; Y + 714 D2:08B5 FE 06 0C 18 + 30 60 FE 00 Char090: .db $FE,$06,$0C,$18,$30,$60,$FE,$00 ; Z + 715 D2:08BD F0 C0 C0 C0 + C0 C0 F0 00 Char091: .db $F0,$C0,$C0,$C0,$C0,$C0,$F0,$00 ; [ + 716 D2:08C5 C0 60 30 18 + 0C 06 02 00 Char092: .db $C0,$60,$30,$18,$0C,$06,$02,$00 ; \ + 717 D2:08CD F0 30 30 30 + 30 30 F0 00 Char093: .db $F0,$30,$30,$30,$30,$30,$F0,$00 ; ] + 718 D2:08D5 10 38 6C C6 + 00 00 00 00 Char094: .db $10,$38,$6C,$C6,$00,$00,$00,$00 ; ^ + 719 D2:08DD 00 00 00 00 + 00 00 00 FF Char095: .db $00,$00,$00,$00,$00,$00,$00,$FF ; _ + 720 D2:08E5 C0 C0 60 00 + 00 00 00 00 Char096: .db $C0,$C0,$60,$00,$00,$00,$00,$00 ; ` + 721 D2:08ED 00 00 7C 06 + 7E C6 7E 00 Char097: .db $00,$00,$7C,$06,$7E,$C6,$7E,$00 ; a + 722 D2:08F5 C0 C0 C0 FC + C6 C6 FC 00 Char098: .db $C0,$C0,$C0,$FC,$C6,$C6,$FC,$00 ; b + 723 D2:08FD 00 00 7C C6 + C0 C6 7C 00 Char099: .db $00,$00,$7C,$C6,$C0,$C6,$7C,$00 ; c + 724 D2:0905 06 06 06 7E + C6 C6 7E 00 Char100: .db $06,$06,$06,$7E,$C6,$C6,$7E,$00 ; d + 725 D2:090D 00 00 7C C6 + FE C0 7C 00 Char101: .db $00,$00,$7C,$C6,$FE,$C0,$7C,$00 ; e + 726 D2:0915 1C 36 30 78 + 30 30 78 00 Char102: .db $1C,$36,$30,$78,$30,$30,$78,$00 ; f + 727 D2:091D 00 00 7E C6 + C6 7E 06 FC Char103: .db $00,$00,$7E,$C6,$C6,$7E,$06,$FC ; g + 728 D2:0925 C0 C0 FC C6 + C6 C6 C6 00 Char104: .db $C0,$C0,$FC,$C6,$C6,$C6,$C6,$00 ; h + 729 D2:092D 60 00 E0 60 + 60 60 F0 00 Char105: .db $60,$00,$E0,$60,$60,$60,$F0,$00 ; i + 730 D2:0935 06 00 06 06 + 06 06 C6 7C Char106: .db $06,$00,$06,$06,$06,$06,$C6,$7C ; j + 731 D2:093D C0 C0 CC D8 + F8 CC C6 00 Char107: .db $C0,$C0,$CC,$D8,$F8,$CC,$C6,$00 ; k + 732 D2:0945 E0 60 60 60 + 60 60 F0 00 Char108: .db $E0,$60,$60,$60,$60,$60,$F0,$00 ; l + 733 D2:094D 00 00 CC FE + FE D6 D6 00 Char109: .db $00,$00,$CC,$FE,$FE,$D6,$D6,$00 ; m + 734 D2:0955 00 00 FC C6 + C6 C6 C6 00 Char110: .db $00,$00,$FC,$C6,$C6,$C6,$C6,$00 ; n + 735 D2:095D 00 00 7C C6 + C6 C6 7C 00 Char111: .db $00,$00,$7C,$C6,$C6,$C6,$7C,$00 ; o + 736 D2:0965 00 00 FC C6 + C6 FC C0 C0 Char112: .db $00,$00,$FC,$C6,$C6,$FC,$C0,$C0 ; p + 737 D2:096D 00 00 7E C6 + C6 7E 06 06 Char113: .db $00,$00,$7E,$C6,$C6,$7E,$06,$06 ; q + 738 D2:0975 00 00 FC C6 + C0 C0 C0 00 Char114: .db $00,$00,$FC,$C6,$C0,$C0,$C0,$00 ; r + 739 D2:097D 00 00 7E C0 + 7C 06 FC 00 Char115: .db $00,$00,$7E,$C0,$7C,$06,$FC,$00 ; s + 740 D2:0985 30 30 FC 30 + 30 30 1C 00 Char116: .db $30,$30,$FC,$30,$30,$30,$1C,$00 ; t + 741 D2:098D 00 00 C6 C6 + C6 C6 7E 00 Char117: .db $00,$00,$C6,$C6,$C6,$C6,$7E,$00 ; u + 742 D2:0995 00 00 C6 C6 + C6 7C 38 00 Char118: .db $00,$00,$C6,$C6,$C6,$7C,$38,$00 ; v + 743 D2:099D 00 00 C6 C6 + D6 FE 6C 00 Char119: .db $00,$00,$C6,$C6,$D6,$FE,$6C,$00 ; w + 744 D2:09A5 00 00 C6 6C + 38 6C C6 00 Char120: .db $00,$00,$C6,$6C,$38,$6C,$C6,$00 ; x + 745 D2:09AD 00 00 C6 C6 + C6 7E 06 FC Char121: .db $00,$00,$C6,$C6,$C6,$7E,$06,$FC ; y + 746 D2:09B5 00 00 FE 0C + 38 60 FE 00 Char122: .db $00,$00,$FE,$0C,$38,$60,$FE,$00 ; z + 747 D2:09BD 1C 30 30 E0 + 30 30 1C 00 Char123: .db $1C,$30,$30,$E0,$30,$30,$1C,$00 ; { + 748 D2:09C5 C0 C0 C0 00 + C0 C0 C0 00 Char124: .db $C0,$C0,$C0,$00,$C0,$C0,$C0,$00 ; | + 749 D2:09CD E0 30 30 1C + 30 30 E0 00 Char125: .db $E0,$30,$30,$1C,$30,$30,$E0,$00 ; } + 750 D2:09D5 76 DC 00 00 + 00 00 00 00 Char126: .db $76,$DC,$00,$00,$00,$00,$00,$00 ; ~ + 751 D2:09DD 00 10 38 6C + C6 C6 FE 00 Char127: .db $00,$10,$38,$6C,$C6,$C6,$FE,$00 ; . + 752 D2:09E5 - - - - + 753 D2:09E5 - - - - ;------------------------------------------------------------------------------- + 754 D2:09E5 - - - - ; Inner library data + 755 D2:09E5 - - - - ;------------------------------------------------------------------------------- + 756 D2:09E5 - - - - + 757 D2:09E5 - - - - _xmin: + 758 D2:09E5 00 00 00 - .dl 0 + 759 D2:09E8 - - - - _ymin: + 760 D2:09E8 00 00 00 - .dl 0 + 761 D2:09EB - - - - _xmax: + 762 D2:09EB 40 01 00 - .dl lcdWidth + 763 D2:09EE - - - - _ymax: + 764 D2:09EE F0 00 00 - .dl lcdHeight + 765 D2:09F1 - - - - + 766 D2:09F1 - - - - tmpWidth: + 767 D2:09F1 00 00 00 00 + 00 00 00 00 + 00 - - - .dl 0,0,0 +Listing for file "example1.ez80" + 182 D2:09FA - - - - + 183 D2:09FA - - - - posX: + 184 D2:09FA 00 00 - - .dw 0 + 185 D2:09FC - - - - posY: + 186 D2:09FC 00 00 - - .dw 0 + 187 D2:09FE - - - - posZ: + 188 D2:09FE 00 00 - - .dw 0 + 189 D2:0A00 - - - - Temp: + 190 D2:0A00 00 00 00 00 + 00 00 - - .dl 0,0 + 191 D2:0A06 - - - - + 192 D2:0A06 - - - - VertexName: + 193 D2:0A06 15 53 55 5A + 41 4E 30 00 .db AppVarObj, "SUZAN0",0 + 194 D2:0A0E - - - - Vertex: + 195 D2:0A0E 00 00 00 - .dl 0 + 196 D2:0A11 - - - - TriangleName: + 197 D2:0A11 15 53 55 5A + 41 4E 31 00 .db AppVarObj, "SUZAN1", 0 + 198 D2:0A19 - - - - Triangle: + 199 D2:0A19 00 00 00 - .dl 0 + 200 D2:0A1C - - - - + 201 D2:0A1C - - - - ScaleMatrix: + 202 D2:0A1C 4D 00 00 - .db 77,0,0 ; 44 + 203 D2:0A1F 00 66 00 - .db 0,102,0 ; 58 + 204 D2:0A22 00 00 40 - .db 0,0,64 ; 37 + 205 D2:0A25 - - - - UnitVector: + 206 D2:0A25 00 00 00 00 + 40 00 00 00 + 00 - - - .dl 0,16384,0 + 207 D2:0A2E - - - - Quaternion: + 208 D2:0A2E 00 00 00 00 + 00 00 00 00 + 00 00 00 00 .dl 0,0,0,0 + 209 D2:0A3A - - - - QuatMatrix: + 210 D2:0A3A 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 - - .dl 0,0,0,0,0,0 + 211 D2:0A4C - - - - WorldMatrix: + 212 D2:0A4C 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 00 00 + 00 00 - - .dl 0,0,0,0,0,0 + 213 D2:0A5E - - - - ModelMatrix: + 214 D2:0A5E 40 00 00 - .db 64,0,0 + 215 D2:0A61 00 40 00 - .db 0,64,0 + 216 D2:0A64 00 00 40 - .db 0,0,64 + 217 D2:0A67 00 00 00 00 + 00 00 - - .dw 0,0,0 + 218 D2:0A6D - - - - EulerAngle: + 219 D2:0A6D 00 00 00 00 + 00 00 00 00 + 00 - - - .dl 0,0,0 diff --git a/build_example.bat b/build_example.bat index 31ca7ba..116ffa8 100644 --- a/build_example.bat +++ b/build_example.bat @@ -1,6 +1,11 @@ @echo off color 0F :Loop +echo ----------------------------------- +echo Building example.ez80... tools\spasm -L -T -E -A -S -I include/ example.ez80 bin/TEST.8xp +echo ----------------------------------- +echo Building example1.ez80... +tools\spasm -L -T -E -A -S -I include/ example1.ez80 bin/TEST1.8xp pause goto Loop diff --git a/build_model.bat b/build_model.bat index fbf4cfc..d18b168 100644 --- a/build_model.bat +++ b/build_model.bat @@ -2,10 +2,15 @@ color 0F :Loop +echo Converting TONYBOSS_TR2.obj... tools\mdlconv file\TONYBOSS_TR2.obj -T -N -S -B tools\spasm file\TONYBOSS_TR20.inc bin\TONY0.8xv -E -S tools\spasm file\TONYBOSS_TR21.inc bin\TONY1.8xv -E -S -pause + +echo "Converting Suzanne.obj..." +tools\mdlconv file\Suzanne.obj -C -N -S -B +tools\spasm file\Suzanne0.inc bin\SUZAN0.8xv -E -S +tools\spasm file\Suzanne1.inc bin\SUZAN1.8xv -E -S tools\xmlconv pause \ No newline at end of file diff --git a/example1.ez80 b/example1.ez80 new file mode 100644 index 0000000..f1cf092 --- /dev/null +++ b/example1.ez80 @@ -0,0 +1,219 @@ +#include "vx3D.inc" + +#define DELTA 4096 + +.org userMem - 2 +.db tExtTok, tAsm84CeCmp +.assume ADL=1 + +; init the virtual 3d library + call vxEngineInit + ret c ; qui if error at init + + ld hl, VertexName + call vxFindFile + ret c + ld (Vertex), hl + + ld hl, TriangleName + call vxFindFile + ret c + ld (Triangle), hl + + +; setup global variable for rendering, euler angle and the translation of WorldMatrix + + ld hl, 0 + ld (EulerAngle), hl + + ld ix, WorldMatrix + lea hl, ix+0 + call vxMatrixLoadIdentity + ld hl, 65536 + ld (ix+15), hl ; Z translation of the matrix + +MainLoop: + + call vxTimerStart + + ld hl, (EulerAngle) + ld iy, Quaternion + ld ix, UnitVector + call vxQuaternionRotationAxis + ld ix, WorldMatrix + call vxQuaternionGetMatrix + lea iy, ix+0 + ld ix, ScaleMatrix + ld hl, WorldMatrix + call vxMatrixMlt + + ld a, VX_GEOMETRY_CI9 + ld ix, WorldMatrix + ld iy, ModelMatrix + ld bc, VX_VERTEX_BUFFER + ld hl, (Vertex) + ld de, (Triangle) + call vxCmdDraw + + ld hl, (vxGeometrySize) + ld (triangle_count), hl + + call vxCmdDepthSort + + ld c, %00000000 + call vxClearBuffer + call vxCmdExecute + +; timer & counter + + ld bc, 320*8-1 + ld de, (vxFramebuffer) + or a, a + sbc hl, hl + add hl, de + inc de + ld (hl), 0 + ldir + + ld hl, 0 + ld (TextXPos_SMC), hl + ld a, 0 + ld (TextYPos_SMC), a + + call vxTimerRead +; do (ade/256)/187 + ld (Temp), de + ld (Temp+3), a + ld de, (Temp+1) +; divide de by 187 + ex de, hl + ld bc, 187 + call __idivs_ASM + ld de, 4 + push de + push hl + call _PrintUInt + pop de + pop hl + + ld hl, (TextXPos_SMC) + ld de, 8 + add hl, de + ld (TextXPos_SMC), hl + +triangle_count=$+1 + ld hl, 0 + ld de, 4 + push de + push hl + call _PrintUInt + pop de + pop hl + + call vxFlushLCD + +KeyboardTest: + ld hl,$F50000 + ld (hl),2 + xor a,a +kwait: + cp a,(hl) + jr nz,kwait + + ld de, 8 + ld a, ($F5001E) + bit 1, a + jr z, _kskip + ld hl, (EulerAngle) + add hl, de + ld (EulerAngle), hl +_kskip: + ld de, -8 + ld a, ($F5001E) + bit 2, a + jr z, _kskip2 + ld hl, (EulerAngle) + add hl, de + ld (EulerAngle), hl +_kskip2: + ld a, ($F5001E) + bit 0, a + jr z, _kskip5 + ld hl, (WorldMatrix+12) + ld de, DELTA + add hl, de + ld (WorldMatrix+12), hl +_kskip5: + + ld a, ($F5001E) + bit 3, a + jr z, _kskip6 + ld hl, (WorldMatrix+12) + ld de, -DELTA + add hl, de + ld (WorldMatrix+12), hl +_kskip6: + + ld hl, (WorldMatrix+15) + + ld a, ($F50012) + bit 0,a + jr z, _kskip3 + ld de, DELTA + add hl, de +_kskip3: + + bit 4,a + jr z, _kskip4 + ld de, -DELTA + add hl, de +_kskip4: + + ld (WorldMatrix+15), hl + + ld a,($F5001C) + bit 6,a + + jp z, MainLoop + ret + +#include "vxMain.ez80" +#include "graphics_lib.asm" + +posX: + .dw 0 +posY: + .dw 0 +posZ: + .dw 0 +Temp: + .dl 0,0 + +VertexName: + .db AppVarObj, "SUZAN0",0 +Vertex: + .dl 0 +TriangleName: + .db AppVarObj, "SUZAN1", 0 +Triangle: + .dl 0 + +ScaleMatrix: + .db 77,0,0 ; 44 + .db 0,102,0 ; 58 + .db 0,0,64 ; 37 +UnitVector: + .dl 0,16384,0 +Quaternion: + .dl 0,0,0,0 +QuatMatrix: + .dl 0,0,0,0,0,0 +WorldMatrix: + .dl 0,0,0,0,0,0 +ModelMatrix: + .db 64,0,0 + .db 0,64,0 + .db 0,0,64 + .dw 0,0,0 +EulerAngle: + .dl 0,0,0 \ No newline at end of file diff --git a/file/Suzanne.mtl b/file/Suzanne.mtl new file mode 100644 index 0000000..3f259b6 --- /dev/null +++ b/file/Suzanne.mtl @@ -0,0 +1,22 @@ +# Blender MTL File: 'None' +# Material Count: 2 + +newmtl Material.001 +Ns 96.078431 +Ka 1.000000 1.000000 1.000000 +Kd 0.640000 0.000000 0.000000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 2 + +newmtl Material.002 +Ns 96.078431 +Ka 1.000000 1.000000 1.000000 +Kd 0.006859 0.640000 0.000000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 2 diff --git a/file/Suzanne.obj b/file/Suzanne.obj new file mode 100644 index 0000000..b9e569f --- /dev/null +++ b/file/Suzanne.obj @@ -0,0 +1,2423 @@ +# Blender v2.77 (sub 0) OBJ File: '' +# www.blender.org +mtllib Suzanne.mtl +o Suzanne +v 0.437500 0.164062 0.765625 +v -0.437500 0.164062 0.765625 +v 0.500000 0.093750 0.687500 +v -0.500000 0.093750 0.687500 +v 0.546875 0.054688 0.578125 +v -0.546875 0.054688 0.578125 +v 0.351562 -0.023438 0.617188 +v -0.351562 -0.023438 0.617188 +v 0.351562 0.031250 0.718750 +v -0.351562 0.031250 0.718750 +v 0.351562 0.132812 0.781250 +v -0.351562 0.132812 0.781250 +v 0.273438 0.164062 0.796875 +v -0.273438 0.164062 0.796875 +v 0.203125 0.093750 0.742188 +v -0.203125 0.093750 0.742188 +v 0.156250 0.054688 0.648438 +v -0.156250 0.054688 0.648438 +v 0.078125 0.242188 0.656250 +v -0.078125 0.242188 0.656250 +v 0.140625 0.242188 0.742188 +v -0.140625 0.242188 0.742188 +v 0.242188 0.242188 0.796875 +v -0.242188 0.242188 0.796875 +v 0.273438 0.328125 0.796875 +v -0.273438 0.328125 0.796875 +v 0.203125 0.390625 0.742188 +v -0.203125 0.390625 0.742188 +v 0.156250 0.437500 0.648438 +v -0.156250 0.437500 0.648438 +v 0.351562 0.515625 0.617188 +v -0.351562 0.515625 0.617188 +v 0.351562 0.453125 0.718750 +v -0.351562 0.453125 0.718750 +v 0.351562 0.359375 0.781250 +v -0.351562 0.359375 0.781250 +v 0.437500 0.328125 0.765625 +v -0.437500 0.328125 0.765625 +v 0.500000 0.390625 0.687500 +v -0.500000 0.390625 0.687500 +v 0.546875 0.437500 0.578125 +v -0.546875 0.437500 0.578125 +v 0.625000 0.242188 0.562500 +v -0.625000 0.242188 0.562500 +v 0.562500 0.242188 0.671875 +v -0.562500 0.242188 0.671875 +v 0.468750 0.242188 0.757812 +v -0.468750 0.242188 0.757812 +v 0.476562 0.242188 0.773438 +v -0.476562 0.242188 0.773438 +v 0.445312 0.335938 0.781250 +v -0.445312 0.335938 0.781250 +v 0.351562 0.375000 0.804688 +v -0.351562 0.375000 0.804688 +v 0.265625 0.335938 0.820312 +v -0.265625 0.335938 0.820312 +v 0.226562 0.242188 0.820312 +v -0.226562 0.242188 0.820312 +v 0.265625 0.156250 0.820312 +v -0.265625 0.156250 0.820312 +v 0.351562 0.242188 0.828125 +v -0.351562 0.242188 0.828125 +v 0.351562 0.117188 0.804688 +v -0.351562 0.117188 0.804688 +v 0.445312 0.156250 0.781250 +v -0.445312 0.156250 0.781250 +v 0.000000 0.429688 0.742188 +v 0.000000 0.351562 0.820312 +v 0.000000 -0.679688 0.734375 +v 0.000000 -0.320312 0.781250 +v 0.000000 -0.187500 0.796875 +v 0.000000 -0.773438 0.718750 +v 0.000000 0.406250 0.601562 +v 0.000000 0.570312 0.570312 +v 0.000000 0.898438 -0.546875 +v 0.000000 0.562500 -0.851562 +v 0.000000 0.070312 -0.828125 +v 0.000000 -0.382812 -0.351562 +v 0.203125 -0.187500 0.562500 +v -0.203125 -0.187500 0.562500 +v 0.312500 -0.437500 0.570312 +v -0.312500 -0.437500 0.570312 +v 0.351562 -0.695312 0.570312 +v -0.351562 -0.695312 0.570312 +v 0.367188 -0.890625 0.531250 +v -0.367188 -0.890625 0.531250 +v 0.328125 -0.945312 0.523438 +v -0.328125 -0.945312 0.523438 +v 0.179688 -0.968750 0.554688 +v -0.179688 -0.968750 0.554688 +v 0.000000 -0.984375 0.578125 +v 0.437500 -0.140625 0.531250 +v -0.437500 -0.140625 0.531250 +v 0.632812 -0.039062 0.539062 +v -0.632812 -0.039062 0.539062 +v 0.828125 0.148438 0.445312 +v -0.828125 0.148438 0.445312 +v 0.859375 0.429688 0.593750 +v -0.859375 0.429688 0.593750 +v 0.710938 0.484375 0.625000 +v -0.710938 0.484375 0.625000 +v 0.492188 0.601562 0.687500 +v -0.492188 0.601562 0.687500 +v 0.320312 0.757812 0.734375 +v -0.320312 0.757812 0.734375 +v 0.156250 0.718750 0.757812 +v -0.156250 0.718750 0.757812 +v 0.062500 0.492188 0.750000 +v -0.062500 0.492188 0.750000 +v 0.164062 0.414062 0.773438 +v -0.164062 0.414062 0.773438 +v 0.125000 0.304688 0.765625 +v -0.125000 0.304688 0.765625 +v 0.203125 0.093750 0.742188 +v -0.203125 0.093750 0.742188 +v 0.375000 0.015625 0.703125 +v -0.375000 0.015625 0.703125 +v 0.492188 0.062500 0.671875 +v -0.492188 0.062500 0.671875 +v 0.625000 0.187500 0.648438 +v -0.625000 0.187500 0.648438 +v 0.640625 0.296875 0.648438 +v -0.640625 0.296875 0.648438 +v 0.601562 0.375000 0.664062 +v -0.601562 0.375000 0.664062 +v 0.429688 0.437500 0.718750 +v -0.429688 0.437500 0.718750 +v 0.250000 0.468750 0.757812 +v -0.250000 0.468750 0.757812 +v 0.000000 -0.765625 0.734375 +v 0.109375 -0.718750 0.734375 +v -0.109375 -0.718750 0.734375 +v 0.117188 -0.835938 0.710938 +v -0.117188 -0.835938 0.710938 +v 0.062500 -0.882812 0.695312 +v -0.062500 -0.882812 0.695312 +v 0.000000 -0.890625 0.687500 +v 0.000000 -0.195312 0.750000 +v 0.000000 -0.140625 0.742188 +v 0.101562 -0.148438 0.742188 +v -0.101562 -0.148438 0.742188 +v 0.125000 -0.226562 0.750000 +v -0.125000 -0.226562 0.750000 +v 0.085938 -0.289062 0.742188 +v -0.085938 -0.289062 0.742188 +v 0.398438 -0.046875 0.671875 +v -0.398438 -0.046875 0.671875 +v 0.617188 0.054688 0.625000 +v -0.617188 0.054688 0.625000 +v 0.726562 0.203125 0.601562 +v -0.726562 0.203125 0.601562 +v 0.742188 0.375000 0.656250 +v -0.742188 0.375000 0.656250 +v 0.687500 0.414062 0.726562 +v -0.687500 0.414062 0.726562 +v 0.437500 0.546875 0.796875 +v -0.437500 0.546875 0.796875 +v 0.312500 0.640625 0.835938 +v -0.312500 0.640625 0.835938 +v 0.203125 0.617188 0.851562 +v -0.203125 0.617188 0.851562 +v 0.101562 0.429688 0.843750 +v -0.101562 0.429688 0.843750 +v 0.125000 -0.101562 0.812500 +v -0.125000 -0.101562 0.812500 +v 0.210938 -0.445312 0.710938 +v -0.210938 -0.445312 0.710938 +v 0.250000 -0.703125 0.687500 +v -0.250000 -0.703125 0.687500 +v 0.265625 -0.820312 0.664062 +v -0.265625 -0.820312 0.664062 +v 0.234375 -0.914062 0.632812 +v -0.234375 -0.914062 0.632812 +v 0.164062 -0.929688 0.632812 +v -0.164062 -0.929688 0.632812 +v 0.000000 -0.945312 0.640625 +v 0.000000 0.046875 0.726562 +v 0.000000 0.210938 0.765625 +v 0.328125 0.476562 0.742188 +v -0.328125 0.476562 0.742188 +v 0.164062 0.140625 0.750000 +v -0.164062 0.140625 0.750000 +v 0.132812 0.210938 0.757812 +v -0.132812 0.210938 0.757812 +v 0.117188 -0.687500 0.734375 +v -0.117188 -0.687500 0.734375 +v 0.078125 -0.445312 0.750000 +v -0.078125 -0.445312 0.750000 +v 0.000000 -0.445312 0.750000 +v 0.000000 -0.328125 0.742188 +v 0.093750 -0.273438 0.781250 +v -0.093750 -0.273438 0.781250 +v 0.132812 -0.226562 0.796875 +v -0.132812 -0.226562 0.796875 +v 0.109375 -0.132812 0.781250 +v -0.109375 -0.132812 0.781250 +v 0.039062 -0.125000 0.781250 +v -0.039062 -0.125000 0.781250 +v 0.000000 -0.203125 0.828125 +v 0.046875 -0.148438 0.812500 +v -0.046875 -0.148438 0.812500 +v 0.093750 -0.156250 0.812500 +v -0.093750 -0.156250 0.812500 +v 0.109375 -0.226562 0.828125 +v -0.109375 -0.226562 0.828125 +v 0.078125 -0.250000 0.804688 +v -0.078125 -0.250000 0.804688 +v 0.000000 -0.289062 0.804688 +v 0.257812 -0.312500 0.554688 +v -0.257812 -0.312500 0.554688 +v 0.164062 -0.242188 0.710938 +v -0.164062 -0.242188 0.710938 +v 0.179688 -0.312500 0.710938 +v -0.179688 -0.312500 0.710938 +v 0.234375 -0.250000 0.554688 +v -0.234375 -0.250000 0.554688 +v 0.000000 -0.875000 0.687500 +v 0.046875 -0.867188 0.687500 +v -0.046875 -0.867188 0.687500 +v 0.093750 -0.820312 0.710938 +v -0.093750 -0.820312 0.710938 +v 0.093750 -0.742188 0.726562 +v -0.093750 -0.742188 0.726562 +v 0.000000 -0.781250 0.656250 +v 0.093750 -0.750000 0.664062 +v -0.093750 -0.750000 0.664062 +v 0.093750 -0.812500 0.640625 +v -0.093750 -0.812500 0.640625 +v 0.046875 -0.851562 0.632812 +v -0.046875 -0.851562 0.632812 +v 0.000000 -0.859375 0.632812 +v 0.171875 0.218750 0.781250 +v -0.171875 0.218750 0.781250 +v 0.187500 0.156250 0.773438 +v -0.187500 0.156250 0.773438 +v 0.335938 0.429688 0.757812 +v -0.335938 0.429688 0.757812 +v 0.273438 0.421875 0.773438 +v -0.273438 0.421875 0.773438 +v 0.421875 0.398438 0.773438 +v -0.421875 0.398438 0.773438 +v 0.562500 0.351562 0.695312 +v -0.562500 0.351562 0.695312 +v 0.585938 0.289062 0.687500 +v -0.585938 0.289062 0.687500 +v 0.578125 0.195312 0.679688 +v -0.578125 0.195312 0.679688 +v 0.476562 0.101562 0.718750 +v -0.476562 0.101562 0.718750 +v 0.375000 0.062500 0.742188 +v -0.375000 0.062500 0.742188 +v 0.226562 0.109375 0.781250 +v -0.226562 0.109375 0.781250 +v 0.179688 0.296875 0.781250 +v -0.179688 0.296875 0.781250 +v 0.210938 0.375000 0.781250 +v -0.210938 0.375000 0.781250 +v 0.234375 0.359375 0.757812 +v -0.234375 0.359375 0.757812 +v 0.195312 0.296875 0.757812 +v -0.195312 0.296875 0.757812 +v 0.242188 0.125000 0.757812 +v -0.242188 0.125000 0.757812 +v 0.375000 0.085938 0.726562 +v -0.375000 0.085938 0.726562 +v 0.460938 0.117188 0.703125 +v -0.460938 0.117188 0.703125 +v 0.546875 0.210938 0.671875 +v -0.546875 0.210938 0.671875 +v 0.554688 0.281250 0.671875 +v -0.554688 0.281250 0.671875 +v 0.531250 0.335938 0.679688 +v -0.531250 0.335938 0.679688 +v 0.414062 0.390625 0.750000 +v -0.414062 0.390625 0.750000 +v 0.281250 0.398438 0.765625 +v -0.281250 0.398438 0.765625 +v 0.335938 0.406250 0.750000 +v -0.335938 0.406250 0.750000 +v 0.203125 0.171875 0.750000 +v -0.203125 0.171875 0.750000 +v 0.195312 0.226562 0.750000 +v -0.195312 0.226562 0.750000 +v 0.109375 0.460938 0.609375 +v -0.109375 0.460938 0.609375 +v 0.195312 0.664062 0.617188 +v -0.195312 0.664062 0.617188 +v 0.335938 0.687500 0.593750 +v -0.335938 0.687500 0.593750 +v 0.484375 0.554688 0.554688 +v -0.484375 0.554688 0.554688 +v 0.679688 0.453125 0.492188 +v -0.679688 0.453125 0.492188 +v 0.796875 0.406250 0.460938 +v -0.796875 0.406250 0.460938 +v 0.773438 0.164062 0.375000 +v -0.773438 0.164062 0.375000 +v 0.601562 0.000000 0.414062 +v -0.601562 0.000000 0.414062 +v 0.437500 -0.093750 0.468750 +v -0.437500 -0.093750 0.468750 +v 0.000000 0.898438 0.289062 +v 0.000000 0.984375 -0.078125 +v 0.000000 -0.195312 -0.671875 +v 0.000000 -0.460938 0.187500 +v 0.000000 -0.976562 0.460938 +v 0.000000 -0.804688 0.343750 +v 0.000000 -0.570312 0.320312 +v 0.000000 -0.484375 0.281250 +v 0.851562 0.234375 0.054688 +v -0.851562 0.234375 0.054688 +v 0.859375 0.320312 -0.046875 +v -0.859375 0.320312 -0.046875 +v 0.773438 0.265625 -0.437500 +v -0.773438 0.265625 -0.437500 +v 0.460938 0.437500 -0.703125 +v -0.460938 0.437500 -0.703125 +v 0.734375 -0.046875 0.070312 +v -0.734375 -0.046875 0.070312 +v 0.593750 -0.125000 -0.164062 +v -0.593750 -0.125000 -0.164062 +v 0.640625 -0.007812 -0.429688 +v -0.640625 -0.007812 -0.429688 +v 0.335938 0.054688 -0.664062 +v -0.335938 0.054688 -0.664062 +v 0.234375 -0.351562 0.406250 +v -0.234375 -0.351562 0.406250 +v 0.179688 -0.414062 0.257812 +v -0.179688 -0.414062 0.257812 +v 0.289062 -0.710938 0.382812 +v -0.289062 -0.710938 0.382812 +v 0.250000 -0.500000 0.390625 +v -0.250000 -0.500000 0.390625 +v 0.328125 -0.914062 0.398438 +v -0.328125 -0.914062 0.398438 +v 0.140625 -0.757812 0.367188 +v -0.140625 -0.757812 0.367188 +v 0.125000 -0.539062 0.359375 +v -0.125000 -0.539062 0.359375 +v 0.164062 -0.945312 0.437500 +v -0.164062 -0.945312 0.437500 +v 0.218750 -0.281250 0.429688 +v -0.218750 -0.281250 0.429688 +v 0.210938 -0.226562 0.468750 +v -0.210938 -0.226562 0.468750 +v 0.203125 -0.171875 0.500000 +v -0.203125 -0.171875 0.500000 +v 0.210938 -0.390625 0.164062 +v -0.210938 -0.390625 0.164062 +v 0.296875 -0.312500 -0.265625 +v -0.296875 -0.312500 -0.265625 +v 0.343750 -0.148438 -0.539062 +v -0.343750 -0.148438 -0.539062 +v 0.453125 0.867188 -0.382812 +v -0.453125 0.867188 -0.382812 +v 0.453125 0.929688 -0.070312 +v -0.453125 0.929688 -0.070312 +v 0.453125 0.851562 0.234375 +v -0.453125 0.851562 0.234375 +v 0.460938 0.523438 0.429688 +v -0.460938 0.523438 0.429688 +v 0.726562 0.406250 0.335938 +v -0.726562 0.406250 0.335938 +v 0.632812 0.453125 0.281250 +v -0.632812 0.453125 0.281250 +v 0.640625 0.703125 0.054688 +v -0.640625 0.703125 0.054688 +v 0.796875 0.562500 0.125000 +v -0.796875 0.562500 0.125000 +v 0.796875 0.617188 -0.117188 +v -0.796875 0.617188 -0.117188 +v 0.640625 0.750000 -0.195312 +v -0.640625 0.750000 -0.195312 +v 0.640625 0.679688 -0.445312 +v -0.640625 0.679688 -0.445312 +v 0.796875 0.539062 -0.359375 +v -0.796875 0.539062 -0.359375 +v 0.617188 0.328125 -0.585938 +v -0.617188 0.328125 -0.585938 +v 0.484375 0.023438 -0.546875 +v -0.484375 0.023438 -0.546875 +v 0.820312 0.328125 -0.203125 +v -0.820312 0.328125 -0.203125 +v 0.406250 -0.171875 0.148438 +v -0.406250 -0.171875 0.148438 +v 0.429688 -0.195312 -0.210938 +v -0.429688 -0.195312 -0.210938 +v 0.890625 0.406250 -0.234375 +v -0.890625 0.406250 -0.234375 +v 0.773438 -0.140625 -0.125000 +v -0.773438 -0.140625 -0.125000 +v 1.039062 -0.101562 -0.328125 +v -1.039062 -0.101562 -0.328125 +v 1.281250 0.054688 -0.429688 +v -1.281250 0.054688 -0.429688 +v 1.351562 0.320312 -0.421875 +v -1.351562 0.320312 -0.421875 +v 1.234375 0.507812 -0.421875 +v -1.234375 0.507812 -0.421875 +v 1.023438 0.476562 -0.312500 +v -1.023438 0.476562 -0.312500 +v 1.015625 0.414062 -0.289062 +v -1.015625 0.414062 -0.289062 +v 1.187500 0.437500 -0.390625 +v -1.187500 0.437500 -0.390625 +v 1.265625 0.289062 -0.406250 +v -1.265625 0.289062 -0.406250 +v 1.210938 0.078125 -0.406250 +v -1.210938 0.078125 -0.406250 +v 1.031250 -0.039062 -0.304688 +v -1.031250 -0.039062 -0.304688 +v 0.828125 -0.070312 -0.132812 +v -0.828125 -0.070312 -0.132812 +v 0.921875 0.359375 -0.218750 +v -0.921875 0.359375 -0.218750 +v 0.945312 0.304688 -0.289062 +v -0.945312 0.304688 -0.289062 +v 0.882812 -0.023438 -0.210938 +v -0.882812 -0.023438 -0.210938 +v 1.039062 0.000000 -0.367188 +v -1.039062 0.000000 -0.367188 +v 1.187500 0.093750 -0.445312 +v -1.187500 0.093750 -0.445312 +v 1.234375 0.250000 -0.445312 +v -1.234375 0.250000 -0.445312 +v 1.171875 0.359375 -0.437500 +v -1.171875 0.359375 -0.437500 +v 1.023438 0.343750 -0.359375 +v -1.023438 0.343750 -0.359375 +v 0.843750 0.289062 -0.210938 +v -0.843750 0.289062 -0.210938 +v 0.835938 0.171875 -0.273438 +v -0.835938 0.171875 -0.273438 +v 0.757812 0.093750 -0.273438 +v -0.757812 0.093750 -0.273438 +v 0.820312 0.085938 -0.273438 +v -0.820312 0.085938 -0.273438 +v 0.843750 0.015625 -0.273438 +v -0.843750 0.015625 -0.273438 +v 0.812500 -0.015625 -0.273438 +v -0.812500 -0.015625 -0.273438 +v 0.726562 0.000000 -0.070312 +v -0.726562 0.000000 -0.070312 +v 0.718750 -0.023438 -0.171875 +v -0.718750 -0.023438 -0.171875 +v 0.718750 0.039062 -0.187500 +v -0.718750 0.039062 -0.187500 +v 0.796875 0.203125 -0.210938 +v -0.796875 0.203125 -0.210938 +v 0.890625 0.242188 -0.265625 +v -0.890625 0.242188 -0.265625 +v 0.890625 0.234375 -0.320312 +v -0.890625 0.234375 -0.320312 +v 0.812500 -0.015625 -0.320312 +v -0.812500 -0.015625 -0.320312 +v 0.851562 0.015625 -0.320312 +v -0.851562 0.015625 -0.320312 +v 0.828125 0.078125 -0.320312 +v -0.828125 0.078125 -0.320312 +v 0.765625 0.093750 -0.320312 +v -0.765625 0.093750 -0.320312 +v 0.843750 0.171875 -0.320312 +v -0.843750 0.171875 -0.320312 +v 1.039062 0.328125 -0.414062 +v -1.039062 0.328125 -0.414062 +v 1.187500 0.343750 -0.484375 +v -1.187500 0.343750 -0.484375 +v 1.257812 0.242188 -0.492188 +v -1.257812 0.242188 -0.492188 +v 1.210938 0.085938 -0.484375 +v -1.210938 0.085938 -0.484375 +v 1.046875 0.000000 -0.421875 +v -1.046875 0.000000 -0.421875 +v 0.882812 -0.015625 -0.265625 +v -0.882812 -0.015625 -0.265625 +v 0.953125 0.289062 -0.343750 +v -0.953125 0.289062 -0.343750 +v 0.890625 0.109375 -0.328125 +v -0.890625 0.109375 -0.328125 +v 0.937500 0.062500 -0.335938 +v -0.937500 0.062500 -0.335938 +v 1.000000 0.125000 -0.367188 +v -1.000000 0.125000 -0.367188 +v 0.960938 0.171875 -0.351562 +v -0.960938 0.171875 -0.351562 +v 1.015625 0.234375 -0.375000 +v -1.015625 0.234375 -0.375000 +v 1.054688 0.187500 -0.382812 +v -1.054688 0.187500 -0.382812 +v 1.109375 0.210938 -0.390625 +v -1.109375 0.210938 -0.390625 +v 1.085938 0.273438 -0.390625 +v -1.085938 0.273438 -0.390625 +v 1.023438 0.437500 -0.484375 +v -1.023438 0.437500 -0.484375 +v 1.250000 0.468750 -0.546875 +v -1.250000 0.468750 -0.546875 +v 1.367188 0.296875 -0.500000 +v -1.367188 0.296875 -0.500000 +v 1.312500 0.054688 -0.531250 +v -1.312500 0.054688 -0.531250 +v 1.039062 -0.085938 -0.492188 +v -1.039062 -0.085938 -0.492188 +v 0.789062 -0.125000 -0.328125 +v -0.789062 -0.125000 -0.328125 +v 0.859375 0.382812 -0.382812 +v -0.859375 0.382812 -0.382812 +vn -0.6617 -0.2026 0.7219 +vn -0.8268 -0.3051 0.4725 +vn -0.4076 -0.7905 0.4570 +vn -0.3791 -0.5163 0.7679 +vn 0.0859 -0.5222 0.8485 +vn 0.2664 -0.8487 0.4570 +vn -0.7824 -0.3294 0.5285 +vn 0.7606 -0.3400 0.5531 +vn 0.4706 -0.1981 0.8598 +vn 0.4649 0.1958 0.8634 +vn -0.7656 0.3223 0.5568 +vn 0.7683 0.3293 0.5488 +vn -0.2560 0.8073 0.5317 +vn 0.2487 0.8249 0.5076 +vn 0.1017 0.5518 0.8277 +vn -0.3861 0.5446 0.7445 +vn 0.4246 0.7711 0.4745 +vn -0.4059 0.7641 0.5014 +vn -0.8299 0.2940 0.4742 +vn -0.6617 0.2026 0.7219 +vn -0.7816 0.3058 -0.5437 +vn -0.2037 0.8146 -0.5431 +vn 0.4381 0.7988 -0.4123 +vn 0.7861 0.3276 -0.5241 +vn 0.7782 -0.3537 -0.5188 +vn 0.4381 -0.7988 -0.4123 +vn -0.2037 -0.8146 -0.5431 +vn -0.7683 -0.3293 -0.5488 +vn -0.4000 -0.0623 0.9144 +vn -0.3069 -0.1754 0.9354 +vn -0.0945 -0.1835 0.9785 +vn 0.0624 -0.0283 0.9977 +vn 0.0624 0.0260 0.9977 +vn -0.0996 0.1729 0.9799 +vn -0.3036 0.1656 0.9383 +vn -0.4002 0.0572 0.9147 +vn -0.1054 -0.8433 0.5270 +vn -0.1916 -0.8620 0.4693 +vn -0.5788 -0.5049 0.6404 +vn -0.7763 -0.0633 0.6272 +vn -0.7471 0.1132 0.6550 +vn -0.3747 -0.8345 0.4040 +vn -0.4177 -0.5751 0.7034 +vn -0.6947 -0.4197 0.5841 +vn -0.5537 -0.2978 0.7777 +vn -0.8227 0.3606 0.4395 +vn -0.5041 0.6448 0.5745 +vn -0.5977 0.5565 0.5771 +vn 0.0371 0.6685 0.7428 +vn 0.7386 0.3768 0.5590 +vn 0.5774 0.5774 0.5774 +vn -0.5364 -0.3230 0.7797 +vn -0.2226 -0.4694 0.8545 +vn 0.1073 -0.5010 0.8588 +vn 0.0770 -0.5759 0.8139 +vn -0.0279 -0.8645 0.5019 +vn -0.1687 -0.3128 0.9347 +vn -0.4350 -0.1812 0.8820 +vn -0.3223 -0.2762 0.9054 +vn -0.4815 -0.2408 0.8427 +vn 0.1598 0.3903 0.9067 +vn -0.1854 -0.4956 0.8485 +vn -0.0585 -0.0781 0.9952 +vn -0.0585 -0.0845 0.9947 +vn -0.1008 -0.7103 0.6966 +vn -0.1322 -0.5947 0.7930 +vn -0.3143 -0.3928 0.8642 +vn -0.3288 -0.0360 0.9437 +vn -0.3233 -0.0808 0.9429 +vn 0.0000 0.0665 0.9978 +vn 0.0000 -0.0665 0.9978 +vn 0.0000 0.0000 1.0000 +vn -0.8447 -0.5335 0.0445 +vn -0.9500 0.2692 -0.1583 +vn -0.1018 0.9165 -0.3870 +vn -1.0000 0.0000 0.0000 +vn 0.6905 0.5492 0.4708 +vn -0.4319 -0.8639 0.2592 +vn -0.2873 -0.5747 0.7663 +vn 0.6326 0.5353 0.5596 +vn -0.0862 0.7759 0.6250 +vn -0.7639 0.2971 0.5729 +vn -0.3416 -0.5409 0.7686 +vn -0.0375 0.2247 0.9737 +vn 0.1304 -0.6087 0.7826 +vn 0.5059 0.0716 0.8596 +vn 0.5774 -0.5774 0.5774 +vn -0.3319 0.0738 0.9404 +vn -0.2815 0.0662 0.9573 +vn -0.8753 0.2059 0.4376 +vn -0.8973 0.1994 0.3938 +vn -0.8505 0.3798 0.3638 +vn -0.2524 -0.8655 0.4327 +vn 0.1296 -0.1945 0.9723 +vn 0.4472 0.0000 0.8944 +vn 0.1582 0.9494 0.2713 +vn 0.6463 0.7337 0.2096 +vn 1.0000 0.0000 0.0000 +vn -0.3051 -0.9450 0.1181 +vn -0.0217 -0.3031 0.9527 +vn -0.1353 -0.3479 0.9277 +vn 0.4681 -0.2239 0.8548 +vn 0.2710 0.0271 0.9622 +vn 0.2595 0.1038 0.9601 +vn 0.6684 -0.4595 0.5849 +vn 0.1599 -0.8797 0.4478 +vn -0.3900 -0.5895 0.7074 +vn -0.6547 -0.4589 0.6007 +vn -0.5378 -0.1144 0.8353 +vn -0.5774 0.1155 0.8083 +vn -0.5214 0.6574 0.5441 +vn -0.1796 0.7882 0.5886 +vn -0.1881 0.3387 0.9219 +vn 0.0870 0.2756 0.9573 +vn -0.3553 -0.5739 0.7379 +vn -0.3015 -0.3015 0.9045 +vn 0.0631 -0.3156 0.9468 +vn 0.2016 -0.9071 0.3696 +vn 0.3707 -0.2851 0.8839 +vn 0.4568 0.0508 0.8881 +vn 0.2797 0.5245 0.8042 +vn 0.0487 0.6815 0.7302 +vn -0.3378 0.5221 0.7831 +vn -0.4988 0.5300 0.6858 +vn -0.5425 -0.3391 0.7686 +vn -0.8305 -0.0615 0.5536 +vn -0.7814 0.1116 0.6140 +vn 0.4338 0.8888 -0.1481 +vn 0.8515 0.3744 -0.3670 +vn 0.2197 0.8626 -0.4557 +vn -0.5914 0.7489 -0.2991 +vn -0.3653 0.8833 -0.2938 +vn -0.2901 0.9141 -0.2833 +vn -0.7964 0.1323 -0.5901 +vn -0.5108 -0.6649 -0.5450 +vn -0.3695 -0.8566 -0.3601 +vn -0.1649 -0.6644 -0.7289 +vn -0.3011 -0.0125 -0.9535 +vn -0.2562 -0.3112 -0.9152 +vn -0.1533 -0.9649 -0.2134 +vn -0.1260 -0.9624 -0.2406 +vn -0.9396 0.1573 -0.3041 +vn -0.9278 0.1838 -0.3246 +vn -0.2192 0.0766 -0.9727 +vn 0.1497 -0.3635 -0.9195 +vn -0.3706 -0.6780 -0.6349 +vn -0.9202 0.1355 -0.3672 +vn -0.9457 0.2673 -0.1850 +vn -0.9337 0.2813 -0.2215 +vn -0.9501 0.2455 -0.1922 +vn -0.1835 -0.7864 -0.5898 +vn -0.3727 -0.4759 -0.7966 +vn -0.3263 -0.8342 -0.4446 +vn -0.2995 -0.9442 -0.1368 +vn -0.3287 -0.9163 -0.2291 +vn -0.8642 -0.4737 0.1696 +vn -0.9166 -0.3740 0.1414 +vn -0.4189 -0.2265 -0.8793 +vn -0.1119 0.9626 0.2468 +vn -0.1320 0.9750 -0.1788 +vn -0.3878 0.6192 -0.6828 +vn -0.4951 0.8618 -0.1100 +vn -0.2561 0.6447 0.7202 +vn -0.5966 0.7888 0.1479 +vn -0.7125 0.6755 -0.1900 +vn -0.6304 0.2517 -0.7343 +vn -0.6823 0.2318 -0.6933 +vn -0.6574 0.7254 -0.2040 +vn -0.7289 0.6729 0.1262 +vn -0.7791 0.4074 0.4764 +vn -0.3238 0.9434 -0.0720 +vn -0.1548 0.5080 0.8473 +vn 0.1681 0.1005 -0.9806 +vn -0.2925 0.5674 0.7697 +vn 0.1616 0.1847 0.9694 +vn -0.9340 0.2255 0.2773 +vn -0.9276 0.0762 0.3657 +vn -0.9750 0.2169 0.0490 +vn -0.9956 0.0893 -0.0288 +vn -0.6374 -0.7651 0.0915 +vn -0.3720 -0.9244 0.0845 +vn -0.3986 -0.8754 0.2734 +vn -0.6328 -0.7642 0.1247 +vn -0.7325 -0.6368 0.2407 +vn -0.2637 -0.4499 0.8533 +vn -0.5236 -0.3290 -0.7859 +vn -0.5396 -0.3343 -0.7727 +vn -0.2144 -0.8341 -0.5082 +vn -0.7365 -0.6154 -0.2808 +vn -0.4972 -0.4408 -0.7473 +vn -0.3244 0.4867 0.8111 +vn -0.4467 0.0975 0.8894 +vn -0.1817 -0.0079 0.9833 +vn -0.2925 -0.0758 0.9533 +vn -0.5847 -0.2198 0.7809 +vn -0.5957 -0.3850 0.7049 +vn -0.4843 0.5580 0.6738 +vn 0.2675 0.8318 0.4864 +vn 0.7885 0.2366 0.5677 +vn 0.5242 -0.3548 0.7742 +vn -0.4390 -0.5252 0.7290 +vn -0.7104 -0.4567 0.5356 +vn -0.6302 -0.7658 0.1282 +vn 0.2175 0.2733 0.9370 +vn -0.9042 -0.3578 -0.2332 +vn -0.0400 0.3399 0.9396 +vn -0.2734 0.9064 0.3221 +vn -0.7177 0.1689 0.6755 +vn -0.9008 -0.4075 0.1501 +vn -0.5815 -0.5217 0.6243 +vn -0.6138 -0.2571 0.7465 +vn -0.8271 0.5323 -0.1802 +vn -0.8717 -0.4446 -0.2063 +vn -0.9972 -0.0181 -0.0725 +vn -0.6895 -0.6644 0.2883 +vn -0.7930 -0.5947 0.1322 +vn -0.7022 -0.7022 0.1170 +vn -0.2408 0.9631 -0.1204 +vn -0.9251 0.3469 0.1542 +vn -0.6213 -0.7767 0.1036 +vn 0.0000 1.0000 0.0000 +vn -0.6197 -0.6899 0.3742 +vn -0.2752 -0.8808 0.3853 +vn 0.7929 -0.5252 -0.3089 +vn 0.8538 0.2328 -0.4657 +vn 0.5433 0.6985 -0.4657 +vn 0.1096 0.9939 -0.0157 +vn -0.1738 0.0097 0.9847 +vn -0.4134 0.0413 0.9096 +vn -0.3009 0.0926 0.9491 +vn -0.1220 0.0458 0.9915 +vn 0.0099 0.3867 0.9221 +vn -0.4244 -0.0320 0.9049 +vn -0.2570 0.0723 0.9637 +vn 0.2981 0.7454 0.5963 +vn -0.6693 0.1802 0.7208 +vn -0.4723 -0.1986 0.8588 +vn -0.2975 -0.4062 0.8640 +vn -0.5002 0.2833 0.8182 +vn -0.2980 0.5802 0.7580 +vn -0.0929 -0.9912 -0.0944 +vn -0.4688 -0.8715 0.1442 +vn -0.9264 -0.2460 0.2851 +vn -0.8267 0.5627 -0.0035 +vn 0.2146 0.9243 -0.3157 +vn 0.4196 0.8851 -0.2012 +vn 0.5470 -0.0144 -0.8370 +vn 0.1466 0.0104 -0.9891 +vn -0.4046 0.0266 -0.9141 +vn 0.7330 0.6786 0.0472 +vn -0.4200 -0.2291 -0.8781 +vn 0.0687 -0.9943 -0.0818 +vn -0.6713 -0.1971 0.7145 +vn -0.8326 -0.3017 0.4646 +vn -0.4258 -0.7967 0.4290 +vn -0.3265 -0.4954 0.8050 +vn 0.0649 -0.5714 0.8181 +vn 0.2738 -0.8315 0.4834 +vn -0.7606 -0.3400 0.5531 +vn 0.7824 -0.3294 0.5285 +vn 0.4658 -0.1863 0.8651 +vn 0.4983 0.1812 0.8478 +vn -0.7683 0.3293 0.5488 +vn 0.7656 0.3223 0.5568 +vn -0.2487 0.8249 0.5076 +vn 0.2560 0.8073 0.5317 +vn 0.0821 0.6023 0.7940 +vn -0.3329 0.5231 0.7846 +vn 0.4059 0.7641 0.5014 +vn -0.4246 0.7711 0.4745 +vn -0.8251 0.2968 0.4808 +vn -0.6888 0.1868 0.7005 +vn -0.8400 0.3436 -0.4200 +vn -0.2074 0.8296 -0.5185 +vn 0.4056 0.7605 -0.5070 +vn 0.8642 0.3143 -0.3928 +vn 0.8519 -0.3408 -0.3976 +vn 0.4056 -0.7605 -0.5070 +vn -0.2074 -0.8296 -0.5185 +vn -0.8297 -0.3734 -0.4149 +vn -0.1367 -0.8748 0.4648 +vn -0.2303 -0.8656 0.4447 +vn -0.5959 -0.4256 0.6810 +vn -0.7563 -0.0299 0.6535 +vn -0.8069 0.0689 0.5866 +vn -0.2334 -0.7779 0.5834 +vn -0.3557 -0.7290 0.5848 +vn -0.6872 -0.4191 0.5934 +vn -0.7028 -0.3915 0.5939 +vn -0.3127 0.3425 0.8860 +vn -0.5091 0.6482 0.5663 +vn -0.6155 0.4924 0.6155 +vn 0.0486 0.6560 0.7532 +vn 0.7104 0.2715 0.6494 +vn 0.6013 0.5262 0.6013 +vn -0.5070 -0.6281 0.5903 +vn -0.2181 -0.4685 0.8561 +vn 0.0348 -0.5792 0.8144 +vn 0.0899 -0.7843 0.6138 +vn -0.0547 -0.1695 0.9840 +vn -0.4260 -0.0609 0.9027 +vn -0.3352 -0.1828 0.9243 +vn -0.3579 -0.3068 0.8819 +vn -0.3069 0.2113 0.9280 +vn 0.0317 -0.1899 0.9813 +vn -0.6819 -0.2915 0.6709 +vn -0.2623 -0.3498 0.8994 +vn 0.0066 -0.2316 0.9728 +vn 0.0136 -0.6507 0.7592 +vn -0.2404 -0.5476 0.8014 +vn -0.3128 -0.1662 0.9352 +vn -0.2821 -0.0164 0.9592 +vn -0.3273 -0.1432 0.9340 +vn 0.0232 0.0511 0.9984 +vn 0.0043 -0.0651 0.9979 +vn -0.7826 -0.6087 -0.1304 +vn -0.9448 0.1919 -0.2657 +vn -0.0693 0.9004 -0.4294 +vn -0.4071 -0.8956 0.1791 +vn 0.6667 0.6667 0.3333 +vn -0.1348 0.8086 0.5727 +vn -0.7532 0.2870 0.5918 +vn -0.4116 -0.8575 0.3087 +vn -0.0502 0.2343 0.9709 +vn -0.1304 -0.2609 0.9565 +vn 0.0631 -0.8206 0.5681 +vn -0.7325 0.2817 0.6198 +vn -0.5460 -0.4310 0.7184 +vn -0.3231 0.0311 0.9459 +vn -0.7357 0.3910 0.5531 +vn -0.8480 0.3180 0.4240 +vn -0.9586 0.0664 0.2767 +vn -0.1783 -0.4161 0.8917 +vn 0.1751 -0.2043 0.9631 +vn 0.1219 -0.1829 0.9755 +vn 0.1562 0.3123 0.9370 +vn 0.7238 0.6857 0.0762 +vn 0.3051 -0.9450 0.1181 +vn -0.0478 -0.2870 0.9567 +vn 0.5488 -0.3293 0.7683 +vn 0.4945 -0.1130 0.8618 +vn 0.1717 -0.0090 0.9851 +vn 0.4332 -0.4874 0.7581 +vn 0.1156 -0.6359 0.7631 +vn -0.4242 -0.6211 0.6590 +vn -0.4767 -0.3557 0.8039 +vn -0.5871 -0.0839 0.8052 +vn -0.5657 0.1197 0.8159 +vn -0.4082 0.4082 0.8165 +vn -0.3358 0.3478 0.8754 +vn -0.1452 0.3774 0.9146 +vn -0.0301 0.2306 0.9726 +vn -0.2804 -0.2181 0.9348 +vn -0.2627 -0.2252 0.9382 +vn 0.3766 -0.8339 0.4035 +vn -0.0823 -0.7822 0.6175 +vn 0.3356 -0.2397 0.9110 +vn 0.2692 -0.0577 0.9614 +vn 0.0247 0.4072 0.9130 +vn 0.0213 0.5546 0.8319 +vn -0.3778 0.6342 0.6746 +vn -0.7895 -0.3158 0.5263 +vn -0.8070 -0.0807 0.5851 +vn -0.7868 0.1210 0.6052 +vn 0.6357 0.6811 -0.3633 +vn 0.8507 0.3650 -0.3783 +vn 0.2664 0.8710 -0.4127 +vn -0.5932 0.7445 -0.3063 +vn -0.3714 0.8685 -0.3284 +vn -0.2760 0.9159 -0.2915 +vn -0.8873 0.1343 -0.4412 +vn -0.5442 -0.7524 -0.3712 +vn -0.4027 -0.7323 -0.5492 +vn -0.3617 -0.3858 -0.8487 +vn -0.1952 -0.0976 -0.9759 +vn 0.0107 -0.5633 -0.8262 +vn -0.0779 -0.9948 -0.0663 +vn -0.1094 -0.9718 -0.2089 +vn -0.8150 -0.5621 -0.1405 +vn -0.9358 0.1396 -0.3236 +vn -0.1132 -0.0274 -0.9932 +vn -0.1211 -0.0530 -0.9912 +vn -0.9094 0.1371 -0.3927 +vn -0.9193 0.1393 -0.3682 +vn -0.9173 0.3440 -0.2007 +vn -0.9004 0.3642 -0.2380 +vn -0.8945 0.4337 0.1084 +vn -0.1596 -0.9577 -0.2394 +vn -0.3693 -0.4712 -0.8010 +vn -0.2986 -0.8236 -0.4821 +vn -0.2620 -0.9574 -0.1217 +vn -0.2996 -0.9443 -0.1362 +vn -0.8305 0.3333 -0.4463 +vn -0.6869 -0.6358 0.3521 +vn -0.2950 -0.0454 -0.9544 +vn -0.1272 0.9658 0.2260 +vn -0.1208 0.9734 -0.1947 +vn -0.3140 0.5711 -0.7585 +vn -0.3231 0.9288 -0.1817 +vn -0.0452 0.7955 0.6043 +vn -0.6144 0.7696 0.1738 +vn -0.6935 0.6857 -0.2212 +vn -0.7104 0.1364 -0.6904 +vn -0.3179 0.5704 -0.7574 +vn -0.6289 0.7624 -0.1525 +vn -0.7088 0.6833 0.1752 +vn -0.6885 0.3830 0.6158 +vn -0.3669 0.8840 -0.2898 +vn -0.2854 0.6237 0.7277 +vn 0.1819 0.1145 -0.9766 +vn 0.2638 0.9462 -0.1871 +vn -0.8681 0.0893 -0.4883 +vn -0.9758 0.1241 0.1800 +vn -0.9613 0.1472 -0.2330 +vn -0.9817 -0.0304 -0.1882 +vn -0.7466 -0.6646 0.0285 +vn -0.3723 -0.9243 0.0847 +vn -0.5281 -0.8354 0.1522 +vn -0.3070 -0.5237 0.7946 +vn -0.5881 -0.3070 -0.7483 +vn -0.4694 -0.2400 -0.8498 +vn -0.4463 -0.8452 -0.2941 +vn -0.6973 -0.6610 -0.2771 +vn -0.3691 0.2855 0.8844 +vn -0.4649 0.2593 0.8465 +vn -0.3188 0.1993 0.9266 +vn -0.2076 -0.0836 0.9746 +vn -0.3398 0.0824 0.9369 +vn -0.6509 -0.1939 0.7340 +vn -0.4075 0.7506 0.5201 +vn 0.2655 0.8296 0.4911 +vn 0.8576 0.2223 0.4637 +vn 0.5257 -0.3579 0.7717 +vn -0.4663 -0.5991 0.6509 +vn -0.6888 -0.4428 0.5740 +vn -0.7507 -0.6131 -0.2461 +vn 0.1788 0.2923 0.9395 +vn -0.9046 -0.3869 -0.1792 +vn -0.1782 -0.0891 0.9800 +vn 0.2335 0.8972 0.3749 +vn -0.4480 -0.4480 0.7737 +vn -0.5313 0.5844 0.6134 +vn -0.5534 -0.5534 0.6225 +vn -0.5724 -0.3122 0.7582 +vn -0.5597 -0.5533 0.6169 +vn -0.8779 -0.4788 0.0076 +vn -0.9227 -0.3765 -0.0825 +vn -0.7661 -0.6363 0.0909 +vn -0.7815 -0.6176 0.0882 +vn -0.1240 0.9921 0.0207 +vn -0.9435 0.3145 0.1048 +vn -0.7071 -0.7071 0.0000 +vn 0.0157 0.9898 0.1414 +vn -0.6266 -0.7211 0.2956 +vn -0.2714 -0.9022 0.3353 +vn 0.8651 -0.4853 -0.1266 +vn 0.8096 0.2429 -0.5343 +vn 0.5621 0.8231 -0.0803 +vn 0.0071 0.9899 0.1414 +vn -0.1046 0.0392 0.9937 +vn -0.2461 0.0852 0.9655 +vn -0.3228 -0.0461 0.9453 +vn -0.2104 0.0124 0.9775 +vn -0.5679 0.1916 0.8005 +vn -0.3787 -0.0364 0.9248 +vn -0.2530 -0.1897 0.9487 +vn -0.1351 -0.0225 0.9906 +vn 0.4870 0.6088 0.6262 +vn -0.5571 -0.1486 0.8171 +vn -0.4388 -0.2008 0.8759 +vn -0.5786 -0.1334 0.8046 +vn -0.5771 0.2164 0.7875 +vn -0.0931 -0.9932 -0.0692 +vn -0.5161 -0.8527 -0.0812 +vn -0.9309 -0.2541 0.2624 +vn -0.8465 0.5291 -0.0595 +vn 0.2511 0.9439 -0.2145 +vn 0.4841 0.8743 -0.0361 +vn 0.5256 -0.0030 -0.8507 +vn 0.2556 -0.0749 -0.9639 +vn 0.8073 0.5901 0.0041 +vn -0.6844 -0.1711 -0.7088 +vn 0.3604 -0.8283 -0.4290 +vn 0.6617 -0.2026 0.7219 +vn 0.8268 -0.3051 0.4725 +vn 0.4076 -0.7905 0.4570 +vn 0.3791 -0.5163 0.7679 +vn -0.0859 -0.5222 0.8485 +vn -0.2664 -0.8487 0.4570 +vn -0.4706 -0.1981 0.8598 +vn -0.4649 0.1958 0.8634 +vn -0.0821 0.6023 0.7940 +vn 0.3329 0.5231 0.7846 +vn 0.8251 0.2968 0.4808 +vn 0.6888 0.1868 0.7005 +vn 0.8400 0.3436 -0.4200 +vn 0.2074 0.8296 -0.5185 +vn -0.4056 0.7605 -0.5070 +vn -0.8642 0.3143 -0.3928 +vn -0.7782 -0.3537 -0.5188 +vn -0.4381 -0.7988 -0.4123 +vn 0.2037 -0.8146 -0.5431 +vn 0.7683 -0.3293 -0.5488 +vn 0.4000 -0.0623 0.9144 +vn 0.3069 -0.1754 0.9354 +vn 0.0945 -0.1835 0.9785 +vn -0.0624 -0.0283 0.9977 +vn -0.0624 0.0260 0.9977 +vn 0.0996 0.1729 0.9799 +vn 0.3036 0.1656 0.9383 +vn 0.4002 0.0572 0.9147 +vn 0.1367 -0.8748 0.4648 +vn 0.2303 -0.8656 0.4447 +vn 0.5788 -0.5049 0.6404 +vn 0.7763 -0.0633 0.6272 +vn 0.7471 0.1132 0.6550 +vn 0.3747 -0.8345 0.4040 +vn 0.3557 -0.7290 0.5848 +vn 0.6947 -0.4197 0.5841 +vn 0.7028 -0.3915 0.5939 +vn 0.3127 0.3425 0.8860 +vn 0.5091 0.6482 0.5663 +vn 0.5977 0.5565 0.5771 +vn -0.0486 0.6560 0.7532 +vn -0.7104 0.2715 0.6494 +vn -0.6013 0.5262 0.6013 +vn 0.5070 -0.6281 0.5903 +vn 0.2226 -0.4694 0.8545 +vn -0.0348 -0.5792 0.8144 +vn -0.0899 -0.7843 0.6138 +vn 0.0547 -0.1695 0.9840 +vn 0.4260 -0.0609 0.9027 +vn 0.3352 -0.1828 0.9243 +vn 0.3579 -0.3068 0.8819 +vn 0.3069 0.2113 0.9280 +vn -0.1598 0.3903 0.9067 +vn 0.6819 -0.2915 0.6709 +vn 0.0585 -0.0781 0.9952 +vn -0.0066 -0.2316 0.9728 +vn 0.1008 -0.7103 0.6966 +vn 0.1322 -0.5947 0.7930 +vn 0.3128 -0.1662 0.9352 +vn 0.3288 -0.0360 0.9437 +vn 0.3233 -0.0808 0.9429 +vn -0.0232 0.0511 0.9984 +vn -0.0043 -0.0651 0.9979 +vn 0.8447 -0.5335 0.0445 +vn 0.9500 0.2692 -0.1583 +vn 0.0693 0.9004 -0.4294 +vn 0.4071 -0.8956 0.1791 +vn 0.2873 -0.5747 0.7663 +vn -0.6326 0.5353 0.5596 +vn 0.0862 0.7759 0.6250 +vn 0.7532 0.2870 0.5918 +vn 0.3416 -0.5409 0.7686 +vn 0.0502 0.2343 0.9709 +vn -0.1304 -0.6087 0.7826 +vn -0.5059 0.0716 0.8596 +vn -0.5774 -0.5774 0.5774 +vn 0.5460 -0.4310 0.7184 +vn 0.3231 0.0311 0.9459 +vn 0.7357 0.3910 0.5531 +vn 0.8480 0.3180 0.4240 +vn 0.8505 0.3798 0.3638 +vn 0.1783 -0.4161 0.8917 +vn -0.1296 -0.1945 0.9723 +vn -0.4472 0.0000 0.8944 +vn -0.1582 0.9494 0.2713 +vn -0.6463 0.7337 0.2096 +vn 0.0217 -0.3031 0.9527 +vn 0.1353 -0.3479 0.9277 +vn -0.4681 -0.2239 0.8548 +vn -0.2710 0.0271 0.9622 +vn -0.1717 -0.0090 0.9851 +vn -0.4332 -0.4874 0.7581 +vn -0.1599 -0.8797 0.4478 +vn 0.3900 -0.5895 0.7074 +vn 0.6547 -0.4589 0.6007 +vn 0.5378 -0.1144 0.8353 +vn 0.5657 0.1197 0.8159 +vn 0.4082 0.4082 0.8165 +vn 0.1796 0.7882 0.5886 +vn 0.1881 0.3387 0.9219 +vn -0.0870 0.2756 0.9573 +vn 0.2804 -0.2181 0.9348 +vn 0.3015 -0.3015 0.9045 +vn -0.3766 -0.8339 0.4035 +vn 0.0823 -0.7822 0.6175 +vn -0.3707 -0.2851 0.8839 +vn -0.2692 -0.0577 0.9614 +vn -0.2797 0.5245 0.8042 +vn -0.0213 0.5546 0.8319 +vn 0.3778 0.6342 0.6746 +vn 0.4988 0.5300 0.6858 +vn 0.5425 -0.3391 0.7686 +vn 0.8305 -0.0615 0.5536 +vn 0.7814 0.1116 0.6140 +vn -0.4338 0.8888 -0.1481 +vn -0.8515 0.3744 -0.3670 +vn -0.2664 0.8710 -0.4127 +vn 0.5932 0.7445 -0.3063 +vn 0.3714 0.8685 -0.3284 +vn 0.2901 0.9141 -0.2833 +vn 0.8873 0.1343 -0.4412 +vn 0.5108 -0.6649 -0.5450 +vn 0.3695 -0.8566 -0.3601 +vn 0.3617 -0.3858 -0.8487 +vn 0.1952 -0.0976 -0.9759 +vn -0.0107 -0.5633 -0.8262 +vn 0.1533 -0.9649 -0.2134 +vn 0.1260 -0.9624 -0.2406 +vn 0.9396 0.1573 -0.3041 +vn 0.9278 0.1838 -0.3246 +vn 0.2192 0.0766 -0.9727 +vn 0.1211 -0.0530 -0.9912 +vn 0.9094 0.1371 -0.3927 +vn 0.9202 0.1355 -0.3672 +vn 0.9173 0.3440 -0.2007 +vn 0.9004 0.3642 -0.2380 +vn 0.8945 0.4337 0.1084 +vn 0.1596 -0.9577 -0.2394 +vn 0.3693 -0.4712 -0.8010 +vn 0.2986 -0.8236 -0.4821 +vn 0.2995 -0.9442 -0.1368 +vn 0.3287 -0.9163 -0.2291 +vn 0.8305 0.3333 -0.4463 +vn 0.9166 -0.3740 0.1414 +vn 0.2950 -0.0454 -0.9544 +vn 0.1272 0.9658 0.2260 +vn 0.1320 0.9750 -0.1788 +vn 0.3878 0.6192 -0.6828 +vn 0.4951 0.8618 -0.1100 +vn 0.2561 0.6447 0.7202 +vn 0.5966 0.7888 0.1479 +vn 0.7125 0.6755 -0.1900 +vn 0.7104 0.1364 -0.6904 +vn 0.6823 0.2318 -0.6933 +vn 0.6574 0.7254 -0.2040 +vn 0.7289 0.6729 0.1262 +vn 0.7791 0.4074 0.4764 +vn 0.3669 0.8840 -0.2898 +vn 0.2854 0.6237 0.7277 +vn -0.1681 0.1005 -0.9806 +vn 0.2925 0.5674 0.7697 +vn -0.1616 0.1847 0.9694 +vn 0.8681 0.0893 -0.4883 +vn 0.9276 0.0762 0.3657 +vn 0.9750 0.2169 0.0490 +vn 0.9817 -0.0304 -0.1882 +vn 0.7466 -0.6646 0.0285 +vn 0.3723 -0.9243 0.0847 +vn 0.3986 -0.8754 0.2734 +vn 0.6328 -0.7642 0.1247 +vn 0.7325 -0.6368 0.2407 +vn 0.2637 -0.4499 0.8533 +vn 0.5881 -0.3070 -0.7483 +vn 0.4694 -0.2400 -0.8498 +vn 0.4463 -0.8452 -0.2941 +vn 0.6973 -0.6610 -0.2771 +vn 0.4972 -0.4408 -0.7473 +vn 0.3691 0.2855 0.8844 +vn 0.4467 0.0975 0.8894 +vn 0.3188 0.1993 0.9266 +vn 0.2076 -0.0836 0.9746 +vn 0.3398 0.0824 0.9369 +vn 0.5957 -0.3850 0.7049 +vn 0.4843 0.5580 0.6738 +vn -0.2675 0.8318 0.4864 +vn -0.8576 0.2223 0.4637 +vn -0.5257 -0.3579 0.7717 +vn 0.4663 -0.5991 0.6509 +vn 0.7104 -0.4567 0.5356 +vn 0.7507 -0.6131 -0.2461 +vn -0.1788 0.2923 0.9395 +vn 0.9042 -0.3578 -0.2332 +vn 0.0400 0.3399 0.9396 +vn 0.2734 0.9064 0.3221 +vn 0.4480 -0.4480 0.7737 +vn 0.5534 -0.5534 0.6225 +vn 0.5724 -0.3122 0.7582 +vn 0.5597 -0.5533 0.6169 +vn 0.8271 0.5323 -0.1802 +vn 0.9227 -0.3765 -0.0825 +vn 0.9972 -0.0181 -0.0725 +vn 0.6895 -0.6644 0.2883 +vn 0.7815 -0.6176 0.0882 +vn 0.7022 -0.7022 0.1170 +vn 0.1240 0.9921 0.0207 +vn 0.9435 0.3145 0.1048 +vn 0.6213 -0.7767 0.1036 +vn 0.6197 -0.6899 0.3742 +vn 0.2752 -0.8808 0.3853 +vn -0.7929 -0.5252 -0.3089 +vn -0.8096 0.2429 -0.5343 +vn -0.5621 0.8231 -0.0803 +vn -0.0071 0.9899 0.1414 +vn 0.1046 0.0392 0.9937 +vn 0.2461 0.0852 0.9655 +vn 0.3009 0.0926 0.9491 +vn 0.2104 0.0124 0.9775 +vn -0.0099 0.3867 0.9221 +vn 0.3787 -0.0364 0.9248 +vn 0.2530 -0.1897 0.9487 +vn -0.4870 0.6088 0.6262 +vn 0.6693 0.1802 0.7208 +vn 0.4388 -0.2008 0.8759 +vn 0.5786 -0.1334 0.8046 +vn 0.5002 0.2833 0.8182 +vn 0.2980 0.5802 0.7580 +vn 0.0929 -0.9912 -0.0944 +vn 0.4688 -0.8715 0.1442 +vn 0.9309 -0.2541 0.2624 +vn 0.8465 0.5291 -0.0595 +vn -0.2511 0.9439 -0.2145 +vn -0.4841 0.8743 -0.0361 +vn -0.5256 -0.0030 -0.8507 +vn -0.1466 0.0104 -0.9891 +vn 0.4046 0.0266 -0.9141 +vn -0.8073 0.5901 0.0041 +vn 0.4200 -0.2291 -0.8781 +vn -0.0687 -0.9943 -0.0818 +vn 0.6713 -0.1971 0.7145 +vn 0.8326 -0.3017 0.4646 +vn 0.4258 -0.7967 0.4290 +vn 0.3265 -0.4954 0.8050 +vn -0.0649 -0.5714 0.8181 +vn -0.2738 -0.8315 0.4834 +vn -0.4658 -0.1863 0.8651 +vn -0.4983 0.1812 0.8478 +vn -0.1017 0.5518 0.8277 +vn 0.3861 0.5446 0.7445 +vn 0.8299 0.2940 0.4742 +vn 0.6617 0.2026 0.7219 +vn 0.7816 0.3058 -0.5437 +vn 0.2037 0.8146 -0.5431 +vn -0.4381 0.7988 -0.4123 +vn -0.7861 0.3276 -0.5241 +vn -0.8519 -0.3408 -0.3976 +vn -0.4056 -0.7605 -0.5070 +vn 0.2074 -0.8296 -0.5185 +vn 0.8297 -0.3734 -0.4149 +vn 0.1054 -0.8433 0.5270 +vn 0.1916 -0.8620 0.4693 +vn 0.5959 -0.4256 0.6810 +vn 0.7563 -0.0299 0.6535 +vn 0.8069 0.0689 0.5866 +vn 0.2334 -0.7779 0.5834 +vn 0.4177 -0.5751 0.7034 +vn 0.6872 -0.4191 0.5934 +vn 0.5537 -0.2978 0.7777 +vn 0.8227 0.3606 0.4395 +vn 0.5041 0.6448 0.5745 +vn 0.6155 0.4924 0.6155 +vn -0.0371 0.6685 0.7428 +vn -0.7386 0.3768 0.5590 +vn -0.5774 0.5774 0.5774 +vn 0.5364 -0.3230 0.7797 +vn 0.2181 -0.4685 0.8561 +vn -0.1073 -0.5010 0.8588 +vn -0.0770 -0.5759 0.8139 +vn 0.0279 -0.8645 0.5019 +vn 0.1687 -0.3128 0.9347 +vn 0.4350 -0.1812 0.8820 +vn 0.3223 -0.2762 0.9054 +vn 0.4815 -0.2408 0.8427 +vn -0.0317 -0.1899 0.9813 +vn 0.1854 -0.4956 0.8485 +vn 0.2623 -0.3498 0.8994 +vn 0.0585 -0.0845 0.9947 +vn -0.0136 -0.6507 0.7592 +vn 0.2404 -0.5476 0.8014 +vn 0.3143 -0.3928 0.8642 +vn 0.2821 -0.0164 0.9592 +vn 0.3273 -0.1432 0.9340 +vn 0.7826 -0.6087 -0.1304 +vn 0.9448 0.1919 -0.2657 +vn 0.1018 0.9165 -0.3870 +vn -0.6905 0.5492 0.4708 +vn 0.4319 -0.8639 0.2592 +vn -0.6667 0.6667 0.3333 +vn 0.1348 0.8086 0.5727 +vn 0.7639 0.2971 0.5729 +vn 0.4116 -0.8575 0.3087 +vn 0.0375 0.2247 0.9737 +vn 0.1304 -0.2609 0.9565 +vn -0.0631 -0.8206 0.5681 +vn 0.7325 0.2817 0.6198 +vn 0.3319 0.0738 0.9404 +vn 0.2815 0.0662 0.9573 +vn 0.8753 0.2059 0.4376 +vn 0.8973 0.1994 0.3938 +vn 0.9586 0.0664 0.2767 +vn 0.2524 -0.8655 0.4327 +vn -0.1751 -0.2043 0.9631 +vn -0.1219 -0.1829 0.9755 +vn -0.1562 0.3123 0.9370 +vn -0.7238 0.6857 0.0762 +vn 0.0478 -0.2870 0.9567 +vn -0.5488 -0.3293 0.7683 +vn -0.4945 -0.1130 0.8618 +vn -0.2595 0.1038 0.9601 +vn -0.6684 -0.4595 0.5849 +vn -0.1156 -0.6359 0.7631 +vn 0.4242 -0.6211 0.6590 +vn 0.4767 -0.3557 0.8039 +vn 0.5871 -0.0839 0.8052 +vn 0.5774 0.1155 0.8083 +vn 0.5214 0.6574 0.5441 +vn 0.3358 0.3478 0.8754 +vn 0.1452 0.3774 0.9146 +vn 0.0301 0.2306 0.9726 +vn 0.3553 -0.5739 0.7379 +vn 0.2627 -0.2252 0.9382 +vn -0.0631 -0.3156 0.9468 +vn -0.2016 -0.9071 0.3696 +vn -0.3356 -0.2397 0.9110 +vn -0.4568 0.0508 0.8881 +vn -0.0247 0.4072 0.9130 +vn -0.0487 0.6815 0.7302 +vn 0.3378 0.5221 0.7831 +vn 0.7895 -0.3158 0.5263 +vn 0.8070 -0.0807 0.5851 +vn 0.7868 0.1210 0.6052 +vn -0.6357 0.6811 -0.3633 +vn -0.8507 0.3650 -0.3783 +vn -0.2197 0.8626 -0.4557 +vn 0.5914 0.7489 -0.2991 +vn 0.3653 0.8833 -0.2938 +vn 0.2760 0.9159 -0.2915 +vn 0.7964 0.1323 -0.5901 +vn 0.5442 -0.7524 -0.3712 +vn 0.4027 -0.7323 -0.5492 +vn 0.1649 -0.6644 -0.7289 +vn 0.3011 -0.0125 -0.9535 +vn 0.2562 -0.3112 -0.9152 +vn 0.0779 -0.9948 -0.0663 +vn 0.1094 -0.9718 -0.2089 +vn 0.8150 -0.5621 -0.1405 +vn 0.9358 0.1396 -0.3236 +vn 0.1132 -0.0274 -0.9932 +vn -0.1497 -0.3635 -0.9195 +vn 0.3706 -0.6780 -0.6349 +vn 0.9193 0.1393 -0.3682 +vn 0.9457 0.2673 -0.1850 +vn 0.9337 0.2813 -0.2215 +vn 0.9501 0.2455 -0.1922 +vn 0.1835 -0.7864 -0.5898 +vn 0.3727 -0.4759 -0.7966 +vn 0.3263 -0.8342 -0.4446 +vn 0.2620 -0.9574 -0.1217 +vn 0.2996 -0.9443 -0.1362 +vn 0.8642 -0.4737 0.1696 +vn 0.6869 -0.6358 0.3521 +vn 0.4189 -0.2265 -0.8793 +vn 0.1119 0.9626 0.2468 +vn 0.1208 0.9734 -0.1947 +vn 0.3140 0.5711 -0.7585 +vn 0.3231 0.9288 -0.1817 +vn 0.0452 0.7955 0.6043 +vn 0.6144 0.7696 0.1738 +vn 0.6935 0.6857 -0.2212 +vn 0.6304 0.2517 -0.7343 +vn 0.3179 0.5704 -0.7574 +vn 0.6289 0.7624 -0.1525 +vn 0.7088 0.6833 0.1752 +vn 0.6885 0.3830 0.6158 +vn 0.3238 0.9434 -0.0720 +vn 0.1548 0.5080 0.8473 +vn -0.1819 0.1145 -0.9766 +vn -0.2638 0.9462 -0.1871 +vn 0.9340 0.2255 0.2773 +vn 0.9758 0.1241 0.1800 +vn 0.9613 0.1472 -0.2330 +vn 0.9956 0.0893 -0.0288 +vn 0.6374 -0.7651 0.0915 +vn 0.3720 -0.9244 0.0845 +vn 0.5281 -0.8354 0.1522 +vn 0.3070 -0.5237 0.7946 +vn 0.5236 -0.3290 -0.7859 +vn 0.5396 -0.3343 -0.7727 +vn 0.2144 -0.8341 -0.5082 +vn 0.7365 -0.6154 -0.2808 +vn 0.3244 0.4867 0.8111 +vn 0.4649 0.2593 0.8465 +vn 0.1817 -0.0079 0.9833 +vn 0.2925 -0.0758 0.9533 +vn 0.5847 -0.2198 0.7809 +vn 0.6509 -0.1939 0.7340 +vn 0.4075 0.7506 0.5201 +vn -0.2655 0.8296 0.4911 +vn -0.7885 0.2366 0.5677 +vn -0.5242 -0.3548 0.7742 +vn 0.4390 -0.5252 0.7290 +vn 0.6888 -0.4428 0.5740 +vn 0.6302 -0.7658 0.1282 +vn -0.2175 0.2733 0.9370 +vn 0.9046 -0.3869 -0.1792 +vn 0.1782 -0.0891 0.9800 +vn -0.2335 0.8972 0.3749 +vn 0.7177 0.1689 0.6755 +vn 0.5313 0.5844 0.6134 +vn 0.9008 -0.4075 0.1501 +vn 0.5815 -0.5217 0.6243 +vn 0.6138 -0.2571 0.7465 +vn 0.8779 -0.4788 0.0076 +vn 0.8717 -0.4446 -0.2063 +vn 0.7661 -0.6363 0.0909 +vn 0.7930 -0.5947 0.1322 +vn 0.2408 0.9631 -0.1204 +vn 0.9251 0.3469 0.1542 +vn 0.7071 -0.7071 0.0000 +vn -0.0157 0.9898 0.1414 +vn 0.6266 -0.7211 0.2956 +vn 0.2714 -0.9022 0.3353 +vn -0.8651 -0.4853 -0.1266 +vn -0.8538 0.2328 -0.4657 +vn -0.5433 0.6985 -0.4657 +vn -0.1096 0.9939 -0.0157 +vn 0.1738 0.0097 0.9847 +vn 0.4134 0.0413 0.9096 +vn 0.3228 -0.0461 0.9453 +vn 0.1220 0.0458 0.9915 +vn 0.5679 0.1916 0.8005 +vn 0.4244 -0.0320 0.9049 +vn 0.2570 0.0723 0.9637 +vn 0.1351 -0.0225 0.9906 +vn -0.2981 0.7454 0.5963 +vn 0.5571 -0.1486 0.8171 +vn 0.4723 -0.1986 0.8588 +vn 0.2975 -0.4062 0.8640 +vn 0.5771 0.2164 0.7875 +vn 0.0931 -0.9932 -0.0692 +vn 0.5161 -0.8527 -0.0812 +vn 0.9264 -0.2460 0.2851 +vn 0.8267 0.5627 -0.0035 +vn -0.2146 0.9243 -0.3157 +vn -0.4196 0.8851 -0.2012 +vn -0.5470 -0.0144 -0.8370 +vn -0.2556 -0.0749 -0.9639 +vn -0.7330 0.6786 0.0472 +vn 0.6844 -0.1711 -0.7088 +vn -0.3604 -0.8283 -0.4290 +usemtl Material.001 +s off +f 4//1 48//1 46//1 +f 6//2 46//2 44//2 +f 8//3 4//3 6//3 +f 10//4 2//4 4//4 +f 16//5 12//5 10//5 +f 18//6 10//6 8//6 +f 21//7 17//7 15//7 +f 22//8 18//8 20//8 +f 22//9 14//9 16//9 +f 28//10 24//10 22//10 +f 27//11 19//11 21//11 +f 28//12 20//12 30//12 +f 33//13 29//13 27//13 +f 34//14 30//14 32//14 +f 36//15 28//15 34//15 +f 38//16 34//16 40//16 +f 39//17 31//17 33//17 +f 40//18 32//18 42//18 +f 46//19 42//19 44//19 +f 48//20 40//20 46//20 +f 38//21 50//21 52//21 +f 36//22 52//22 54//22 +f 26//23 54//23 56//23 +f 24//24 56//24 58//24 +f 60//25 24//25 58//25 +f 64//26 14//26 60//26 +f 66//27 12//27 64//27 +f 50//28 2//28 66//28 +f 50//29 66//29 62//29 +f 62//30 66//30 64//30 +f 64//31 60//31 62//31 +f 60//32 58//32 62//32 +f 58//33 56//33 62//33 +f 56//34 54//34 62//34 +f 54//35 52//35 62//35 +f 52//36 50//36 62//36 +f 175//37 91//37 176//37 +f 173//38 90//38 175//38 +f 173//39 86//39 88//39 +f 171//40 84//40 86//40 +f 169//41 82//41 84//41 +f 147//42 80//42 165//42 +f 95//43 147//43 149//43 +f 151//44 95//44 149//44 +f 99//45 151//45 153//45 +f 101//46 153//46 155//46 +f 103//47 155//47 157//47 +f 159//48 103//48 157//48 +f 107//49 159//49 161//49 +f 109//50 161//50 163//50 +f 67//51 163//51 68//51 +f 129//52 163//52 161//52 +f 159//53 129//53 161//53 +f 157//54 180//54 159//54 +f 155//55 127//55 157//55 +f 153//56 125//56 155//56 +f 151//57 123//57 153//57 +f 149//58 121//58 151//58 +f 147//59 119//59 149//59 +f 165//60 117//60 147//60 +f 177//61 115//61 165//61 +f 163//62 113//62 68//62 +f 178//63 113//63 184//63 +f 182//64 178//64 184//64 +f 176//65 136//65 175//65 +f 175//66 134//66 173//66 +f 134//67 171//67 173//67 +f 186//68 167//68 169//68 +f 169//69 132//69 186//69 +f 190//70 188//70 189//70 +f 188//71 69//71 189//71 +f 132//72 69//72 186//72 +f 192//73 143//73 145//73 +f 194//74 141//74 143//74 +f 198//75 141//75 196//75 +f 71//76 139//76 138//76 +f 71//77 139//77 198//77 +f 145//78 70//78 192//78 +f 192//79 208//79 207//79 +f 201//80 71//80 198//80 +f 203//81 198//81 196//81 +f 203//82 194//82 205//82 +f 207//83 194//83 192//83 +f 205//84 201//84 203//84 +f 207//85 199//85 205//85 +f 165//86 139//86 177//86 +f 212//87 141//87 165//87 +f 145//88 212//88 214//88 +f 188//89 214//89 167//89 +f 210//90 167//90 214//90 +f 216//91 214//91 212//91 +f 212//92 80//92 216//92 +f 130//93 223//93 72//93 +f 223//94 134//94 221//94 +f 221//95 136//95 219//95 +f 219//72 137//72 217//72 +f 219//96 231//96 230//96 +f 228//97 219//97 230//97 +f 226//98 221//98 228//98 +f 72//99 226//99 224//99 +f 230//100 224//100 226//100 +f 228//101 230//101 226//101 +f 235//102 184//102 233//102 +f 233//103 113//103 255//103 +f 113//104 257//104 255//104 +f 115//105 235//105 253//105 +f 251//106 115//106 253//106 +f 249//107 117//107 251//107 +f 247//108 119//108 249//108 +f 245//109 121//109 247//109 +f 125//110 245//110 243//110 +f 127//111 243//111 241//111 +f 237//112 127//112 241//112 +f 239//113 180//113 237//113 +f 257//114 129//114 239//114 +f 257//115 277//115 259//115 +f 277//116 237//116 279//116 +f 237//117 275//117 279//117 +f 241//118 273//118 275//118 +f 273//119 245//119 271//119 +f 245//120 269//120 271//120 +f 269//121 249//121 267//121 +f 249//122 265//122 267//122 +f 251//123 263//123 265//123 +f 263//124 235//124 281//124 +f 261//125 257//125 259//125 +f 283//126 255//126 261//126 +f 281//127 233//127 283//127 +f 285//128 67//128 73//128 +f 287//129 109//129 285//129 +f 105//130 287//130 289//130 +f 103//131 289//131 291//131 +f 101//132 291//132 293//132 +f 295//133 101//133 293//133 +f 97//134 295//134 297//134 +f 299//135 97//135 297//135 +f 301//136 95//136 299//136 +f 309//137 339//137 329//137 +f 308//138 337//138 339//138 +f 307//139 341//139 337//139 +f 306//140 90//140 341//140 +f 341//141 88//141 335//141 +f 335//142 86//142 331//142 +f 331//143 84//143 333//143 +f 339//144 331//144 333//144 +f 335//145 337//145 341//145 +f 333//146 329//146 339//146 +f 333//147 82//147 327//147 +f 343//148 216//148 345//148 +f 327//149 210//149 343//149 +f 216//150 347//150 345//150 +f 347//151 93//151 301//151 +f 325//152 304//152 353//152 +f 353//153 78//153 351//153 +f 349//154 78//154 305//154 +f 329//155 305//155 309//155 +f 329//156 343//156 349//156 +f 319//157 297//157 311//157 +f 317//158 77//158 325//158 +f 359//159 303//159 357//159 +f 355//160 303//160 75//160 +f 317//161 75//161 76//161 +f 363//162 293//162 365//162 +f 369//163 365//163 367//163 +f 371//164 367//164 373//164 +f 377//165 373//165 375//165 +f 379//166 377//166 375//166 +f 375//167 317//167 379//167 +f 373//168 355//168 375//168 +f 367//169 357//169 373//169 +f 365//170 359//170 367//170 +f 293//171 361//171 365//171 +f 361//172 302//172 359//172 +f 289//173 285//173 291//173 +f 361//174 285//174 74//174 +f 74//175 285//175 73//175 +f 297//176 363//176 311//176 +f 369//177 311//177 363//177 +f 371//178 313//178 369//178 +f 377//179 383//179 371//179 +f 351//180 385//180 387//180 +f 385//181 321//181 387//181 +f 385//182 299//182 319//182 +f 343//183 301//183 385//183 +f 385//184 349//184 343//184 +f 345//185 347//185 301//185 +f 323//186 379//186 381//186 +f 379//187 325//187 381//187 +f 387//188 323//188 381//188 +f 353//189 387//189 381//189 +f 353//190 381//190 325//190 +f 389//191 403//191 415//191 +f 405//192 401//192 399//192 +f 405//193 397//193 407//193 +f 407//194 395//194 409//194 +f 409//195 393//195 411//195 +f 413//196 393//196 391//196 +f 419//197 411//197 413//197 +f 421//198 409//198 411//198 +f 425//199 409//199 423//199 +f 427//200 407//200 425//200 +f 429//201 405//201 427//201 +f 417//202 403//202 429//202 +f 321//203 443//203 445//203 +f 391//204 445//204 413//204 +f 443//205 311//205 313//205 +f 415//206 383//206 389//206 +f 441//207 413//207 445//207 +f 447//208 441//208 445//208 +f 439//72 435//72 437//72 +f 449//209 435//209 447//209 +f 449//210 451//210 433//210 +f 431//211 417//211 451//211 +f 431//212 313//212 383//212 +f 443//213 449//213 447//213 +f 447//214 445//214 443//214 +f 453//215 417//215 477//215 +f 433//216 453//216 463//216 +f 461//217 433//217 463//217 +f 437//218 461//218 459//218 +f 439//219 459//219 457//219 +f 455//220 439//220 457//220 +f 475//221 441//221 455//221 +f 477//222 429//222 465//222 +f 465//223 427//223 467//223 +f 467//224 425//224 469//224 +f 425//225 471//225 469//225 +f 423//226 473//226 471//226 +f 421//227 475//227 473//227 +f 457//228 479//228 481//228 +f 481//229 485//229 483//229 +f 489//230 485//230 487//230 +f 489//231 493//231 491//231 +f 487//232 465//232 493//232 +f 485//233 477//233 487//233 +f 463//234 485//234 479//234 +f 463//72 459//72 461//72 +f 475//235 457//235 481//235 +f 481//236 473//236 475//236 +f 489//237 473//237 483//237 +f 491//238 471//238 489//238 +f 491//239 467//239 469//239 +f 467//240 493//240 465//240 +f 505//241 393//241 503//241 +f 503//242 395//242 501//242 +f 395//243 499//243 501//243 +f 397//244 497//244 499//244 +f 399//245 495//245 497//245 +f 401//246 507//246 495//246 +f 503//247 507//247 505//247 +f 501//248 495//248 503//248 +f 501//249 499//249 497//249 +f 383//250 507//250 389//250 +f 505//251 315//251 323//251 +f 505//252 321//252 391//252 +f 4//253 2//253 48//253 +f 6//254 4//254 46//254 +f 8//255 10//255 4//255 +f 10//256 12//256 2//256 +f 16//257 14//257 12//257 +f 18//258 16//258 10//258 +f 21//259 19//259 17//259 +f 22//260 16//260 18//260 +f 22//261 24//261 14//261 +f 28//262 26//262 24//262 +f 27//263 29//263 19//263 +f 28//264 22//264 20//264 +f 33//265 31//265 29//265 +f 34//266 28//266 30//266 +f 36//267 26//267 28//267 +f 38//268 36//268 34//268 +f 39//269 41//269 31//269 +f 40//270 34//270 32//270 +f 46//271 40//271 42//271 +f 48//272 38//272 40//272 +f 38//273 48//273 50//273 +f 36//274 38//274 52//274 +f 26//275 36//275 54//275 +f 24//276 26//276 56//276 +f 60//277 14//277 24//277 +f 64//278 12//278 14//278 +f 66//279 2//279 12//279 +f 50//280 48//280 2//280 +f 175//281 90//281 91//281 +f 173//282 88//282 90//282 +f 173//283 171//283 86//283 +f 171//284 169//284 84//284 +f 169//285 167//285 82//285 +f 147//286 93//286 80//286 +f 95//287 93//287 147//287 +f 151//288 97//288 95//288 +f 99//289 97//289 151//289 +f 101//290 99//290 153//290 +f 103//291 101//291 155//291 +f 159//292 105//292 103//292 +f 107//293 105//293 159//293 +f 109//294 107//294 161//294 +f 67//295 109//295 163//295 +f 129//296 111//296 163//296 +f 159//297 180//297 129//297 +f 157//298 127//298 180//298 +f 155//299 125//299 127//299 +f 153//300 123//300 125//300 +f 151//301 121//301 123//301 +f 149//302 119//302 121//302 +f 147//303 117//303 119//303 +f 165//304 115//304 117//304 +f 177//305 182//305 115//305 +f 163//306 111//306 113//306 +f 178//307 68//307 113//307 +f 182//308 177//308 178//308 +f 176//309 137//309 136//309 +f 175//310 136//310 134//310 +f 134//311 132//311 171//311 +f 186//312 188//312 167//312 +f 169//313 171//313 132//313 +f 190//314 145//314 188//314 +f 188//315 186//315 69//315 +f 132//72 130//72 69//72 +f 192//316 194//316 143//316 +f 194//317 196//317 141//317 +f 198//318 139//318 141//318 +f 145//319 190//319 70//319 +f 192//79 70//79 208//79 +f 201//320 199//320 71//320 +f 203//321 201//321 198//321 +f 203//322 196//322 194//322 +f 207//323 205//323 194//323 +f 205//324 199//324 201//324 +f 207//325 208//325 199//325 +f 165//326 141//326 139//326 +f 212//327 143//327 141//327 +f 145//328 143//328 212//328 +f 188//329 145//329 214//329 +f 210//330 82//330 167//330 +f 216//331 210//331 214//331 +f 212//332 165//332 80//332 +f 130//333 132//333 223//333 +f 223//334 132//334 134//334 +f 221//335 134//335 136//335 +f 219//336 136//336 137//336 +f 219//96 217//96 231//96 +f 228//337 221//337 219//337 +f 226//98 223//98 221//98 +f 72//338 224//338 225//338 +f 72//99 223//99 226//99 +f 230//339 231//339 224//339 +f 235//340 182//340 184//340 +f 233//341 184//341 113//341 +f 113//342 111//342 257//342 +f 115//343 182//343 235//343 +f 251//344 117//344 115//344 +f 249//345 119//345 117//345 +f 247//346 121//346 119//346 +f 245//347 123//347 121//347 +f 125//348 123//348 245//348 +f 127//349 125//349 243//349 +f 237//350 180//350 127//350 +f 239//351 129//351 180//351 +f 257//352 111//352 129//352 +f 257//353 239//353 277//353 +f 277//354 239//354 237//354 +f 237//355 241//355 275//355 +f 241//356 243//356 273//356 +f 273//357 243//357 245//357 +f 245//358 247//358 269//358 +f 269//359 247//359 249//359 +f 249//360 251//360 265//360 +f 251//361 253//361 263//361 +f 263//124 253//124 235//124 +f 261//362 255//362 257//362 +f 283//363 233//363 255//363 +f 281//364 235//364 233//364 +f 285//365 109//365 67//365 +f 287//366 107//366 109//366 +f 105//367 107//367 287//367 +f 103//368 105//368 289//368 +f 101//369 103//369 291//369 +f 295//370 99//370 101//370 +f 97//371 99//371 295//371 +f 299//372 95//372 97//372 +f 301//373 93//373 95//373 +f 309//374 308//374 339//374 +f 308//375 307//375 337//375 +f 307//376 306//376 341//376 +f 306//377 91//377 90//377 +f 341//378 90//378 88//378 +f 335//379 88//379 86//379 +f 331//380 86//380 84//380 +f 339//381 337//381 331//381 +f 335//382 331//382 337//382 +f 333//383 327//383 329//383 +f 333//384 84//384 82//384 +f 343//385 210//385 216//385 +f 327//386 82//386 210//386 +f 216//387 80//387 347//387 +f 347//388 80//388 93//388 +f 325//389 77//389 304//389 +f 353//390 304//390 78//390 +f 349//391 351//391 78//391 +f 329//392 349//392 305//392 +f 329//393 327//393 343//393 +f 319//394 299//394 297//394 +f 317//395 76//395 77//395 +f 359//396 302//396 303//396 +f 355//397 357//397 303//397 +f 317//398 355//398 75//398 +f 363//399 295//399 293//399 +f 369//400 363//400 365//400 +f 371//401 369//401 367//401 +f 377//402 371//402 373//402 +f 379//403 315//403 377//403 +f 375//404 355//404 317//404 +f 373//405 357//405 355//405 +f 367//406 359//406 357//406 +f 365//407 361//407 359//407 +f 293//408 291//408 361//408 +f 361//409 74//409 302//409 +f 289//410 287//410 285//410 +f 361//411 291//411 285//411 +f 297//412 295//412 363//412 +f 369//413 313//413 311//413 +f 371//414 383//414 313//414 +f 377//415 315//415 383//415 +f 351//416 349//416 385//416 +f 385//417 319//417 321//417 +f 385//418 301//418 299//418 +f 343//419 345//419 301//419 +f 323//420 315//420 379//420 +f 379//421 317//421 325//421 +f 387//422 321//422 323//422 +f 353//423 351//423 387//423 +f 389//424 401//424 403//424 +f 405//425 403//425 401//425 +f 405//426 399//426 397//426 +f 407//427 397//427 395//427 +f 409//428 395//428 393//428 +f 413//429 411//429 393//429 +f 419//430 421//430 411//430 +f 421//431 423//431 409//431 +f 425//432 407//432 409//432 +f 427//433 405//433 407//433 +f 429//434 403//434 405//434 +f 417//435 415//435 403//435 +f 321//436 319//436 443//436 +f 391//437 321//437 445//437 +f 443//438 319//438 311//438 +f 415//439 431//439 383//439 +f 441//440 419//440 413//440 +f 447//441 439//441 441//441 +f 439//442 447//442 435//442 +f 449//443 433//443 435//443 +f 449//444 431//444 451//444 +f 431//445 415//445 417//445 +f 431//446 449//446 313//446 +f 443//447 313//447 449//447 +f 453//448 451//448 417//448 +f 433//449 451//449 453//449 +f 461//217 435//217 433//217 +f 437//450 435//450 461//450 +f 439//451 437//451 459//451 +f 455//452 441//452 439//452 +f 475//453 419//453 441//453 +f 477//454 417//454 429//454 +f 465//455 429//455 427//455 +f 467//456 427//456 425//456 +f 425//457 423//457 471//457 +f 423//458 421//458 473//458 +f 421//459 419//459 475//459 +f 457//460 459//460 479//460 +f 481//461 479//461 485//461 +f 489//462 483//462 485//462 +f 489//463 487//463 493//463 +f 487//464 477//464 465//464 +f 485//465 453//465 477//465 +f 463//466 453//466 485//466 +f 463//467 479//467 459//467 +f 475//468 455//468 457//468 +f 481//469 483//469 473//469 +f 489//470 471//470 473//470 +f 491//471 469//471 471//471 +f 491//472 493//472 467//472 +f 505//473 391//473 393//473 +f 503//474 393//474 395//474 +f 395//475 397//475 499//475 +f 397//476 399//476 497//476 +f 399//477 401//477 495//477 +f 401//478 389//478 507//478 +f 503//479 495//479 507//479 +f 501//480 497//480 495//480 +f 383//481 315//481 507//481 +f 505//482 507//482 315//482 +f 505//483 323//483 321//483 +usemtl Material.002 +f 47//484 3//484 45//484 +f 45//485 5//485 43//485 +f 3//486 7//486 5//486 +f 1//487 9//487 3//487 +f 11//488 15//488 9//488 +f 9//489 17//489 7//489 +f 13//490 21//490 15//490 +f 23//491 27//491 21//491 +f 35//492 27//492 25//492 +f 37//493 33//493 35//493 +f 45//494 41//494 39//494 +f 47//495 39//495 37//495 +f 37//496 49//496 47//496 +f 35//497 51//497 37//497 +f 25//498 53//498 35//498 +f 23//499 55//499 25//499 +f 23//500 59//500 57//500 +f 13//501 63//501 59//501 +f 11//502 65//502 63//502 +f 1//503 49//503 65//503 +f 61//504 65//504 49//504 +f 63//505 65//505 61//505 +f 61//506 59//506 63//506 +f 61//507 57//507 59//507 +f 61//508 55//508 57//508 +f 61//509 53//509 55//509 +f 61//510 51//510 53//510 +f 61//511 49//511 51//511 +f 174//512 91//512 89//512 +f 172//513 89//513 87//513 +f 85//514 172//514 87//514 +f 83//515 170//515 85//515 +f 81//516 168//516 83//516 +f 79//517 146//517 164//517 +f 94//518 146//518 92//518 +f 94//519 150//519 148//519 +f 98//520 150//520 96//520 +f 100//521 152//521 98//521 +f 102//522 154//522 100//522 +f 102//523 158//523 156//523 +f 106//524 158//524 104//524 +f 108//525 160//525 106//525 +f 67//526 162//526 108//526 +f 128//527 162//527 110//527 +f 128//528 158//528 160//528 +f 156//529 179//529 126//529 +f 154//530 126//530 124//530 +f 152//531 124//531 122//531 +f 150//532 122//532 120//532 +f 148//533 120//533 118//533 +f 146//534 118//534 116//534 +f 164//535 116//535 114//535 +f 114//536 177//536 164//536 +f 162//537 112//537 110//537 +f 112//538 178//538 183//538 +f 181//539 178//539 177//539 +f 135//540 176//540 174//540 +f 133//541 174//541 172//541 +f 133//542 170//542 131//542 +f 166//543 185//543 168//543 +f 131//544 168//544 185//544 +f 190//545 187//545 144//545 +f 187//546 69//546 185//546 +f 131//72 69//72 130//72 +f 142//547 191//547 144//547 +f 140//548 193//548 142//548 +f 197//549 140//549 139//549 +f 144//550 70//550 190//550 +f 191//551 208//551 70//551 +f 71//552 200//552 197//552 +f 197//553 202//553 195//553 +f 202//554 193//554 195//554 +f 193//555 206//555 191//555 +f 204//556 200//556 199//556 +f 199//557 206//557 204//557 +f 139//558 164//558 177//558 +f 140//559 211//559 164//559 +f 144//560 211//560 142//560 +f 187//561 213//561 144//561 +f 209//562 166//562 81//562 +f 215//563 213//563 209//563 +f 79//564 211//564 215//564 +f 130//565 222//565 131//565 +f 133//566 222//566 220//566 +f 135//567 220//567 218//567 +f 137//72 218//72 217//72 +f 218//568 231//568 217//568 +f 218//569 227//569 229//569 +f 220//76 225//76 227//76 +f 72//338 225//338 222//338 +f 224//570 229//570 225//570 +f 225//571 229//571 227//571 +f 183//572 234//572 232//572 +f 112//573 232//573 254//573 +f 112//574 256//574 110//574 +f 114//575 234//575 181//575 +f 114//576 250//576 252//576 +f 116//577 248//577 250//577 +f 118//578 246//578 248//578 +f 120//579 244//579 246//579 +f 124//580 244//580 122//580 +f 126//581 242//581 124//581 +f 126//582 236//582 240//582 +f 179//583 238//583 236//583 +f 128//584 256//584 238//584 +f 256//585 276//585 238//585 +f 236//586 276//586 278//586 +f 236//587 274//587 240//587 +f 240//588 272//588 242//588 +f 244//589 272//589 270//589 +f 244//590 268//590 246//590 +f 248//591 268//591 266//591 +f 248//592 264//592 250//592 +f 250//593 262//593 252//593 +f 234//594 262//594 280//594 +f 256//595 260//595 258//595 +f 254//596 282//596 260//596 +f 232//597 280//597 282//597 +f 67//598 284//598 73//598 +f 108//599 286//599 284//599 +f 104//600 286//600 106//600 +f 102//601 288//601 104//601 +f 100//602 290//602 102//602 +f 100//603 294//603 292//603 +f 96//604 294//604 98//604 +f 96//605 298//605 296//605 +f 94//606 300//606 298//606 +f 309//607 338//607 308//607 +f 308//608 336//608 307//608 +f 307//609 340//609 306//609 +f 89//610 306//610 340//610 +f 87//611 340//611 334//611 +f 85//612 334//612 330//612 +f 83//613 330//613 332//613 +f 330//614 338//614 332//614 +f 334//615 336//615 330//615 +f 332//616 328//616 326//616 +f 81//617 332//617 326//617 +f 342//618 215//618 209//618 +f 326//619 209//619 81//619 +f 215//620 346//620 79//620 +f 346//621 92//621 79//621 +f 324//622 304//622 77//622 +f 352//623 78//623 304//623 +f 78//624 348//624 305//624 +f 305//625 328//625 309//625 +f 328//626 342//626 326//626 +f 296//627 318//627 310//627 +f 316//628 77//628 76//628 +f 358//629 303//629 302//629 +f 303//630 354//630 75//630 +f 75//631 316//631 76//631 +f 292//632 362//632 364//632 +f 364//633 368//633 366//633 +f 366//634 370//634 372//634 +f 372//635 376//635 374//635 +f 378//636 376//636 314//636 +f 316//637 374//637 378//637 +f 354//638 372//638 374//638 +f 356//639 366//639 372//639 +f 358//640 364//640 366//640 +f 292//641 360//641 290//641 +f 360//642 302//642 74//642 +f 284//643 288//643 290//643 +f 284//644 360//644 74//644 +f 73//645 284//645 74//645 +f 296//646 362//646 294//646 +f 310//647 368//647 362//647 +f 312//648 370//648 368//648 +f 376//649 382//649 314//649 +f 350//650 384//650 348//650 +f 384//651 320//651 318//651 +f 298//652 384//652 318//652 +f 300//653 342//653 384//653 +f 342//654 348//654 384//654 +f 300//655 346//655 344//655 +f 322//656 378//656 314//656 +f 378//657 324//657 316//657 +f 386//658 322//658 320//658 +f 352//659 386//659 350//659 +f 324//660 380//660 352//660 +f 388//661 402//661 400//661 +f 400//662 404//662 398//662 +f 404//663 396//663 398//663 +f 406//664 394//664 396//664 +f 408//665 392//665 394//665 +f 392//666 412//666 390//666 +f 410//667 418//667 412//667 +f 408//668 420//668 410//668 +f 424//669 408//669 406//669 +f 426//670 406//670 404//670 +f 428//671 404//671 402//671 +f 402//672 416//672 428//672 +f 320//673 442//673 318//673 +f 390//674 444//674 320//674 +f 310//675 442//675 312//675 +f 382//676 414//676 388//676 +f 412//677 440//677 444//677 +f 446//678 440//678 438//678 +f 434//72 438//72 436//72 +f 448//679 434//679 432//679 +f 448//680 450//680 430//680 +f 430//681 416//681 414//681 +f 312//682 430//682 382//682 +f 442//683 448//683 312//683 +f 442//684 444//684 446//684 +f 416//685 452//685 476//685 +f 432//686 452//686 450//686 +f 432//687 460//687 462//687 +f 436//688 460//688 434//688 +f 438//689 458//689 436//689 +f 438//690 454//690 456//690 +f 440//221 474//221 454//221 +f 428//691 476//691 464//691 +f 426//692 464//692 466//692 +f 424//693 466//693 468//693 +f 424//694 470//694 422//694 +f 422//695 472//695 420//695 +f 420//696 474//696 418//696 +f 456//697 478//697 458//697 +f 480//698 484//698 478//698 +f 484//699 488//699 486//699 +f 488//700 492//700 486//700 +f 464//701 486//701 492//701 +f 484//702 476//702 452//702 +f 462//703 484//703 452//703 +f 458//72 462//72 460//72 +f 474//704 456//704 454//704 +f 472//705 480//705 474//705 +f 488//706 472//706 470//706 +f 490//707 470//707 468//707 +f 466//708 490//708 468//708 +f 464//709 492//709 466//709 +f 392//710 504//710 502//710 +f 394//711 502//711 500//711 +f 394//712 498//712 396//712 +f 396//713 496//713 398//713 +f 398//714 494//714 400//714 +f 400//715 506//715 388//715 +f 502//716 506//716 494//716 +f 494//717 500//717 502//717 +f 496//718 498//718 500//718 +f 382//719 506//719 314//719 +f 314//720 504//720 322//720 +f 320//721 504//721 390//721 +f 47//722 1//722 3//722 +f 45//723 3//723 5//723 +f 3//724 9//724 7//724 +f 1//725 11//725 9//725 +f 11//726 13//726 15//726 +f 9//727 15//727 17//727 +f 13//728 23//728 21//728 +f 23//729 25//729 27//729 +f 35//730 33//730 27//730 +f 37//731 39//731 33//731 +f 45//732 43//732 41//732 +f 47//733 45//733 39//733 +f 37//734 51//734 49//734 +f 35//735 53//735 51//735 +f 25//736 55//736 53//736 +f 23//737 57//737 55//737 +f 23//738 13//738 59//738 +f 13//739 11//739 63//739 +f 11//740 1//740 65//740 +f 1//741 47//741 49//741 +f 174//742 176//742 91//742 +f 172//743 174//743 89//743 +f 85//744 170//744 172//744 +f 83//745 168//745 170//745 +f 81//746 166//746 168//746 +f 79//747 92//747 146//747 +f 94//748 148//748 146//748 +f 94//749 96//749 150//749 +f 98//750 152//750 150//750 +f 100//751 154//751 152//751 +f 102//752 156//752 154//752 +f 102//753 104//753 158//753 +f 106//754 160//754 158//754 +f 108//755 162//755 160//755 +f 67//756 68//756 162//756 +f 128//757 160//757 162//757 +f 128//758 179//758 158//758 +f 156//759 158//759 179//759 +f 154//760 156//760 126//760 +f 152//761 154//761 124//761 +f 150//762 152//762 122//762 +f 148//763 150//763 120//763 +f 146//764 148//764 118//764 +f 164//765 146//765 116//765 +f 114//766 181//766 177//766 +f 162//767 68//767 112//767 +f 112//768 68//768 178//768 +f 181//769 183//769 178//769 +f 135//770 137//770 176//770 +f 133//771 135//771 174//771 +f 133//772 172//772 170//772 +f 166//773 187//773 185//773 +f 131//774 170//774 168//774 +f 190//70 189//70 187//70 +f 187//71 189//71 69//71 +f 131//72 185//72 69//72 +f 142//775 193//775 191//775 +f 140//776 195//776 193//776 +f 197//777 195//777 140//777 +f 71//778 197//778 139//778 +f 144//779 191//779 70//779 +f 191//551 206//551 208//551 +f 71//780 199//780 200//780 +f 197//781 200//781 202//781 +f 202//782 204//782 193//782 +f 193//783 204//783 206//783 +f 204//784 202//784 200//784 +f 199//785 208//785 206//785 +f 139//786 140//786 164//786 +f 140//787 142//787 211//787 +f 144//788 213//788 211//788 +f 187//789 166//789 213//789 +f 209//790 213//790 166//790 +f 215//791 211//791 213//791 +f 79//792 164//792 211//792 +f 130//793 72//793 222//793 +f 133//794 131//794 222//794 +f 135//795 133//795 220//795 +f 137//796 135//796 218//796 +f 218//568 229//568 231//568 +f 218//797 220//797 227//797 +f 220//76 222//76 225//76 +f 224//798 231//798 229//798 +f 183//799 181//799 234//799 +f 112//800 183//800 232//800 +f 112//801 254//801 256//801 +f 114//802 252//802 234//802 +f 114//803 116//803 250//803 +f 116//804 118//804 248//804 +f 118//805 120//805 246//805 +f 120//806 122//806 244//806 +f 124//807 242//807 244//807 +f 126//808 240//808 242//808 +f 126//809 179//809 236//809 +f 179//810 128//810 238//810 +f 128//811 110//811 256//811 +f 256//812 258//812 276//812 +f 236//813 238//813 276//813 +f 236//814 278//814 274//814 +f 240//815 274//815 272//815 +f 244//816 242//816 272//816 +f 244//817 270//817 268//817 +f 248//818 246//818 268//818 +f 248//819 266//819 264//819 +f 250//820 264//820 262//820 +f 234//594 252//594 262//594 +f 256//821 254//821 260//821 +f 254//822 232//822 282//822 +f 232//823 234//823 280//823 +f 67//824 108//824 284//824 +f 108//825 106//825 286//825 +f 104//826 288//826 286//826 +f 102//827 290//827 288//827 +f 100//828 292//828 290//828 +f 100//829 98//829 294//829 +f 96//830 296//830 294//830 +f 96//831 94//831 298//831 +f 94//832 92//832 300//832 +f 309//833 328//833 338//833 +f 308//834 338//834 336//834 +f 307//835 336//835 340//835 +f 89//836 91//836 306//836 +f 87//837 89//837 340//837 +f 85//838 87//838 334//838 +f 83//839 85//839 330//839 +f 330//840 336//840 338//840 +f 334//841 340//841 336//841 +f 332//842 338//842 328//842 +f 81//843 83//843 332//843 +f 342//844 344//844 215//844 +f 326//845 342//845 209//845 +f 215//846 344//846 346//846 +f 346//847 300//847 92//847 +f 324//848 352//848 304//848 +f 352//849 350//849 78//849 +f 78//850 350//850 348//850 +f 305//851 348//851 328//851 +f 328//852 348//852 342//852 +f 296//853 298//853 318//853 +f 316//854 324//854 77//854 +f 358//855 356//855 303//855 +f 303//856 356//856 354//856 +f 75//857 354//857 316//857 +f 292//858 294//858 362//858 +f 364//859 362//859 368//859 +f 366//860 368//860 370//860 +f 372//861 370//861 376//861 +f 378//862 374//862 376//862 +f 316//863 354//863 374//863 +f 354//864 356//864 372//864 +f 356//865 358//865 366//865 +f 358//866 360//866 364//866 +f 292//867 364//867 360//867 +f 360//868 358//868 302//868 +f 284//869 286//869 288//869 +f 284//870 290//870 360//870 +f 296//871 310//871 362//871 +f 310//872 312//872 368//872 +f 312//873 382//873 370//873 +f 376//874 370//874 382//874 +f 350//875 386//875 384//875 +f 384//876 386//876 320//876 +f 298//877 300//877 384//877 +f 300//878 344//878 342//878 +f 322//879 380//879 378//879 +f 378//880 380//880 324//880 +f 386//881 380//881 322//881 +f 352//882 380//882 386//882 +f 388//883 414//883 402//883 +f 400//884 402//884 404//884 +f 404//885 406//885 396//885 +f 406//886 408//886 394//886 +f 408//887 410//887 392//887 +f 392//888 410//888 412//888 +f 410//889 420//889 418//889 +f 408//890 422//890 420//890 +f 424//891 422//891 408//891 +f 426//892 424//892 406//892 +f 428//893 426//893 404//893 +f 402//894 414//894 416//894 +f 320//895 444//895 442//895 +f 390//896 412//896 444//896 +f 310//897 318//897 442//897 +f 382//898 430//898 414//898 +f 412//899 418//899 440//899 +f 446//900 444//900 440//900 +f 434//901 446//901 438//901 +f 448//902 446//902 434//902 +f 448//903 432//903 450//903 +f 430//904 450//904 416//904 +f 312//905 448//905 430//905 +f 442//906 446//906 448//906 +f 416//907 450//907 452//907 +f 432//908 462//908 452//908 +f 432//687 434//687 460//687 +f 436//909 458//909 460//909 +f 438//910 456//910 458//910 +f 438//911 440//911 454//911 +f 440//912 418//912 474//912 +f 428//913 416//913 476//913 +f 426//914 428//914 464//914 +f 424//915 426//915 466//915 +f 424//916 468//916 470//916 +f 422//917 470//917 472//917 +f 420//918 472//918 474//918 +f 456//919 480//919 478//919 +f 480//920 482//920 484//920 +f 484//921 482//921 488//921 +f 488//922 490//922 492//922 +f 464//923 476//923 486//923 +f 484//924 486//924 476//924 +f 462//925 478//925 484//925 +f 458//926 478//926 462//926 +f 474//927 480//927 456//927 +f 472//928 482//928 480//928 +f 488//929 482//929 472//929 +f 490//930 488//930 470//930 +f 466//931 492//931 490//931 +f 392//932 390//932 504//932 +f 394//933 392//933 502//933 +f 394//934 500//934 498//934 +f 396//935 498//935 496//935 +f 398//936 496//936 494//936 +f 400//937 494//937 506//937 +f 502//938 504//938 506//938 +f 494//939 496//939 500//939 +f 382//940 388//940 506//940 +f 314//941 506//941 504//941 +f 320//942 322//942 504//942 diff --git a/file/Suzanne0.inc b/file/Suzanne0.inc new file mode 100644 index 0000000..a07dffa --- /dev/null +++ b/file/Suzanne0.inc @@ -0,0 +1,1025 @@ +#include "vxModel.inc" +VERTEX_STREAM: +.dl 129822 +.dw 350,252,-218 +.dw -350,252,-218 +.dw -350,252,218 +.dw 350,252,218 +.dw 350,-252,-218 +.dw -350,-252,-218 +.dw -350,-252,218 +.dw 350,-252,218 +.v 112,42,-196 +.db 48,-41,-12 +.v -112,42,-196 +.db -48,-41,-12 +.v 128,24,-176 +.db 38,-32,-40 +.v -128,24,-176 +.db -38,-32,-40 +.v 140,14,-148 +.db 46,-31,-31 +.v -140,14,-148 +.db -46,-31,-31 +.v 90,-6,-158 +.db 13,-55,-30 +.v -90,-6,-158 +.db -13,-55,-30 +.v 90,8,-184 +.db 6,-46,-44 +.v -90,8,-184 +.db -6,-46,-44 +.v 90,34,-200 +.db 3,-62,-14 +.v -90,34,-200 +.db -3,-62,-14 +.v 70,42,-204 +.db -42,-44,-19 +.v -70,42,-204 +.db 42,-44,-19 +.v 52,24,-190 +.db -23,-34,-49 +.v -52,24,-190 +.db 23,-34,-49 +.v 40,14,-166 +.db -36,-40,-35 +.v -40,14,-166 +.db 36,-40,-35 +.v 20,62,-168 +.db -52,7,-37 +.v -20,62,-168 +.db 52,7,-37 +.v 36,62,-190 +.db -42,-6,-48 +.v -36,62,-190 +.db 42,-6,-48 +.v 62,62,-204 +.db -63,2,-10 +.v -62,62,-204 +.db 63,2,-10 +.v 70,84,-204 +.db -42,48,-6 +.v -70,84,-204 +.db 42,48,-6 +.v 52,100,-190 +.db -29,29,-49 +.v -52,100,-190 +.db 29,29,-49 +.v 40,112,-166 +.db -29,44,-36 +.v -40,112,-166 +.db 29,44,-36 +.v 90,132,-158 +.db 13,53,-33 +.v -90,132,-158 +.db -13,53,-33 +.v 90,116,-184 +.db 6,46,-44 +.v -90,116,-184 +.db -6,46,-44 +.v 90,92,-200 +.db 2,63,-13 +.v -90,92,-200 +.db -2,63,-13 +.v 112,84,-196 +.db 48,41,-11 +.v -112,84,-196 +.db -48,41,-11 +.v 128,100,-176 +.db 38,31,-41 +.v -128,100,-176 +.db -38,31,-41 +.v 140,112,-148 +.db 46,30,-33 +.v -140,112,-148 +.db -46,30,-33 +.v 160,62,-144 +.db 56,-0,-32 +.v -160,62,-144 +.db -56,-0,-32 +.v 144,62,-172 +.db 52,-0,-37 +.v -144,62,-172 +.db -52,-0,-37 +.v 120,62,-194 +.db 58,-1,-27 +.v -120,62,-194 +.db -58,-1,-27 +.v 122,62,-198 +.db 64,-1,2 +.v -122,62,-198 +.db -64,-1,2 +.v 114,86,-200 +.db 42,48,-5 +.v -114,86,-200 +.db -42,48,-5 +.v 90,96,-206 +.db -5,63,-11 +.v -90,96,-206 +.db 5,63,-11 +.v 68,86,-210 +.db -49,39,-15 +.v -68,86,-210 +.db 49,39,-15 +.v 58,62,-210 +.db -56,-1,-31 +.v -58,62,-210 +.db 56,-1,-31 +.v 68,40,-210 +.db -48,-40,-15 +.v -68,40,-210 +.db 48,-40,-15 +.v 90,62,-212 +.db 12,-0,-63 +.v -90,62,-212 +.db -12,-0,-63 +.v 90,30,-206 +.db -5,-63,-10 +.v -90,30,-206 +.db 5,-63,-10 +.v 114,40,-200 +.db 41,-49,-5 +.v -114,40,-200 +.db -41,-49,-5 +.v 0,110,-190 +.db -0,62,-15 +.v 0,90,-210 +.db 0,-7,-64 +.v 0,-174,-188 +.db 0,-2,-64 +.v 0,-82,-200 +.db 0,-57,-29 +.v 0,-48,-204 +.db -14,49,-38 +.v 0,-198,-184 +.db -0,-62,-15 +.v 0,104,-154 +.db -0,51,-39 +.v 0,146,-146 +.db 0,31,-56 +.v 0,230,140 +.db 0,51,38 +.v 0,144,218 +.db 0,21,60 +.v 0,18,212 +.db 0,-17,62 +.v 0,-98,90 +.db -0,-61,20 +.v 52,-48,-144 +.db 54,-26,-23 +.v -52,-48,-144 +.db -54,-26,-23 +.v 80,-112,-146 +.db 61,15,-10 +.v -80,-112,-146 +.db -61,15,-10 +.v 90,-178,-146 +.db 63,6,-11 +.v -90,-178,-146 +.db -63,6,-11 +.v 94,-228,-136 +.db 60,-16,-15 +.v -94,-228,-136 +.db -60,-16,-15 +.v 84,-242,-134 +.db 28,-57,-7 +.v -84,-242,-134 +.db -28,-57,-7 +.v 46,-248,-142 +.db 10,-62,-10 +.v -46,-248,-142 +.db -10,-62,-10 +.v 0,-252,-148 +.db -0,-61,-21 +.v 112,-36,-136 +.db 20,-61,3 +.v -112,-36,-136 +.db -20,-61,3 +.v 162,-10,-138 +.db 38,-50,-13 +.v -162,-10,-138 +.db -38,-50,-13 +.v 212,38,-114 +.db 57,-27,10 +.v -212,38,-114 +.db -57,-27,10 +.v 220,110,-152 +.db 55,14,-30 +.v -220,110,-152 +.db -55,14,-30 +.v 182,124,-160 +.db 33,55,-8 +.v -182,124,-160 +.db -33,55,-8 +.v 126,154,-176 +.db 39,49,-14 +.v -126,154,-176 +.db -39,49,-14 +.v 82,194,-188 +.db 12,63,-3 +.v -82,194,-188 +.db -12,63,-3 +.v 40,184,-194 +.db -33,49,-24 +.v -40,184,-194 +.db 33,49,-24 +.v 16,126,-192 +.db -55,32,-9 +.v -16,126,-192 +.db 55,32,-9 +.v 42,106,-198 +.db 19,-13,-60 +.v -42,106,-198 +.db -19,-13,-60 +.v 32,78,-196 +.db -0,-11,-63 +.v -32,78,-196 +.db 0,-11,-63 +.v 52,24,-190 +.db -14,-22,-58 +.v -52,24,-190 +.db 14,-22,-58 +.v 96,4,-180 +.db 21,-25,-55 +.v -96,4,-180 +.db -21,-25,-55 +.v 126,16,-172 +.db 28,-24,-52 +.v -126,16,-172 +.db -28,-24,-52 +.v 160,48,-166 +.db 30,-11,-55 +.v -160,48,-166 +.db -30,-11,-55 +.v 164,76,-166 +.db 24,-7,-59 +.v -164,76,-166 +.db -24,-7,-59 +.v 154,96,-170 +.db 20,-15,-59 +.v -154,96,-170 +.db -20,-15,-59 +.v 110,112,-184 +.db 15,3,-62 +.v -110,112,-184 +.db -15,3,-62 +.v 64,120,-194 +.db 16,-10,-61 +.v -64,120,-194 +.db -16,-10,-61 +.v 0,-196,-188 +.db -0,-31,-56 +.v 28,-184,-188 +.db 9,-9,-63 +.v -28,-184,-188 +.db -9,-9,-63 +.v 30,-214,-182 +.db 5,-22,-60 +.v -30,-214,-182 +.db -5,-22,-60 +.v 16,-226,-178 +.db -5,-21,-60 +.v -16,-226,-178 +.db 5,-21,-60 +.v 0,-228,-176 +.db -0,-8,-64 +.v 0,-50,-192 +.db -64,0,-0 +.v 0,-36,-190 +.db -19,26,-55 +.v 26,-38,-190 +.db 55,30,-13 +.v -26,-38,-190 +.db -55,30,-13 +.v 32,-58,-192 +.db 60,-16,-17 +.v -32,-58,-192 +.db -60,-16,-17 +.v 22,-74,-190 +.db 33,-29,-47 +.v -22,-74,-190 +.db -33,-29,-47 +.v 102,-12,-172 +.db 24,-36,-47 +.v -102,-12,-172 +.db -24,-36,-47 +.v 158,14,-160 +.db 29,-22,-53 +.v -158,14,-160 +.db -29,-22,-53 +.v 186,52,-154 +.db 35,-20,-50 +.v -186,52,-154 +.db -35,-20,-50 +.v 190,96,-168 +.db 25,-12,-58 +.v -190,96,-168 +.db -25,-12,-58 +.v 176,106,-186 +.db 28,-9,-57 +.v -176,106,-186 +.db -28,-9,-57 +.v 112,140,-204 +.db 15,-8,-62 +.v -112,140,-204 +.db -15,-8,-62 +.v 80,164,-214 +.db 17,11,-61 +.v -80,164,-214 +.db -17,11,-61 +.v 52,158,-218 +.db -13,9,-62 +.v -52,158,-218 +.db 13,9,-62 +.v 26,110,-216 +.db -0,-4,-64 +.v -26,110,-216 +.db 0,-4,-64 +.v 32,-26,-208 +.db 9,-19,-60 +.v -32,-26,-208 +.db -9,-19,-60 +.v 54,-114,-182 +.db 38,8,-51 +.v -54,-114,-182 +.db -38,8,-51 +.v 64,-180,-176 +.db 37,-1,-52 +.v -64,-180,-176 +.db -37,-1,-52 +.v 68,-210,-170 +.db 34,-14,-52 +.v -68,-210,-170 +.db -34,-14,-52 +.v 60,-234,-162 +.db 23,-41,-44 +.v -60,-234,-162 +.db -23,-41,-44 +.v 42,-238,-162 +.db 10,-48,-41 +.v -42,-238,-162 +.db -10,-48,-41 +.v 0,-242,-164 +.db 0,-48,-43 +.v 0,12,-186 +.db 0,1,-64 +.v 0,54,-196 +.db -0,-12,-63 +.v 84,122,-190 +.db 9,-6,-63 +.v -84,122,-190 +.db -9,-6,-63 +.v 42,36,-192 +.db -13,-18,-60 +.v -42,36,-192 +.db 13,-18,-60 +.v 34,54,-194 +.db -19,-11,-60 +.v -34,54,-194 +.db 19,-11,-60 +.v 30,-176,-188 +.db 12,-3,-63 +.v -30,-176,-188 +.db -12,-3,-63 +.v 20,-114,-192 +.db 8,1,-64 +.v -20,-114,-192 +.db -8,1,-64 +.v 0,-114,-192 +.db 0,0,-64 +.v 0,-84,-190 +.db -0,-22,-60 +.v 24,-70,-200 +.db 36,-44,-30 +.v -24,-70,-200 +.db -36,-44,-30 +.v 34,-58,-204 +.db 60,-12,-20 +.v -34,-58,-204 +.db -60,-12,-20 +.v 28,-34,-200 +.db 41,47,-12 +.v -28,-34,-200 +.db -41,47,-12 +.v 10,-32,-200 +.db -12,60,-19 +.v -10,-32,-200 +.db 12,60,-19 +.v 0,-52,-212 +.db 0,1,-64 +.v 12,-38,-208 +.db -16,36,-50 +.v -12,-38,-208 +.db 16,36,-50 +.v 24,-40,-208 +.db 25,34,-48 +.v -24,-40,-208 +.db -25,34,-48 +.v 28,-58,-212 +.db 19,-12,-60 +.v -28,-58,-212 +.db -19,-12,-60 +.v 20,-64,-206 +.db 14,-39,-49 +.v -20,-64,-206 +.db -14,-39,-49 +.v 0,-74,-206 +.db 0,-32,-56 +.v 66,-80,-142 +.db 60,22,-9 +.v -66,-80,-142 +.db -60,22,-9 +.v 42,-62,-182 +.db 44,-0,-46 +.v -42,-62,-182 +.db -44,-0,-46 +.v 46,-80,-182 +.db 41,10,-48 +.v -46,-80,-182 +.db -41,10,-48 +.v 60,-64,-142 +.db 60,21,-7 +.v -60,-64,-142 +.db -60,21,-7 +.v 0,-224,-176 +.db -0,38,-51 +.v 12,-222,-176 +.db -26,41,-42 +.v -12,-222,-176 +.db 26,41,-42 +.v 24,-210,-182 +.db -49,4,-41 +.v -24,-210,-182 +.db 49,4,-41 +.v 24,-190,-186 +.db -8,-39,-50 +.v -24,-190,-186 +.db 8,-39,-50 +.v 0,-200,-168 +.db 0,-39,-51 +.v 24,-192,-170 +.db -22,-46,-38 +.v -24,-192,-170 +.db 22,-46,-38 +.v 24,-208,-164 +.db -52,25,-28 +.v -24,-208,-164 +.db 52,25,-28 +.v 12,-218,-162 +.db -11,14,-61 +.v -12,-218,-162 +.db 11,14,-61 +.v 0,-220,-162 +.db -0,47,-44 +.v 44,56,-200 +.db 16,-2,-62 +.v -44,56,-200 +.db -16,-2,-62 +.v 48,40,-198 +.db -4,-4,-64 +.v -48,40,-198 +.db 4,-4,-64 +.v 86,110,-194 +.db 9,-2,-63 +.v -86,110,-194 +.db -9,-2,-63 +.v 70,108,-198 +.db 11,7,-63 +.v -70,108,-198 +.db -11,7,-63 +.v 108,102,-198 +.db 5,-25,-59 +.v -108,102,-198 +.db -5,-25,-59 +.v 144,90,-178 +.db 21,3,-61 +.v -144,90,-178 +.db -21,3,-61 +.v 150,74,-176 +.db 8,-5,-63 +.v -150,74,-176 +.db -8,-5,-63 +.v 148,50,-174 +.db 20,-8,-60 +.v -148,50,-174 +.db -20,-8,-60 +.v 122,26,-184 +.db 13,6,-62 +.v -122,26,-184 +.db -13,6,-62 +.v 96,16,-190 +.db 12,-6,-63 +.v -96,16,-190 +.db -12,-6,-63 +.v 58,28,-200 +.db 1,-5,-64 +.v -58,28,-200 +.db -1,-5,-64 +.v 46,76,-200 +.db 30,-5,-56 +.v -46,76,-200 +.db -30,-5,-56 +.v 54,96,-200 +.db 13,-8,-62 +.v -54,96,-200 +.db -13,-8,-62 +.v 60,92,-194 +.db 29,-30,-49 +.v -60,92,-194 +.db -29,-30,-49 +.v 50,76,-194 +.db 47,-16,-40 +.v -50,76,-194 +.db -47,-16,-40 +.v 62,32,-194 +.db 28,36,-45 +.v -62,32,-194 +.db -28,36,-45 +.v 96,22,-186 +.db 6,38,-51 +.v -96,22,-186 +.db -6,38,-51 +.v 118,30,-180 +.db -11,39,-50 +.v -118,30,-180 +.db 11,39,-50 +.v 140,54,-172 +.db -17,15,-60 +.v -140,54,-172 +.db 17,15,-60 +.v 142,72,-172 +.db -27,-8,-58 +.v -142,72,-172 +.db 27,-8,-58 +.v 136,86,-174 +.db -14,-39,-49 +.v -136,86,-174 +.db 14,-39,-49 +.v 106,100,-192 +.db -15,-48,-40 +.v -106,100,-192 +.db 15,-48,-40 +.v 72,102,-196 +.db 19,-21,-57 +.v -72,102,-196 +.db -19,-21,-57 +.v 86,104,-192 +.db 8,-20,-60 +.v -86,104,-192 +.db -8,-20,-60 +.v 52,44,-192 +.db 45,17,-42 +.v -52,44,-192 +.db -45,17,-42 +.v 50,58,-192 +.db 52,-1,-38 +.v -50,58,-192 +.db -52,-1,-38 +.v 28,118,-156 +.db -33,52,17 +.v -28,118,-156 +.db 33,52,17 +.v 50,170,-158 +.db -35,38,38 +.v -50,170,-158 +.db 35,38,38 +.v 86,176,-152 +.db 10,41,48 +.v -86,176,-152 +.db -10,41,48 +.v 124,142,-142 +.db 16,55,29 +.v -124,142,-142 +.db -16,55,29 +.v 174,116,-126 +.db 23,58,13 +.v -174,116,-126 +.db -23,58,13 +.v 204,104,-118 +.db 43,39,28 +.v -204,104,-118 +.db -43,39,28 +.v 198,42,-96 +.db 61,-16,11 +.v -198,42,-96 +.db -61,-16,11 +.v 154,0,-106 +.db 35,-53,6 +.v -154,0,-106 +.db -35,-53,6 +.v 112,-24,-120 +.db 30,-56,-5 +.v -112,-24,-120 +.db -30,-56,-5 +.v 0,230,-74 +.db 0,49,-42 +.v 0,252,20 +.db 0,64,-2 +.v 0,-50,172 +.db 0,-41,49 +.v 0,-118,-48 +.db 0,-63,11 +.v 0,-250,-118 +.db 0,-59,26 +.v 0,-206,-88 +.db 0,-22,60 +.v 0,-146,-82 +.db 0,-11,63 +.v 0,-124,-72 +.db 0,-47,43 +.v 218,60,-14 +.db 63,-8,-6 +.v -218,60,-14 +.db -63,-8,-6 +.v 220,82,12 +.db 64,-2,5 +.v -220,82,12 +.db -64,-2,5 +.v 198,68,112 +.db 40,-0,50 +.v -198,68,112 +.db -40,-0,50 +.v 118,112,180 +.db 29,15,55 +.v -118,112,180 +.db -29,15,55 +.v 188,-12,-18 +.db 46,-44,-5 +.v -188,-12,-18 +.db -46,-44,-5 +.v 152,-32,42 +.db 21,-60,-2 +.v -152,-32,42 +.db -21,-60,-2 +.v 164,-2,110 +.db 22,-41,44 +.v -164,-2,110 +.db -22,-41,44 +.v 86,14,170 +.db 29,-24,52 +.v -86,14,170 +.db -29,-24,52 +.v 60,-90,-104 +.db 58,16,22 +.v -60,-90,-104 +.db -58,16,22 +.v 46,-106,-66 +.db 44,-37,28 +.v -46,-106,-66 +.db -44,-37,28 +.v 74,-182,-98 +.db 41,6,49 +.v -74,-182,-98 +.db -41,6,49 +.v 64,-128,-100 +.db 52,-0,37 +.v -64,-128,-100 +.db -52,-0,37 +.v 84,-234,-102 +.db 32,-31,45 +.v -84,-234,-102 +.db -32,-31,45 +.v 36,-194,-94 +.db 9,-9,63 +.v -36,-194,-94 +.db -9,-9,63 +.v 32,-138,-92 +.db 17,-19,58 +.v -32,-138,-92 +.db -17,-19,58 +.v 42,-242,-112 +.db 6,-50,40 +.v -42,-242,-112 +.db -6,-50,40 +.v 56,-72,-110 +.db 63,-12,-3 +.v -56,-72,-110 +.db -63,-12,-3 +.v 54,-58,-120 +.db 56,-10,-29 +.v -54,-58,-120 +.db -56,-10,-29 +.v 52,-44,-128 +.db 54,-34,1 +.v -52,-44,-128 +.db -54,-34,1 +.v 54,-100,-42 +.db 36,-53,-1 +.v -54,-100,-42 +.db -36,-53,-1 +.v 76,-80,68 +.db 36,-52,10 +.v -76,-80,68 +.db -36,-52,10 +.v 88,-38,138 +.db 33,-43,34 +.v -88,-38,138 +.db -33,-43,34 +.v 116,222,98 +.db 25,53,26 +.v -116,222,98 +.db -25,53,26 +.v 116,238,18 +.db 32,56,-3 +.v -116,238,18 +.db -32,56,-3 +.v 116,218,-60 +.db 31,47,-31 +.v -116,218,-60 +.db -31,47,-31 +.v 118,134,-110 +.db 21,54,-27 +.v -118,134,-110 +.db -21,54,-27 +.v 186,104,-86 +.db 49,41,-6 +.v -186,104,-86 +.db -49,41,-6 +.v 162,116,-72 +.db 31,49,-27 +.v -162,116,-72 +.db -31,49,-27 +.v 164,180,-14 +.db 41,44,-20 +.v -164,180,-14 +.db -41,44,-20 +.v 204,144,-32 +.db 48,33,-26 +.v -204,144,-32 +.db -48,33,-26 +.v 204,158,30 +.db 56,31,1 +.v -204,158,30 +.db -56,31,1 +.v 164,192,50 +.db 43,47,5 +.v -164,192,50 +.db -43,47,5 +.v 164,174,114 +.db 41,34,35 +.v -164,174,114 +.db -41,34,35 +.v 204,138,92 +.db 55,21,24 +.v -204,138,92 +.db -55,21,24 +.v 158,84,150 +.db 39,-6,50 +.v -158,84,150 +.db -39,-6,50 +.v 124,6,140 +.db 34,-35,42 +.v -124,6,140 +.db -34,-35,42 +.v 210,84,52 +.db 44,40,-24 +.v -210,84,52 +.db -44,40,-24 +.v 104,-44,-38 +.db 36,-52,-9 +.v -104,-44,-38 +.db -36,-52,-9 +.v 110,-50,54 +.db 35,-52,13 +.v -110,-50,54 +.db -35,-52,13 +.v 228,104,60 +.db -8,45,-45 +.v -228,104,60 +.db 8,45,-45 +.v 198,-36,32 +.db 5,-38,-51 +.v -198,-36,32 +.db -5,-38,-51 +.v 266,-26,84 +.db 34,-42,-34 +.v -266,-26,84 +.db -34,-42,-34 +.v 328,14,110 +.db 42,-26,-40 +.v -328,14,110 +.db -42,-26,-40 +.v 346,82,108 +.db 46,13,-43 +.v -346,82,108 +.db -46,13,-43 +.v 316,130,108 +.db 23,54,-25 +.v -316,130,108 +.db -23,54,-25 +.v 262,122,80 +.db 2,54,-35 +.v -262,122,80 +.db -2,54,-35 +.v 260,106,74 +.db 37,-6,-52 +.v -260,106,74 +.db -37,-6,-52 +.v 304,112,100 +.db 19,-10,-60 +.v -304,112,100 +.db -19,-10,-60 +.v 324,74,104 +.db -15,-8,-62 +.v -324,74,104 +.db 15,-8,-62 +.v 310,20,104 +.db -12,24,-58 +.v -310,20,104 +.db 12,24,-58 +.v 264,-10,78 +.db 29,27,-50 +.v -264,-10,78 +.db -29,27,-50 +.v 212,-18,34 +.db 22,29,-53 +.v -212,-18,34 +.db -22,29,-53 +.v 236,92,56 +.db 27,-4,-58 +.v -236,92,56 +.db -27,-4,-58 +.v 242,78,74 +.db 44,-35,-30 +.v -242,78,74 +.db -44,-35,-30 +.v 226,-6,54 +.db 9,58,-26 +.v -226,-6,54 +.db -9,58,-26 +.v 266,0,94 +.db -9,61,-18 +.v -266,0,94 +.db 9,61,-18 +.v 304,24,114 +.db -46,44,0 +.v -304,24,114 +.db 46,44,0 +.v 316,64,114 +.db -64,-5,-4 +.v -316,64,114 +.db 64,-5,-4 +.v 300,92,112 +.db -13,-49,-40 +.v -300,92,112 +.db 13,-49,-40 +.v 262,88,92 +.db 35,-43,-32 +.v -262,88,92 +.db -35,-43,-32 +.v 216,74,54 +.db 48,-15,-39 +.v -216,74,54 +.db -48,-15,-39 +.v 214,44,70 +.db 46,-41,-19 +.v -214,44,70 +.db -46,-41,-19 +.v 194,24,70 +.db 48,-1,-43 +.v -194,24,70 +.db -48,-1,-43 +.v 210,22,70 +.db 30,52,-23 +.v -210,22,70 +.db -30,52,-23 +.v 216,4,70 +.db 53,-9,-35 +.v -216,4,70 +.db -53,-9,-35 +.v 208,-4,70 +.db 30,44,-36 +.v -208,-4,70 +.db -30,44,-36 +.v 186,0,18 +.db 57,-28,8 +.v -186,0,18 +.db -57,-28,8 +.v 184,-6,44 +.db 38,15,-50 +.v -184,-6,44 +.db -38,15,-50 +.v 184,10,48 +.db 58,-7,-25 +.v -184,10,48 +.db -58,-7,-25 +.v 204,52,54 +.db 53,-31,-19 +.v -204,52,54 +.db -53,-31,-19 +.v 228,62,68 +.db 45,-32,-32 +.v -228,62,68 +.db -45,-32,-32 +.v 228,60,82 +.db 45,-34,-30 +.v -228,60,82 +.db -45,-34,-30 +.v 208,-4,82 +.db 48,7,-42 +.v -208,-4,82 +.db -48,7,-42 +.v 218,4,82 +.db 18,17,-59 +.v -218,4,82 +.db -18,17,-59 +.v 212,20,82 +.db 35,25,-47 +.v -212,20,82 +.db -35,25,-47 +.v 196,24,82 +.db 52,16,-33 +.v -196,24,82 +.db -52,16,-33 +.v 216,44,82 +.db 28,-19,-54 +.v -216,44,82 +.db -28,-19,-54 +.v 266,84,106 +.db 30,-20,-53 +.v -266,84,106 +.db -30,-20,-53 +.v 304,88,124 +.db -0,-21,-60 +.v -304,88,124 +.db 0,-21,-60 +.v 322,62,126 +.db -35,-9,-53 +.v -322,62,126 +.db 35,-9,-53 +.v 310,22,124 +.db -39,19,-47 +.v -310,22,124 +.db 39,19,-47 +.v 268,0,108 +.db 16,38,-48 +.v -268,0,108 +.db -16,38,-48 +.v 226,-4,68 +.db -3,59,-24 +.v -226,-4,68 +.db 3,59,-24 +.v 244,74,88 +.db 40,-24,-44 +.v -244,74,88 +.db -40,-24,-44 +.v 228,28,84 +.db 12,2,-63 +.v -228,28,84 +.db -12,2,-63 +.v 240,16,86 +.db 21,11,-59 +.v -240,16,86 +.db -21,11,-59 +.v 256,32,94 +.db 29,-6,-57 +.v -256,32,94 +.db -29,-6,-57 +.v 246,44,90 +.db 21,-0,-60 +.v -246,44,90 +.db -21,-0,-60 +.v 260,60,96 +.db 20,9,-60 +.v -260,60,96 +.db -20,9,-60 +.v 270,48,98 +.db 20,-7,-60 +.v -270,48,98 +.db -20,-7,-60 +.v 284,54,100 +.db 28,0,-58 +.v -284,54,100 +.db -28,0,-58 +.v 278,70,100 +.db 16,17,-60 +.v -278,70,100 +.db -16,17,-60 +.v 262,112,124 +.db -24,36,47 +.v -262,112,124 +.db 24,36,47 +.v 320,120,140 +.db 30,37,42 +.v -320,120,140 +.db -30,37,42 +.v 350,76,128 +.db 64,2,8 +.v -350,76,128 +.db -64,2,8 +.v 336,14,136 +.db 29,-24,51 +.v -336,14,136 +.db -29,-24,51 +.v 266,-22,126 +.db -2,-45,45 +.v -266,-22,126 +.db 2,-45,45 +.v 202,-32,84 +.db 4,-52,38 +.v -202,-32,84 +.db -4,-52,38 +.v 220,98,98 +.db -38,38,35 +.v -220,98,98 +.db 38,38,35 diff --git a/file/Suzanne1.inc b/file/Suzanne1.inc new file mode 100644 index 0000000..d20d27b --- /dev/null +++ b/file/Suzanne1.inc @@ -0,0 +1,1937 @@ +#include "vxModel.inc" +INDEX_STREAM: +.dl 247582 +.f 3,47,45 +.db 160 +.f 5,45,43 +.db 160 +.f 7,3,5 +.db 160 +.f 9,1,3 +.db 160 +.f 15,11,9 +.db 160 +.f 17,9,7 +.db 160 +.f 20,16,14 +.db 160 +.f 21,17,19 +.db 160 +.f 21,13,15 +.db 160 +.f 27,23,21 +.db 160 +.f 26,18,20 +.db 160 +.f 27,19,29 +.db 160 +.f 32,28,26 +.db 160 +.f 33,29,31 +.db 160 +.f 35,27,33 +.db 160 +.f 37,33,39 +.db 160 +.f 38,30,32 +.db 160 +.f 39,31,41 +.db 160 +.f 45,41,43 +.db 160 +.f 47,39,45 +.db 160 +.f 37,49,51 +.db 160 +.f 35,51,53 +.db 160 +.f 25,53,55 +.db 160 +.f 23,55,57 +.db 160 +.f 59,23,57 +.db 160 +.f 63,13,59 +.db 160 +.f 65,11,63 +.db 160 +.f 49,1,65 +.db 160 +.f 49,65,61 +.db 160 +.f 61,65,63 +.db 160 +.f 63,59,61 +.db 160 +.f 59,57,61 +.db 160 +.f 57,55,61 +.db 160 +.f 55,53,61 +.db 160 +.f 53,51,61 +.db 160 +.f 51,49,61 +.db 160 +.f 174,90,175 +.db 160 +.f 172,89,174 +.db 160 +.f 172,85,87 +.db 160 +.f 170,83,85 +.db 160 +.f 168,81,83 +.db 160 +.f 146,79,164 +.db 160 +.f 94,146,148 +.db 160 +.f 150,94,148 +.db 160 +.f 98,150,152 +.db 160 +.f 100,152,154 +.db 160 +.f 102,154,156 +.db 160 +.f 158,102,156 +.db 160 +.f 106,158,160 +.db 160 +.f 108,160,162 +.db 160 +.f 66,162,67 +.db 160 +.f 128,162,160 +.db 160 +.f 158,128,160 +.db 160 +.f 156,179,158 +.db 160 +.f 154,126,156 +.db 160 +.f 152,124,154 +.db 160 +.f 150,122,152 +.db 160 +.f 148,120,150 +.db 160 +.f 146,118,148 +.db 160 +.f 164,116,146 +.db 160 +.f 176,114,164 +.db 160 +.f 162,112,67 +.db 160 +.f 177,112,183 +.db 160 +.f 181,177,183 +.db 160 +.f 175,135,174 +.db 160 +.f 174,133,172 +.db 160 +.f 133,170,172 +.db 160 +.f 185,166,168 +.db 160 +.f 168,131,185 +.db 160 +.f 189,187,188 +.db 160 +.f 187,68,188 +.db 160 +.f 131,68,185 +.db 160 +.f 191,142,144 +.db 160 +.f 193,140,142 +.db 160 +.f 197,140,195 +.db 160 +.f 70,138,137 +.db 160 +.f 70,138,197 +.db 160 +.f 144,69,191 +.db 160 +.f 191,207,206 +.db 160 +.f 200,70,197 +.db 160 +.f 202,197,195 +.db 160 +.f 202,193,204 +.db 160 +.f 206,193,191 +.db 160 +.f 204,200,202 +.db 160 +.f 206,198,204 +.db 160 +.f 164,138,176 +.db 160 +.f 211,140,164 +.db 160 +.f 144,211,213 +.db 160 +.f 187,213,166 +.db 160 +.f 209,166,213 +.db 160 +.f 215,213,211 +.db 160 +.f 211,79,215 +.db 160 +.f 129,222,71 +.db 160 +.f 222,133,220 +.db 160 +.f 220,135,218 +.db 160 +.f 218,136,216 +.db 160 +.f 218,230,229 +.db 160 +.f 227,218,229 +.db 160 +.f 225,220,227 +.db 160 +.f 71,225,223 +.db 160 +.f 229,223,225 +.db 160 +.f 227,229,225 +.db 160 +.f 234,183,232 +.db 160 +.f 232,112,254 +.db 160 +.f 112,256,254 +.db 160 +.f 114,234,252 +.db 160 +.f 250,114,252 +.db 160 +.f 248,116,250 +.db 160 +.f 246,118,248 +.db 160 +.f 244,120,246 +.db 160 +.f 124,244,242 +.db 160 +.f 126,242,240 +.db 160 +.f 236,126,240 +.db 160 +.f 238,179,236 +.db 160 +.f 256,128,238 +.db 160 +.f 256,276,258 +.db 160 +.f 276,236,278 +.db 160 +.f 236,274,278 +.db 160 +.f 240,272,274 +.db 160 +.f 272,244,270 +.db 160 +.f 244,268,270 +.db 160 +.f 268,248,266 +.db 160 +.f 248,264,266 +.db 160 +.f 250,262,264 +.db 160 +.f 262,234,280 +.db 160 +.f 260,256,258 +.db 160 +.f 282,254,260 +.db 160 +.f 280,232,282 +.db 160 +.f 284,66,72 +.db 160 +.f 286,108,284 +.db 160 +.f 104,286,288 +.db 160 +.f 102,288,290 +.db 160 +.f 100,290,292 +.db 160 +.f 294,100,292 +.db 160 +.f 96,294,296 +.db 160 +.f 298,96,296 +.db 160 +.f 300,94,298 +.db 160 +.f 308,338,328 +.db 160 +.f 307,336,338 +.db 160 +.f 306,340,336 +.db 160 +.f 305,89,340 +.db 160 +.f 340,87,334 +.db 160 +.f 334,85,330 +.db 160 +.f 330,83,332 +.db 160 +.f 338,330,332 +.db 160 +.f 334,336,340 +.db 160 +.f 332,328,338 +.db 160 +.f 332,81,326 +.db 160 +.f 342,215,344 +.db 160 +.f 326,209,342 +.db 160 +.f 215,346,344 +.db 160 +.f 346,92,300 +.db 160 +.f 324,303,352 +.db 160 +.f 352,77,350 +.db 160 +.f 348,77,304 +.db 160 +.f 328,304,308 +.db 160 +.f 328,342,348 +.db 160 +.f 318,296,310 +.db 160 +.f 316,76,324 +.db 160 +.f 358,302,356 +.db 160 +.f 354,302,74 +.db 160 +.f 316,74,75 +.db 160 +.f 362,292,364 +.db 160 +.f 368,364,366 +.db 160 +.f 370,366,372 +.db 160 +.f 376,372,374 +.db 160 +.f 378,376,374 +.db 160 +.f 374,316,378 +.db 160 +.f 372,354,374 +.db 160 +.f 366,356,372 +.db 160 +.f 364,358,366 +.db 160 +.f 292,360,364 +.db 160 +.f 360,301,358 +.db 160 +.f 288,284,290 +.db 160 +.f 360,284,73 +.db 160 +.f 73,284,72 +.db 160 +.f 296,362,310 +.db 160 +.f 368,310,362 +.db 160 +.f 370,312,368 +.db 160 +.f 376,382,370 +.db 160 +.f 350,384,386 +.db 160 +.f 384,320,386 +.db 160 +.f 384,298,318 +.db 160 +.f 342,300,384 +.db 160 +.f 384,348,342 +.db 160 +.f 344,346,300 +.db 160 +.f 322,378,380 +.db 160 +.f 378,324,380 +.db 160 +.f 386,322,380 +.db 160 +.f 352,386,380 +.db 160 +.f 352,380,324 +.db 160 +.f 388,402,414 +.db 160 +.f 404,400,398 +.db 160 +.f 404,396,406 +.db 160 +.f 406,394,408 +.db 160 +.f 408,392,410 +.db 160 +.f 412,392,390 +.db 160 +.f 418,410,412 +.db 160 +.f 420,408,410 +.db 160 +.f 424,408,422 +.db 160 +.f 426,406,424 +.db 160 +.f 428,404,426 +.db 160 +.f 416,402,428 +.db 160 +.f 320,442,444 +.db 160 +.f 390,444,412 +.db 160 +.f 442,310,312 +.db 160 +.f 414,382,388 +.db 160 +.f 440,412,444 +.db 160 +.f 446,440,444 +.db 160 +.f 438,434,436 +.db 160 +.f 448,434,446 +.db 160 +.f 448,450,432 +.db 160 +.f 430,416,450 +.db 160 +.f 430,312,382 +.db 160 +.f 442,448,446 +.db 160 +.f 446,444,442 +.db 160 +.f 452,416,476 +.db 160 +.f 432,452,462 +.db 160 +.f 460,432,462 +.db 160 +.f 436,460,458 +.db 160 +.f 438,458,456 +.db 160 +.f 454,438,456 +.db 160 +.f 474,440,454 +.db 160 +.f 476,428,464 +.db 160 +.f 464,426,466 +.db 160 +.f 466,424,468 +.db 160 +.f 424,470,468 +.db 160 +.f 422,472,470 +.db 160 +.f 420,474,472 +.db 160 +.f 456,478,480 +.db 160 +.f 480,484,482 +.db 160 +.f 488,484,486 +.db 160 +.f 488,492,490 +.db 160 +.f 486,464,492 +.db 160 +.f 484,476,486 +.db 160 +.f 462,484,478 +.db 160 +.f 462,458,460 +.db 160 +.f 474,456,480 +.db 160 +.f 480,472,474 +.db 160 +.f 488,472,482 +.db 160 +.f 490,470,488 +.db 160 +.f 490,466,468 +.db 160 +.f 466,492,464 +.db 160 +.f 504,392,502 +.db 160 +.f 502,394,500 +.db 160 +.f 394,498,500 +.db 160 +.f 396,496,498 +.db 160 +.f 398,494,496 +.db 160 +.f 400,506,494 +.db 160 +.f 502,506,504 +.db 160 +.f 500,494,502 +.db 160 +.f 500,498,496 +.db 160 +.f 382,506,388 +.db 160 +.f 504,314,322 +.db 160 +.f 504,320,390 +.db 160 +.f 3,1,47 +.db 160 +.f 5,3,45 +.db 160 +.f 7,9,3 +.db 160 +.f 9,11,1 +.db 160 +.f 15,13,11 +.db 160 +.f 17,15,9 +.db 160 +.f 20,18,16 +.db 160 +.f 21,15,17 +.db 160 +.f 21,23,13 +.db 160 +.f 27,25,23 +.db 160 +.f 26,28,18 +.db 160 +.f 27,21,19 +.db 160 +.f 32,30,28 +.db 160 +.f 33,27,29 +.db 160 +.f 35,25,27 +.db 160 +.f 37,35,33 +.db 160 +.f 38,40,30 +.db 160 +.f 39,33,31 +.db 160 +.f 45,39,41 +.db 160 +.f 47,37,39 +.db 160 +.f 37,47,49 +.db 160 +.f 35,37,51 +.db 160 +.f 25,35,53 +.db 160 +.f 23,25,55 +.db 160 +.f 59,13,23 +.db 160 +.f 63,11,13 +.db 160 +.f 65,1,11 +.db 160 +.f 49,47,1 +.db 160 +.f 174,89,90 +.db 160 +.f 172,87,89 +.db 160 +.f 172,170,85 +.db 160 +.f 170,168,83 +.db 160 +.f 168,166,81 +.db 160 +.f 146,92,79 +.db 160 +.f 94,92,146 +.db 160 +.f 150,96,94 +.db 160 +.f 98,96,150 +.db 160 +.f 100,98,152 +.db 160 +.f 102,100,154 +.db 160 +.f 158,104,102 +.db 160 +.f 106,104,158 +.db 160 +.f 108,106,160 +.db 160 +.f 66,108,162 +.db 160 +.f 128,110,162 +.db 160 +.f 158,179,128 +.db 160 +.f 156,126,179 +.db 160 +.f 154,124,126 +.db 160 +.f 152,122,124 +.db 160 +.f 150,120,122 +.db 160 +.f 148,118,120 +.db 160 +.f 146,116,118 +.db 160 +.f 164,114,116 +.db 160 +.f 176,181,114 +.db 160 +.f 162,110,112 +.db 160 +.f 177,67,112 +.db 160 +.f 181,176,177 +.db 160 +.f 175,136,135 +.db 160 +.f 174,135,133 +.db 160 +.f 133,131,170 +.db 160 +.f 185,187,166 +.db 160 +.f 168,170,131 +.db 160 +.f 189,144,187 +.db 160 +.f 187,185,68 +.db 160 +.f 131,129,68 +.db 160 +.f 191,193,142 +.db 160 +.f 193,195,140 +.db 160 +.f 197,138,140 +.db 160 +.f 144,189,69 +.db 160 +.f 191,69,207 +.db 160 +.f 200,198,70 +.db 160 +.f 202,200,197 +.db 160 +.f 202,195,193 +.db 160 +.f 206,204,193 +.db 160 +.f 204,198,200 +.db 160 +.f 206,207,198 +.db 160 +.f 164,140,138 +.db 160 +.f 211,142,140 +.db 160 +.f 144,142,211 +.db 160 +.f 187,144,213 +.db 160 +.f 209,81,166 +.db 160 +.f 215,209,213 +.db 160 +.f 211,164,79 +.db 160 +.f 129,131,222 +.db 160 +.f 222,131,133 +.db 160 +.f 220,133,135 +.db 160 +.f 218,135,136 +.db 160 +.f 218,216,230 +.db 160 +.f 227,220,218 +.db 160 +.f 225,222,220 +.db 160 +.f 71,223,224 +.db 160 +.f 71,222,225 +.db 160 +.f 229,230,223 +.db 160 +.f 234,181,183 +.db 160 +.f 232,183,112 +.db 160 +.f 112,110,256 +.db 160 +.f 114,181,234 +.db 160 +.f 250,116,114 +.db 160 +.f 248,118,116 +.db 160 +.f 246,120,118 +.db 160 +.f 244,122,120 +.db 160 +.f 124,122,244 +.db 160 +.f 126,124,242 +.db 160 +.f 236,179,126 +.db 160 +.f 238,128,179 +.db 160 +.f 256,110,128 +.db 160 +.f 256,238,276 +.db 160 +.f 276,238,236 +.db 160 +.f 236,240,274 +.db 160 +.f 240,242,272 +.db 160 +.f 272,242,244 +.db 160 +.f 244,246,268 +.db 160 +.f 268,246,248 +.db 160 +.f 248,250,264 +.db 160 +.f 250,252,262 +.db 160 +.f 262,252,234 +.db 160 +.f 260,254,256 +.db 160 +.f 282,232,254 +.db 160 +.f 280,234,232 +.db 160 +.f 284,108,66 +.db 160 +.f 286,106,108 +.db 160 +.f 104,106,286 +.db 160 +.f 102,104,288 +.db 160 +.f 100,102,290 +.db 160 +.f 294,98,100 +.db 160 +.f 96,98,294 +.db 160 +.f 298,94,96 +.db 160 +.f 300,92,94 +.db 160 +.f 308,307,338 +.db 160 +.f 307,306,336 +.db 160 +.f 306,305,340 +.db 160 +.f 305,90,89 +.db 160 +.f 340,89,87 +.db 160 +.f 334,87,85 +.db 160 +.f 330,85,83 +.db 160 +.f 338,336,330 +.db 160 +.f 334,330,336 +.db 160 +.f 332,326,328 +.db 160 +.f 332,83,81 +.db 160 +.f 342,209,215 +.db 160 +.f 326,81,209 +.db 160 +.f 215,79,346 +.db 160 +.f 346,79,92 +.db 160 +.f 324,76,303 +.db 160 +.f 352,303,77 +.db 160 +.f 348,350,77 +.db 160 +.f 328,348,304 +.db 160 +.f 328,326,342 +.db 160 +.f 318,298,296 +.db 160 +.f 316,75,76 +.db 160 +.f 358,301,302 +.db 160 +.f 354,356,302 +.db 160 +.f 316,354,74 +.db 160 +.f 362,294,292 +.db 160 +.f 368,362,364 +.db 160 +.f 370,368,366 +.db 160 +.f 376,370,372 +.db 160 +.f 378,314,376 +.db 160 +.f 374,354,316 +.db 160 +.f 372,356,354 +.db 160 +.f 366,358,356 +.db 160 +.f 364,360,358 +.db 160 +.f 292,290,360 +.db 160 +.f 360,73,301 +.db 160 +.f 288,286,284 +.db 160 +.f 360,290,284 +.db 160 +.f 296,294,362 +.db 160 +.f 368,312,310 +.db 160 +.f 370,382,312 +.db 160 +.f 376,314,382 +.db 160 +.f 350,348,384 +.db 160 +.f 384,318,320 +.db 160 +.f 384,300,298 +.db 160 +.f 342,344,300 +.db 160 +.f 322,314,378 +.db 160 +.f 378,316,324 +.db 160 +.f 386,320,322 +.db 160 +.f 352,350,386 +.db 160 +.f 388,400,402 +.db 160 +.f 404,402,400 +.db 160 +.f 404,398,396 +.db 160 +.f 406,396,394 +.db 160 +.f 408,394,392 +.db 160 +.f 412,410,392 +.db 160 +.f 418,420,410 +.db 160 +.f 420,422,408 +.db 160 +.f 424,406,408 +.db 160 +.f 426,404,406 +.db 160 +.f 428,402,404 +.db 160 +.f 416,414,402 +.db 160 +.f 320,318,442 +.db 160 +.f 390,320,444 +.db 160 +.f 442,318,310 +.db 160 +.f 414,430,382 +.db 160 +.f 440,418,412 +.db 160 +.f 446,438,440 +.db 160 +.f 438,446,434 +.db 160 +.f 448,432,434 +.db 160 +.f 448,430,450 +.db 160 +.f 430,414,416 +.db 160 +.f 430,448,312 +.db 160 +.f 442,312,448 +.db 160 +.f 452,450,416 +.db 160 +.f 432,450,452 +.db 160 +.f 460,434,432 +.db 160 +.f 436,434,460 +.db 160 +.f 438,436,458 +.db 160 +.f 454,440,438 +.db 160 +.f 474,418,440 +.db 160 +.f 476,416,428 +.db 160 +.f 464,428,426 +.db 160 +.f 466,426,424 +.db 160 +.f 424,422,470 +.db 160 +.f 422,420,472 +.db 160 +.f 420,418,474 +.db 160 +.f 456,458,478 +.db 160 +.f 480,478,484 +.db 160 +.f 488,482,484 +.db 160 +.f 488,486,492 +.db 160 +.f 486,476,464 +.db 160 +.f 484,452,476 +.db 160 +.f 462,452,484 +.db 160 +.f 462,478,458 +.db 160 +.f 474,454,456 +.db 160 +.f 480,482,472 +.db 160 +.f 488,470,472 +.db 160 +.f 490,468,470 +.db 160 +.f 490,492,466 +.db 160 +.f 504,390,392 +.db 160 +.f 502,392,394 +.db 160 +.f 394,396,498 +.db 160 +.f 396,398,496 +.db 160 +.f 398,400,494 +.db 160 +.f 400,388,506 +.db 160 +.f 502,494,506 +.db 160 +.f 500,496,494 +.db 160 +.f 382,314,506 +.db 160 +.f 504,506,314 +.db 160 +.f 504,322,320 +.db 160 +.f 46,2,44 +.db 5 +.f 44,4,42 +.db 5 +.f 2,6,4 +.db 5 +.f 0,8,2 +.db 5 +.f 10,14,8 +.db 5 +.f 8,16,6 +.db 5 +.f 12,20,14 +.db 5 +.f 22,26,20 +.db 5 +.f 34,26,24 +.db 5 +.f 36,32,34 +.db 5 +.f 44,40,38 +.db 5 +.f 46,38,36 +.db 5 +.f 36,48,46 +.db 5 +.f 34,50,36 +.db 5 +.f 24,52,34 +.db 5 +.f 22,54,24 +.db 5 +.f 22,58,56 +.db 5 +.f 12,62,58 +.db 5 +.f 10,64,62 +.db 5 +.f 0,48,64 +.db 5 +.f 60,64,48 +.db 5 +.f 62,64,60 +.db 5 +.f 60,58,62 +.db 5 +.f 60,56,58 +.db 5 +.f 60,54,56 +.db 5 +.f 60,52,54 +.db 5 +.f 60,50,52 +.db 5 +.f 60,48,50 +.db 5 +.f 173,90,88 +.db 5 +.f 171,88,86 +.db 5 +.f 84,171,86 +.db 5 +.f 82,169,84 +.db 5 +.f 80,167,82 +.db 5 +.f 78,145,163 +.db 5 +.f 93,145,91 +.db 5 +.f 93,149,147 +.db 5 +.f 97,149,95 +.db 5 +.f 99,151,97 +.db 5 +.f 101,153,99 +.db 5 +.f 101,157,155 +.db 5 +.f 105,157,103 +.db 5 +.f 107,159,105 +.db 5 +.f 66,161,107 +.db 5 +.f 127,161,109 +.db 5 +.f 127,157,159 +.db 5 +.f 155,178,125 +.db 5 +.f 153,125,123 +.db 5 +.f 151,123,121 +.db 5 +.f 149,121,119 +.db 5 +.f 147,119,117 +.db 5 +.f 145,117,115 +.db 5 +.f 163,115,113 +.db 5 +.f 113,176,163 +.db 5 +.f 161,111,109 +.db 5 +.f 111,177,182 +.db 5 +.f 180,177,176 +.db 5 +.f 134,175,173 +.db 5 +.f 132,173,171 +.db 5 +.f 132,169,130 +.db 5 +.f 165,184,167 +.db 5 +.f 130,167,184 +.db 5 +.f 189,186,143 +.db 5 +.f 186,68,184 +.db 5 +.f 130,68,129 +.db 5 +.f 141,190,143 +.db 5 +.f 139,192,141 +.db 5 +.f 196,139,138 +.db 5 +.f 143,69,189 +.db 5 +.f 190,207,69 +.db 5 +.f 70,199,196 +.db 5 +.f 196,201,194 +.db 5 +.f 201,192,194 +.db 5 +.f 192,205,190 +.db 5 +.f 203,199,198 +.db 5 +.f 198,205,203 +.db 5 +.f 138,163,176 +.db 5 +.f 139,210,163 +.db 5 +.f 143,210,141 +.db 5 +.f 186,212,143 +.db 5 +.f 208,165,80 +.db 5 +.f 214,212,208 +.db 5 +.f 78,210,214 +.db 5 +.f 129,221,130 +.db 5 +.f 132,221,219 +.db 5 +.f 134,219,217 +.db 5 +.f 136,217,216 +.db 5 +.f 217,230,216 +.db 5 +.f 217,226,228 +.db 5 +.f 219,224,226 +.db 5 +.f 71,224,221 +.db 5 +.f 223,228,224 +.db 5 +.f 224,228,226 +.db 5 +.f 182,233,231 +.db 5 +.f 111,231,253 +.db 5 +.f 111,255,109 +.db 5 +.f 113,233,180 +.db 5 +.f 113,249,251 +.db 5 +.f 115,247,249 +.db 5 +.f 117,245,247 +.db 5 +.f 119,243,245 +.db 5 +.f 123,243,121 +.db 5 +.f 125,241,123 +.db 5 +.f 125,235,239 +.db 5 +.f 178,237,235 +.db 5 +.f 127,255,237 +.db 5 +.f 255,275,237 +.db 5 +.f 235,275,277 +.db 5 +.f 235,273,239 +.db 5 +.f 239,271,241 +.db 5 +.f 243,271,269 +.db 5 +.f 243,267,245 +.db 5 +.f 247,267,265 +.db 5 +.f 247,263,249 +.db 5 +.f 249,261,251 +.db 5 +.f 233,261,279 +.db 5 +.f 255,259,257 +.db 5 +.f 253,281,259 +.db 5 +.f 231,279,281 +.db 5 +.f 66,283,72 +.db 5 +.f 107,285,283 +.db 5 +.f 103,285,105 +.db 5 +.f 101,287,103 +.db 5 +.f 99,289,101 +.db 5 +.f 99,293,291 +.db 5 +.f 95,293,97 +.db 5 +.f 95,297,295 +.db 5 +.f 93,299,297 +.db 5 +.f 308,337,307 +.db 5 +.f 307,335,306 +.db 5 +.f 306,339,305 +.db 5 +.f 88,305,339 +.db 5 +.f 86,339,333 +.db 5 +.f 84,333,329 +.db 5 +.f 82,329,331 +.db 5 +.f 329,337,331 +.db 5 +.f 333,335,329 +.db 5 +.f 331,327,325 +.db 5 +.f 80,331,325 +.db 5 +.f 341,214,208 +.db 5 +.f 325,208,80 +.db 5 +.f 214,345,78 +.db 5 +.f 345,91,78 +.db 5 +.f 323,303,76 +.db 5 +.f 351,77,303 +.db 5 +.f 77,347,304 +.db 5 +.f 304,327,308 +.db 5 +.f 327,341,325 +.db 5 +.f 295,317,309 +.db 5 +.f 315,76,75 +.db 5 +.f 357,302,301 +.db 5 +.f 302,353,74 +.db 5 +.f 74,315,75 +.db 5 +.f 291,361,363 +.db 5 +.f 363,367,365 +.db 5 +.f 365,369,371 +.db 5 +.f 371,375,373 +.db 5 +.f 377,375,313 +.db 5 +.f 315,373,377 +.db 5 +.f 353,371,373 +.db 5 +.f 355,365,371 +.db 5 +.f 357,363,365 +.db 5 +.f 291,359,289 +.db 5 +.f 359,301,73 +.db 5 +.f 283,287,289 +.db 5 +.f 283,359,73 +.db 5 +.f 72,283,73 +.db 5 +.f 295,361,293 +.db 5 +.f 309,367,361 +.db 5 +.f 311,369,367 +.db 5 +.f 375,381,313 +.db 5 +.f 349,383,347 +.db 5 +.f 383,319,317 +.db 5 +.f 297,383,317 +.db 5 +.f 299,341,383 +.db 5 +.f 341,347,383 +.db 5 +.f 299,345,343 +.db 5 +.f 321,377,313 +.db 5 +.f 377,323,315 +.db 5 +.f 385,321,319 +.db 5 +.f 351,385,349 +.db 5 +.f 323,379,351 +.db 5 +.f 387,401,399 +.db 5 +.f 399,403,397 +.db 5 +.f 403,395,397 +.db 5 +.f 405,393,395 +.db 5 +.f 407,391,393 +.db 5 +.f 391,411,389 +.db 5 +.f 409,417,411 +.db 5 +.f 407,419,409 +.db 5 +.f 423,407,405 +.db 5 +.f 425,405,403 +.db 5 +.f 427,403,401 +.db 5 +.f 401,415,427 +.db 5 +.f 319,441,317 +.db 5 +.f 389,443,319 +.db 5 +.f 309,441,311 +.db 5 +.f 381,413,387 +.db 5 +.f 411,439,443 +.db 5 +.f 445,439,437 +.db 5 +.f 433,437,435 +.db 5 +.f 447,433,431 +.db 5 +.f 447,449,429 +.db 5 +.f 429,415,413 +.db 5 +.f 311,429,381 +.db 5 +.f 441,447,311 +.db 5 +.f 441,443,445 +.db 5 +.f 415,451,475 +.db 5 +.f 431,451,449 +.db 5 +.f 431,459,461 +.db 5 +.f 435,459,433 +.db 5 +.f 437,457,435 +.db 5 +.f 437,453,455 +.db 5 +.f 439,473,453 +.db 5 +.f 427,475,463 +.db 5 +.f 425,463,465 +.db 5 +.f 423,465,467 +.db 5 +.f 423,469,421 +.db 5 +.f 421,471,419 +.db 5 +.f 419,473,417 +.db 5 +.f 455,477,457 +.db 5 +.f 479,483,477 +.db 5 +.f 483,487,485 +.db 5 +.f 487,491,485 +.db 5 +.f 463,485,491 +.db 5 +.f 483,475,451 +.db 5 +.f 461,483,451 +.db 5 +.f 457,461,459 +.db 5 +.f 473,455,453 +.db 5 +.f 471,479,473 +.db 5 +.f 487,471,469 +.db 5 +.f 489,469,467 +.db 5 +.f 465,489,467 +.db 5 +.f 463,491,465 +.db 5 +.f 391,503,501 +.db 5 +.f 393,501,499 +.db 5 +.f 393,497,395 +.db 5 +.f 395,495,397 +.db 5 +.f 397,493,399 +.db 5 +.f 399,505,387 +.db 5 +.f 501,505,493 +.db 5 +.f 493,499,501 +.db 5 +.f 495,497,499 +.db 5 +.f 381,505,313 +.db 5 +.f 313,503,321 +.db 5 +.f 319,503,389 +.db 5 +.f 46,0,2 +.db 5 +.f 44,2,4 +.db 5 +.f 2,8,6 +.db 5 +.f 0,10,8 +.db 5 +.f 10,12,14 +.db 5 +.f 8,14,16 +.db 5 +.f 12,22,20 +.db 5 +.f 22,24,26 +.db 5 +.f 34,32,26 +.db 5 +.f 36,38,32 +.db 5 +.f 44,42,40 +.db 5 +.f 46,44,38 +.db 5 +.f 36,50,48 +.db 5 +.f 34,52,50 +.db 5 +.f 24,54,52 +.db 5 +.f 22,56,54 +.db 5 +.f 22,12,58 +.db 5 +.f 12,10,62 +.db 5 +.f 10,0,64 +.db 5 +.f 0,46,48 +.db 5 +.f 173,175,90 +.db 5 +.f 171,173,88 +.db 5 +.f 84,169,171 +.db 5 +.f 82,167,169 +.db 5 +.f 80,165,167 +.db 5 +.f 78,91,145 +.db 5 +.f 93,147,145 +.db 5 +.f 93,95,149 +.db 5 +.f 97,151,149 +.db 5 +.f 99,153,151 +.db 5 +.f 101,155,153 +.db 5 +.f 101,103,157 +.db 5 +.f 105,159,157 +.db 5 +.f 107,161,159 +.db 5 +.f 66,67,161 +.db 5 +.f 127,159,161 +.db 5 +.f 127,178,157 +.db 5 +.f 155,157,178 +.db 5 +.f 153,155,125 +.db 5 +.f 151,153,123 +.db 5 +.f 149,151,121 +.db 5 +.f 147,149,119 +.db 5 +.f 145,147,117 +.db 5 +.f 163,145,115 +.db 5 +.f 113,180,176 +.db 5 +.f 161,67,111 +.db 5 +.f 111,67,177 +.db 5 +.f 180,182,177 +.db 5 +.f 134,136,175 +.db 5 +.f 132,134,173 +.db 5 +.f 132,171,169 +.db 5 +.f 165,186,184 +.db 5 +.f 130,169,167 +.db 5 +.f 189,188,186 +.db 5 +.f 186,188,68 +.db 5 +.f 130,184,68 +.db 5 +.f 141,192,190 +.db 5 +.f 139,194,192 +.db 5 +.f 196,194,139 +.db 5 +.f 70,196,138 +.db 5 +.f 143,190,69 +.db 5 +.f 190,205,207 +.db 5 +.f 70,198,199 +.db 5 +.f 196,199,201 +.db 5 +.f 201,203,192 +.db 5 +.f 192,203,205 +.db 5 +.f 203,201,199 +.db 5 +.f 198,207,205 +.db 5 +.f 138,139,163 +.db 5 +.f 139,141,210 +.db 5 +.f 143,212,210 +.db 5 +.f 186,165,212 +.db 5 +.f 208,212,165 +.db 5 +.f 214,210,212 +.db 5 +.f 78,163,210 +.db 5 +.f 129,71,221 +.db 5 +.f 132,130,221 +.db 5 +.f 134,132,219 +.db 5 +.f 136,134,217 +.db 5 +.f 217,228,230 +.db 5 +.f 217,219,226 +.db 5 +.f 219,221,224 +.db 5 +.f 223,230,228 +.db 5 +.f 182,180,233 +.db 5 +.f 111,182,231 +.db 5 +.f 111,253,255 +.db 5 +.f 113,251,233 +.db 5 +.f 113,115,249 +.db 5 +.f 115,117,247 +.db 5 +.f 117,119,245 +.db 5 +.f 119,121,243 +.db 5 +.f 123,241,243 +.db 5 +.f 125,239,241 +.db 5 +.f 125,178,235 +.db 5 +.f 178,127,237 +.db 5 +.f 127,109,255 +.db 5 +.f 255,257,275 +.db 5 +.f 235,237,275 +.db 5 +.f 235,277,273 +.db 5 +.f 239,273,271 +.db 5 +.f 243,241,271 +.db 5 +.f 243,269,267 +.db 5 +.f 247,245,267 +.db 5 +.f 247,265,263 +.db 5 +.f 249,263,261 +.db 5 +.f 233,251,261 +.db 5 +.f 255,253,259 +.db 5 +.f 253,231,281 +.db 5 +.f 231,233,279 +.db 5 +.f 66,107,283 +.db 5 +.f 107,105,285 +.db 5 +.f 103,287,285 +.db 5 +.f 101,289,287 +.db 5 +.f 99,291,289 +.db 5 +.f 99,97,293 +.db 5 +.f 95,295,293 +.db 5 +.f 95,93,297 +.db 5 +.f 93,91,299 +.db 5 +.f 308,327,337 +.db 5 +.f 307,337,335 +.db 5 +.f 306,335,339 +.db 5 +.f 88,90,305 +.db 5 +.f 86,88,339 +.db 5 +.f 84,86,333 +.db 5 +.f 82,84,329 +.db 5 +.f 329,335,337 +.db 5 +.f 333,339,335 +.db 5 +.f 331,337,327 +.db 5 +.f 80,82,331 +.db 5 +.f 341,343,214 +.db 5 +.f 325,341,208 +.db 5 +.f 214,343,345 +.db 5 +.f 345,299,91 +.db 5 +.f 323,351,303 +.db 5 +.f 351,349,77 +.db 5 +.f 77,349,347 +.db 5 +.f 304,347,327 +.db 5 +.f 327,347,341 +.db 5 +.f 295,297,317 +.db 5 +.f 315,323,76 +.db 5 +.f 357,355,302 +.db 5 +.f 302,355,353 +.db 5 +.f 74,353,315 +.db 5 +.f 291,293,361 +.db 5 +.f 363,361,367 +.db 5 +.f 365,367,369 +.db 5 +.f 371,369,375 +.db 5 +.f 377,373,375 +.db 5 +.f 315,353,373 +.db 5 +.f 353,355,371 +.db 5 +.f 355,357,365 +.db 5 +.f 357,359,363 +.db 5 +.f 291,363,359 +.db 5 +.f 359,357,301 +.db 5 +.f 283,285,287 +.db 5 +.f 283,289,359 +.db 5 +.f 295,309,361 +.db 5 +.f 309,311,367 +.db 5 +.f 311,381,369 +.db 5 +.f 375,369,381 +.db 5 +.f 349,385,383 +.db 5 +.f 383,385,319 +.db 5 +.f 297,299,383 +.db 5 +.f 299,343,341 +.db 5 +.f 321,379,377 +.db 5 +.f 377,379,323 +.db 5 +.f 385,379,321 +.db 5 +.f 351,379,385 +.db 5 +.f 387,413,401 +.db 5 +.f 399,401,403 +.db 5 +.f 403,405,395 +.db 5 +.f 405,407,393 +.db 5 +.f 407,409,391 +.db 5 +.f 391,409,411 +.db 5 +.f 409,419,417 +.db 5 +.f 407,421,419 +.db 5 +.f 423,421,407 +.db 5 +.f 425,423,405 +.db 5 +.f 427,425,403 +.db 5 +.f 401,413,415 +.db 5 +.f 319,443,441 +.db 5 +.f 389,411,443 +.db 5 +.f 309,317,441 +.db 5 +.f 381,429,413 +.db 5 +.f 411,417,439 +.db 5 +.f 445,443,439 +.db 5 +.f 433,445,437 +.db 5 +.f 447,445,433 +.db 5 +.f 447,431,449 +.db 5 +.f 429,449,415 +.db 5 +.f 311,447,429 +.db 5 +.f 441,445,447 +.db 5 +.f 415,449,451 +.db 5 +.f 431,461,451 +.db 5 +.f 431,433,459 +.db 5 +.f 435,457,459 +.db 5 +.f 437,455,457 +.db 5 +.f 437,439,453 +.db 5 +.f 439,417,473 +.db 5 +.f 427,415,475 +.db 5 +.f 425,427,463 +.db 5 +.f 423,425,465 +.db 5 +.f 423,467,469 +.db 5 +.f 421,469,471 +.db 5 +.f 419,471,473 +.db 5 +.f 455,479,477 +.db 5 +.f 479,481,483 +.db 5 +.f 483,481,487 +.db 5 +.f 487,489,491 +.db 5 +.f 463,475,485 +.db 5 +.f 483,485,475 +.db 5 +.f 461,477,483 +.db 5 +.f 457,477,461 +.db 5 +.f 473,479,455 +.db 5 +.f 471,481,479 +.db 5 +.f 487,481,471 +.db 5 +.f 489,487,469 +.db 5 +.f 465,491,489 +.db 5 +.f 391,389,503 +.db 5 +.f 393,391,501 +.db 5 +.f 393,499,497 +.db 5 +.f 395,497,495 +.db 5 +.f 397,495,493 +.db 5 +.f 399,493,505 +.db 5 +.f 501,503,505 +.db 5 +.f 493,495,499 +.db 5 +.f 381,387,505 +.db 5 +.f 313,505,503 +.db 5 +.f 319,321,503 +.db 5 diff --git a/vxPipeline.ez80 b/vxPipeline.ez80 index 3d33092..4e3899b 100644 --- a/vxPipeline.ez80 +++ b/vxPipeline.ez80 @@ -106,14 +106,25 @@ vxCmdExeLoop: cp VX_GEOMETRY_TI9 jr nc, vxCmdFormatTex vxCmdFormatCol: - ld a, (iy+9) ; color - ld hl, (iy+0) - add hl, bc - ex de, hl - ld hl, (iy+3) - add hl, bc + ld ix, (iy+0) + add ix, bc + ld a, (ix+VX_VERTEX_UNIFORM) + lea hl, ix+0 + ld ix, (iy+3) + add ix, bc + add a, (ix+VX_VERTEX_UNIFORM) + lea de, ix+0 ld ix, (iy+6) add ix, bc + add a, (ix+VX_VERTEX_UNIFORM) + ld b, a + ld c, 83 + mlt bc + ld a, b + ld bc, $D00000 + ld c, (iy+9) + ld b, a + ld a, (bc) lea bc, ix+0 call vxFlatTriangle pop iy @@ -223,19 +234,19 @@ _InRange: ld ix, (iy+0) add ix, bc - ld de, (iy+10) - ld (ix+VX_VERTEX_GPR0), e - ld (ix+VX_VERTEX_GPR1), d + ld hl, (iy+10) + ld (ix+VX_VERTEX_GPR0), l + ld (ix+VX_VERTEX_GPR1), h ld a, (ix+VX_VERTEX_UNIFORM) - lea de, ix+0 + lea hl, ix+0 ld ix, (iy+3) add ix, bc - ld hl, (iy+12) - ld (ix+VX_VERTEX_GPR0), l - ld (ix+VX_VERTEX_GPR1), h + ld de, (iy+12) + ld (ix+VX_VERTEX_GPR0), e + ld (ix+VX_VERTEX_GPR1), d add a, (ix+VX_VERTEX_UNIFORM) - lea hl, ix+0 + lea de, ix+0 ld ix, (iy+6) add ix, bc diff --git a/vxRaster.ez80 b/vxRaster.ez80 index a35af77..91a0b34 100644 --- a/vxRaster.ez80 +++ b/vxRaster.ez80 @@ -19,101 +19,23 @@ vxRasterPixelEntry: ret ; [x] vxFlatPolygon: - sub a, 3 - ret c - inc a + sub a, 2 ld b, a ld hl, (iy+0) vxFlatCyclicLoop: push bc - ld bc, (iy+3) - ld de, (iy+6) + ld de, (iy+3) + ld bc, (iy+6) push hl push iy - ld a, (bc) - or (hl) - ex de, hl - or (hl) - jr nz, vxFlatDiscard - push hl - push de push bc - inc hl \ inc de \ inc bc push de - pop ix - push bc - pop iy - push hl - inc hl - ld de, (hl) - ld hl, (iy+1) - or a, a - sbc hl, de - ld b, h - ld c, l - - pop hl - ld a, (ix) - sub (hl) - push hl - - ld h, b - ld l, a - mlt hl - jr nc, $+5 - or a, a - sbc hl, bc - bit 7, b - ld b, a - jr z, $+5 - ld a, h - sub a, b - ld h, a - slhl - mlt bc - add hl, bc - ex de, hl - pop hl - - push hl - inc hl - ld bc, (hl) - ld hl, (ix+1) - or a, a - sbc hl, bc - ld b, h - ld c, l - - pop hl - ld a, (iy) - sub (hl) - - ld h, b - ld l, a - mlt hl - jr nc, $+5 - or a, a - sbc hl, bc - bit 7, b - ld b, a - jr z, $+5 - ld a, h - sub a, b - ld h, a - slhl - mlt bc - add hl, bc - - or a, a - sbc hl, de - - pop bc + call vxNClip pop de + pop bc pop hl - - call p, vxFlatTrianglePC -vxFlatDiscard: + call c,vxFlatTriangleNoClip pop iy lea iy, iy+3 pop hl @@ -122,7 +44,6 @@ vxFlatDiscard: jp nz, vxFlatCyclicLoop ret - vxFlatTriangle: ld (IRasterRBG8), a @@ -132,7 +53,7 @@ vxFlatTriangle: or (hl) ld iy, vxFlatPolygon jp nz, vxClipTriangle -vxFlatTrianglePC: +vxFlatTriangleNoClip: inc hl \ inc de \ inc bc ld a, (de) diff --git a/vxShaderInterpolation.ez80 b/vxShaderInterpolation.ez80 index 47fd9b5..111688e 100644 --- a/vxShaderInterpolation.ez80 +++ b/vxShaderInterpolation.ez80 @@ -601,8 +601,8 @@ vxTexturePolygon: ld hl, (iy+0) vxTextureCyclicLoop: push bc - ld bc, (iy+3) - ld de, (iy+6) + ld de, (iy+3) + ld bc, (iy+6) push hl push iy push hl diff --git a/vxVertexShader.inc b/vxVertexShader.inc index 033b055..f88073f 100644 --- a/vxVertexShader.inc +++ b/vxVertexShader.inc @@ -85,7 +85,7 @@ vxModelView: .db 0,0,0 .dl 0,0,0 vxLight0: - .db 0,0,64 + .db 0,0,-64 .db 0 .dw 0,0,0