From 3c8465bdadac1ec97cbb183a4b699e0615b2e716 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C=20=D0=A4=D0=B5=D0=B4=D0=BE?= =?UTF-8?q?=D1=81=D0=B5=D0=B5=D0=B2?= Date: Mon, 26 Oct 2026 20:43:19 +0300 Subject: [PATCH] fix(hell_tower): calibrate menu to 6 floors, fix UI text overflow, and remove casino prefix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Align tower progression and cursor coordinates strictly to the 6 floors: Coin, Dice, Cards, Russian Roulette, Roulette, Buckshot - Recalibrate tower cursor Y positions for each tier (205, 174, 143, 112, 81, 50) - Reformat UI text, labels, and action buttons to strictly fit within card and sub-card boundaries without clipping - Remove redundant 'КАЗИНО 3D' prefix from header banner, keeping bold centered 'АДСКАЯ БАШНЯ' - Rebuild shipping binaries and verify complete 6-floor test suite --- build/graphics/poker.exe | Bin 1457152 -> 1456640 bytes poker.asm | 2 +- poker.exe | Bin 1457152 -> 1456640 bytes poker.obj | Bin 1643217 -> 1642144 bytes src_graphics/hell_tower.inc | 1173 ++++++++++----------- src_graphics/hell_tower_data.inc | 178 ++-- tools/tests/render_hell_tower_preview.py | 200 ++-- tools/tests/test_hell_tower_runthrough.py | 6 +- 8 files changed, 791 insertions(+), 768 deletions(-) diff --git a/build/graphics/poker.exe b/build/graphics/poker.exe index 6a31bf6c460cc5aef21a5961440e8460cf1a65dc..5e91e8bf250fbf4858bcacadf535cf9679522d56 100644 GIT binary patch delta 45353 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 U<=CIu8eFYvTrBtLMEd>z125;*d;kCd delta 45810 zcmb@vd3;P){|A20oeU9)39=y}LTs@ovBeOTsA>?qT1r)Q3`)tMwh<$UkDfIT2-~Lbt2m8Bdw@qe(%pYcV?n}zQ5l;zx36)pYz$y=X}n-T39}O zVa4!O#~ZeBU9>C4-z7z5)me@9%Fn8zoa@C1ef729=d#t>6gHBL*ABD(9VX8NA=IQO zzt&QeKfze(FI7>BTTg#s^3>-QW%V!+Rz1a(;rL!F?59Sm?4dRxpb7h0%L{0p^2udY zaaAZ;b?u5RFtn$VX-jR}Q}HA#fcbn7%jy{vPjVP=9!H=-9IO2v&|7VOSxYg;vp==x z%njIaE!!N;3bhU9$i`PMsmkHK0gAn);~C2t#YPtX7E^*UDAH65g$DGM-?@D+d#-{*8(khYQrBj-O`fX(e_)K2Twia zqwX)fXZg&;c5B;e=Z!ag4@-ydvt?!WRP4-X8B)Jf728Ior8nFHVQQr!ZSyL#)sbk& ztjDEQl3wALzNO`dMKn8mLg;XGew=wf(6-rr=Kp9H!y;O)2X>#`+fcbEG{k+&wf|b? zK)&g=$CH#9IjAcRkBlf`O=P5XC~ZuI%N$vctVg(07o)pn=vzdPl&S9RgP zn)XrEjOkig^GR@zHoQe6=h%}&6u#gKWSP|lkYz>N7Q!T3DjddNy9Y~?#}msCu#|n9 zSUl$0k<{A^8agch{|CnoNkF`0f|Aw5lPqlcWf#f`#co%4EyQp4T5v{-Pv{YuF+CTB zbs81^Gk@09o?c}idUL+AC>4Rutr|P0p_DSq;wVa4EN{0>RsP(+Fl$^sB_+i? z7SwrN6U4WGP$gy|0CP*sSs>D1iFvjG*%^A1ur+W3@2)7N`#`i!rDXSng?vJ}$5Uda z)O7{H-h}VlsyZn;N3eYuFWM@j?v-t&Sj%CMC2tWJkrN1ypWjdd?dJ!V2z%OtRyJP3 zR7J{$OPD0fGVIOx3sNJr58}@l+LH_=3k+=y#xF3`2^A5QR0k2P&1pT|@KH`XDE5d{ zyR4M6&GQ)^e6x&pR}ZyNzAbz z#Y~)znP~Px98L1c1(S;F6wJP?&2H1sDTD11MDCd>V}$G9TMgIWup<3a42ht>v*c0k z>?f8!mEy~a&ZlT)q*)e&LKbAHWep8os!x{|)wY*9{<1cyr+{;xtAaVgL|w2Yc?ofnpc3In)X^?n z`?XzUy;MnW%WuOp2nG;+Bh2c>wb=HN5q-V#UlCo34&qwh_K{s=oVKN8|Ep4(IU*}Z zD{0duO(mKU^M>|y)l{y1-oEaXULpdUi?r02oMz%A|H;Uu7PWHxlvs%_gC}6N0+HBQ zh!{qlA$7+jt&&k%kHoqvQa(DdZWozy(E{cs!}@7~;weSic`1kJC&c&_0tik^`-rXhI1{Z~aruE4A?dlA?yJ2i2y# zosjnNu-s+64W;3Zo+V~7iT?77FFUDPnon?932n_lu~CWT1EE>eNm1cGftC_8`30Jk zk^3Y}$vS8z8K5dPlo62iHMSf6w3ubqS943#z(W5i6*Jh9(v#o=yBSC7H_T{D$tZ?fWllQ#-bdrldYw znSop=7|I2M8hb@s-*G~B*<_MSxb>#Lsmo>dM)ukKJkmkhh42g-3$$_-*KwbAJz|ao zm$mT~?TJp^gQ+U?o>XkgTQ!1fd7YX!lS;`1zPz+@J8XXmN?RC8QF<VcYWqk7KDC*c18I$FU~D zCh>KTV*?1A%w3OTF-)Zq%aj6jj2N@7JdU=t!Cp>!(}C$Vp;iys4^6z zNMbzS{xf?0g$TQ>!X1ttJP0YuDYh&g3Eq6N^TeeBvd1XI%K*wo)uj@Tc>xQ%64g2y7#Q}!_UZ&g{zP%&t;E?UwT)i z+H3pa=fZBO!&wKZU5x!VUwTYC4Q%W$@h7i%JPWO)Mahbg;~vN!>Cvx>^X;p$7?zkf z`k-wFgmzz$v+79zRqO?k`Gi$1iyNbaQ6trDjfxy{JdHtgq6AaXFg25)9qoCH1jnFq z){@{H)X1s;>!KLuEG8>sdBti{W660H!F~CwwOPYst*a4}D1hmdr@I;p3UDso-c`|l zzIg{#rh>=0)(}^TdF@p#^r=YaTC$ZQpdM9ddETcbMT}e*)DksUXrWp$pK1lEMBvqF z2s9ULC1y%Cf~dS+U)ihhd8g6+6}$@)0#ij`69p(b+nSzEg_k!%5B}m?n8N3Ov8*R5 z8A)eb={L0sYQv%sD3v-XoKNEJaMEZxo*TY}LVI18n4{_rioDFcgOZbi^kI13Ss3c= z*$OD-;8lHUqyBTiVyl2*?<*L6eZ>n*V>~6@n*dk z1{F0B1)&=E>}CpYsHkzfz_IzWP>_8}?S?BNZZlp=qb{iZ&Z ze8N3m@*n4V&&Tz6$tEr;*~?&6{CFNv>fpmlnXrvmUm~ka{9S^l zOL#58GXaywy&3AwZhs1b$Tp9e2reuAwz90aC*mL}%IFe71VHI_DzaYD``_R6;nmm-$k3E+7ZnkBVh8(X; z>f2fiN!unuPo=o4Bl~UR$HVF#*R_oUBNC_x+o#(b^A9R86u?TECwYNDNnM%`yXcyB zd0>O*sPRx7LAxmbKc}C8gFMMTC4In7^L~Z;Xe5%j+26S<>#y?<0qwa#wV$RsWS?%k z1tpwg-L3Q_%2z&B0ar!X%y3slvzhf>ym@YVMLt!d-1PFY=-w2f%0{6YE*?(d>DRQ~ zgN}|RJ5thbJF2^f+{z87P+5(X^jnT+sb(EgFOF#L7@;9b=yb=BhO+8H z9R;*GLz15p6)vlq^q=Ce2yYu9%j&(4xjYZ+g_T_{dI+y9drX!YvI}77(7I0IRK1+) zW1OnNNyd5e!Gefvmrfs7Y;#bmM47U8;46=Mu?xId+Z&W^Gkt_bKEhu_7!5*6`h!qv zQxc1fijWoTvWiq&Ru`kYrh=6z<0%H{aXjF0nB=hZ2mg>jqWlsIu4|8mMnsQ**(R?_ zq{Yv$=(^T+SVTQyP_nAa$OEum=8ba6b?v!f;m*%!^yrOwCZ=(;R!svWB!&LaUHhOf zd{D6u+6btl;CmMkb*LrgO@Js}CFcD;zC#9t-M6}5qva{iEZ726J$o>(jg&`wwpa}f{;uV2 zm_p-W5TXC^f#G#+&+rK6fyESqW$^*3c$CEIW=fu;g%EkXuOubJyN-A%;2r&uyJV96 z4)MCdZ_5b77UIDm4!HEXP(P4YI|+?)zGz2uNi#Gxry2 zv{^wsfJB-s*KUspcTy~v&`?~Km9K*r1@`7ae}P4LJ&WMu z4c;+A2V`HDMWQg*z!;&81Wkg2N>6|z2&3kRKJCTy4Fl&?1H$lck@n`u8S0Vinq^dr zc;5iwixOWSDFz7l4*2^>?b%VS9vc+A=x3&K%iksDe+&wG5SJKZTmzH67lt9N{eqN3 zd{U)YFq-IPPvzB#MRc_{g_P}6B%S|J4}LQGaLQ8No+Jeuww~fg&rGHwX19BisnGGU zpxT)nB#>S9C{Hq#Xkwr;&bxyFrBpjUI$Xu)#^{z#@|)slC)05U0ns31jpjRwO0?h> zYTy1%`Iy1K0Jbz5`QoyYBy-f0(Fq=E%E7aic;v{2cvMGsmz7#E)yv$S6bk0XPT`Ew zZy+h1*33ss<(Z^t8%Q!T6XZqOGkrY6c}wD1;o}K#43m1E^YOIhf#5N`NM)R-??YG) z1D&)zL8i#xcl-gr$k4s*;y}8{5*Ev@!apc6m&l z=L9$j6p!PU$H93qz{998B&TH6lnNjZQ}|}kKpKYqIScjV1SqtSxDB&r#SzEz!H{Am zm5y*DmetzGvGr?{Hs+X+mwwV4`_tNrv2{X4?8QsSuKk(3=2C6@*tlTYp7l76dmKkN z*RGCDX+VgD)^C;|lB_DsOu_7U!G)CZ4>ap@Q=GJ~efKxoFlN}jrVVXx=$d=}tsGBQ zoMr3$2a<5wOX6a;+#9;)PUqFruVwWSyP>9ZPD47{kv64Y!zj;_Ot8mM!Naqu3CRj{ zr&kovzPHCw-q@2&5Wm0BODZoQcCWWW?dd#I>pQMd@EBm}uf&X9-+AM@JC9@MQ^~Ts zm(uoaf>~~)2f9yNwide&xtG$`ZGxF}?WqWK9|zWSD5dX%8J&ggz*)BLbBn_Od+q~1 zW7=oU?4>C4>g4u);9g3~3n)tW(vt)}53pD17<6a6D2*u?XlPxY4^_vU(lVZJIQT_S z@;*3oMzkRcdL0rlIih$o?2l2u9*RsAf}!K<4JDp%$rAv<^Z#LnAoXJq3<2^p zEZ9kHRVC647pkk$9tcdLlK*&%)#egW6Fme!7f)4qhBYm~~b8YAg zBuE$?3<#Q?K!yU8s>1+LTUTO^5{v{z1Cpv^0ZG-30ZG*@iEm*r_}UT#dWks+5SBs! zbpj;ybrn>?rTU;WK*l0WZy#d@puiu=AA^Ze_+vOhu(rfJ3J?~!0F4DCRgV``!r6S# zWFK`JAUX8P0yI!)o=1EO!yvKHNuaQLF(7I6GC)%G3PB~+t9;OEA9XDtV>}9|u2B6h z@hyyk#3q7-<}HAv=52ta=1&C`{zpMFKole&xfqbl_x*r63e`shUlpi6E+BICNkCD; zAEyDyq3Jn6C8IC-plg6+)^Q)-EkJgsP+cwrRG)D_Q(i|(G8h{!DlKyCR9-F&TVM{?Kg>8LM5+F(K1SmwP?h5E% zLUo$pqf*gZKo&q5fTZe7KvH(Fppxd{K4_Ge>NJl9D9iVFK-+}s$%2t=ohBesodrm$ zo()Kc$33&Xuv3+ucz zpG9VDs=;ytzRZ-Lj8A0f6YZm^y`8U>qV8Y>jbnr9p?6#589~#&TpT4NOl5{ZKSRRl z+|lLk^x(U#aw};lzuPLu2oghuJN?1kR_iJ;RNQT~#>ZgU8sp4H2s^l@m{$M@b}!w1 z8)I$1wCSK_t66YY;7IFy;y&))Cr)?<)5%&aT|ERc!Tbk)?@kGniOLVT>Bj|&v!$m^ zF~pM3h|ct@z*M5cp_mPHdl$frV^n|>10 zd*BQ{)ln5;+FAC>wanjmRoj@Apk|jA9?c42;llqA$eu6w9GH-V-_(9{#D>ZJ{~2D% zV2V*|G_z3`ifPYH)ik8y#1+h@?NvObK%-Eir zn@FEG=Dr{%l8WOSoX8r+*E~nlGRFe!056x|3@lq^b|G$XhaCS%+3IT56p z;279VjW#wgGqeHo!Xi69Mxs$HmKo!o)8@^az&_Wm&TF2uYOIJb1Z$2t5>#nXau76C zbyUOrF+Y^{v$5c~RsyknbYbfJC5#TcA6l@0KE0jg3`-pgn^B5hT=>PaVhu9EUWQaJv zd!k|4fHp7-;}`v)8pIhy?6uw>V`0slohs|2eX}${tv|Z3Vrg}z)*Pjob5qzTtw(Nz znm)MjncVM9l#JGSv)D@Q-+5gaZX4vquxB+-Ua#6$hof{{#iF!LDXt|-$B)|ZR~rnt zK8(DW6^Tkf1V@cQyggXO92ff~gLq?v_zjep#A303LNk0hKoJX6NHTH{IQkRIFNa?3 z^Z0s9{gsV7jp!$$sp(2y2pd?5`7A#4N4v^`=BSPgPLynBz6xHUWgczL%JX!0qmuPj;7P6_UdQYA#KX)c=nE_t?t8q(k`ryVb5s~R`;oW zWdPK#(JOfmcLdfnVAr%))-odB5_;W7x}D%lBK3PwPM?IH-PgmY}F#yVoKAvZ#Iy`I*W3l_7yxUQ_T{ z7K@6|5__kpem(eoEbpL*S>#0xthKy}9b-_M@XOj4?>9sPb>aP_F3TlXHPBzeMGw#i z@|ix#x7Jc}dAOA9$wvu_C^G{JGd4A0Y_2xr11lR}`0)oZOzqW0JHB}}C2PWmR~Z|m z_4%l4=T|$TB=<*m4BfqXU|V5TRc@7-LHy4)gt08v;Y7QK_d(Ypth}J@{wRhOYv(^| znWPCG;gn?(6izwtw$~}|;us91RQ{F(V)@uY>wo?mz@}(z3n!>uzb;%`h^t&EZ?5el zE1%mRHyPEP-zlfIK>K6+n{+ehwa;qfQ~2-Cd@aLvM8prE&9HrZ@fX4R`p!vG&CDd; z3xvF$sXkiR=Z%dhUVaO5fh2dn{7=!`^#452#J<#qe>qM~{7L)b%hqa(riHh@{Iwdj zA?HfI>ZpcG2f-Cfuy1T{%5R4m7{;>*(~w{AVk-DJ!o=|-+KEHq>@)4gp=JZ}B$cxC zsLZ%D{)!)0PiFIA{({8Sw5y(E*LsoBKgq%q!k-c}hXsv8w=iw&;kNC9C3jU<@)+?+}Cko;<$z*n5S1J)cU3?>Qv6Y>I3|W3o}mK!@L6# zVpK?F;(k96y=7w5_brWBzpR8VeDnJ!M9I5w@+qns&3~|ZRfsO`%+r-DoPR2gN?`se zDuLQ(rxqKLbsdVxs#NA2@MD}oOC{RTK9#gA|8Xg$v-as|)i5ZcH^|$5DidY5$C(ZW z`r9Y{=)&AHDFL0Rp9w}kuJAASVxyt(SLQ(ItWT>u8hfl+oJT!^J2 zT>oN*lXQeRs`KEsOg5dyMoSgoUTvm4hBE=TwAm?+t3&r$Ol zKZX#S|Rw2(~cczK(O!w038H$5>8=gV1E zYFV1g`uv!5fXQW@apeyuby-%6vequ^838sZYh;Xpv%<=vj5AY|GMw!C{>lv8Jbx17 zib#`|e>I8~XrEu5Re!sxD(-%vu03HXdmN)VM-V$co|&Q4w_VcuUyBO+gNf=Ii^*t8 zuTV$SAl_5e=3a{ld>hPzczspdc&%~pcmzB%!$|A}?fA8F>dg*be-{OKx;FVn?7$?f zMYe^@F@FTdD_9UG!@s` zf^W4`r(M>% zTH0?Lo62A!{||<1;+U_M&Iipj@1PG8m-ez@n^ygHT2$X(MB%ifa6TcyG4@Q}@fYpI z+h;RJ+#+HYE(LyssL3(tM2GR70`2IAM!u5-6EUf1CBe>U+~XwJ8cHK2NG*KuE$#K+ zQ^?iFei!5X{{Q`)y4>n_Qbh_>M@LHbkUP_imP@pMb6Zzxxz625i;<}_?}~ah9kWQ` zSV#R`EfFGVYx&4F64yEVeh`pZf!X&D!+J+^V_RFebX6;8-FbeKXz)tPQ~St9dn_`9 zcP5(A=VQnFFp_P5nxBFl-so!EXUp6$uHJnC*BD31kTC=PsG#cb^q5o@cw;8=eGb(6|UjhviI2^!qM?{nQ` zV##oi-o?aP(RZSWEi-zZ!SyRE31A6^5*I0{RhgI`z)}t3BqHvL@kd^kfUvGOWqY6xgB`RarHrp1GnY2eKx}YJGGdtJ77q@|GOx zd1TD*V!foq?2Rv8il=8dkDnM%97~SM=l6 zSOc>A_i8LW_>J#HDWpqqZoO6zi*GKpi`ht?%NWlsmOw0jN^*|_cen5Lu|aH1aAiO1 z-vqHgoaasmmHkn8Pe?Eg&B{RujzXc`CBXq$uGl8Q30S0fPl7L^-FZ`jHbk>hf}=<7 z^Jjp?bqAhs$*d_cFP|tIWm>9$%X%v9Ela*9hE^i)Dl?Rrz1dAS7YQbxlHeg5+DJ>z zTL>aU^hLp}NrcEtASxFjpsxvGXVfcK^p|U}wfGiQx3KzDCG~_*HoLCu4YviLqx2+G9`ffO zcs$wG3s;K13}yS7MV7I}t5Ix)x>dDM0AciwTC6}lbwwXto2ARd>0@iN7=3?j_Izzp z)DjXi%sVE)VWdv)62>}{9gZ;8RYl4Q!`LD<^Q7J}oa*;U{iSeLCv?hpOexq65nBO% z_$6HrXFY;4#FjrTbLm&YS$yw_$ftsTfdO4kLr&u`V+kx2;=qO213bw@=L5hg4<+0l zI?QDyoRSr85XbBNBUoG$v3T~W$a>u1e-|Y<#cZ;p9~e^UV9+65k6@`)1n)Bad<09Z zD&VJ%>yeSHYfTaO{5Vr=Z6J!ZJAHg4+ZrLz8OK=VGe#Yc>CK~OI7QMJXC(iiR44@iyR3mS?xp?w2o#e%|#uuEKWxD5ORp}z(gyt)eznh2>YYx^``pvRee`|){vTp3-#G# z3THH6Pt$i@1J;Yamm9FD^c@(>8b!)w+Ns76)smBqh_T44uZU%DQvq$!kY%Z#Uez}? zWW(j@!g_e^;UON}Fgj?_?RUXJR7{M;BAgx*$GRBpytpG&>UrcRz7)rnscWz56>%(4 z-E&oM)rhrJ4`02(NmkU zILf&3O_`0p-!^3tYTGZ1es0R9nAo18!3k^wt8;%Mh8@*C$xXWTRruF-^aky*iOH+) zD5~CyH8-hYJBm8AW%U>2>Xt+n5j{(ygY&CEQEDcC z0?P%vXyiYLkJ5W2qN8uUxoBD-%ZRyZo?@L!ML;G0J#%OW?V zskc6wgc6AF?IhN`w#*h`ZBxi%@IPH|napB{;pt@738kzkCz&-8?cwGQY@@fIe}ba> z<0hQgKBX<`EgIJmmCPtwqTFpS_2;wxPAB$-F(|pgE8(YgX3rTytx4t7%0%9o^*4yZ z#A-w|GEMK-g>8;765oMDpQJ@x$2GF0MhYvgMm6Mk8q2W|QzpNC?hy`1-bTX4r!$uv zNG5GRLz2Tm5=pg$v)*he z{54(w_$g);o_>n;HIflW(V0#|NECH24erC@y()!M5B^w*`WmQ}J+Qno@n|3BLQyOl z_%u3`nP@AGit^yy?H;juLjA` z5fg0Stq1O}eyna_#uq=*B(Ren-5({s|1CYWKkFc7jqXF)mmfTMpzJAC6ZYgn_okv1 z{n?W&{3>qni=CPepoQ8}$4#zf#|4XkwfW4@8T%#`?z^v?%eqaEb z%?k8x16eaRM}Ki3TVeS@BW_F1N#x`pepFWnv5snrrl$;IKO`J~U8rh-1BEwMV3aum zVOk+x_$~r{DZp%#i?Kq^H|i;a*(Npdb^ZEamd1+o7DHHTOWbRf_`_c-dT|IF$ZF8Z z$%Lih$9v*jfA>>GB||ZE8$d|0eH|e6;MofjAXrQQ)bYT!IF%VQ0~ z4O!q7A-8jEGyWs$+;kkYy>z!#|5N&waV$z5bV@%sjy+RDdX!E{iWpiw&*lif#8Zct zyA(zA)92Ytb4VTR#_|OyR-WXTn?)TbviqzN`ELg>&YcR4?>^+a|4S!59mlZP1ciCY z4gb=IOk!ulGfs|Btf|0Z;!hu{EhqK#$*dWrX6j^i58opD6!w7Lo6>F5SPEK?5m-gR zk&Qd=jd^w-#?D;dK8v#2<1D!Mg`H3_OFihtMb z8LRbri`WZ9U$ltzu4Pn3aip4#R>P=si`W3RLvQUu@g*t5y1M8?7ki!wZaQF1rn=M1 z3&0(l!xGq=MHxA4BJBg|MN8NMYBf79Wg6>6i<c?~0QZ;>0(KE|g2hkI}=9c}+UN>7pHuPD+ zzEXpS>p^+!>8Exb8lrR-chRRi=P@j|_ovp<5rHwqXbD!wa>hXY=~r3Tj^P56WpPp1(_0*+@^)0Jei@MZHqj@23 z@QHbkJi{}6gVx)tS(DD>26!YZ+8s_#fIqToy2Hr@@J3b@cX$y%G4dJ6tC75I>?JYg zE$Y99g^8?x;SHueOHJh6GHP(pXv-JvjL>ayI6lEFIHpuoZj)|_I{*o0`2e0lqH-dd zs|OQ{>EvqO4ix60I_oL&{H?VzuN$pnqeAEib-_e6O>w(+oYhyXV_lx2lhKn7H^V!5 z=ABroSMtwcVug{~jOuQUPEuR8o-plA{O<1WZZ{pV7JMj*3ZYCIoxk35B{X|4+-Z4} z{iG@vif+EiR+^~h&D|hJaBps4JrFKBzkxZhBYIOGyb&V?F#NPpE|Rc(FrqHR=Cd`l zx2_kx%UTfP>bvYCbr{t>x<6ptDo8haL;sb6?0eM0&1n1oajPH{=fLEBg7h$4CeUxZ z&yog;76-?7=e5bUO1PThY(y=~5M@G>C}m!xZBDf`#g6O83nS6Z6Aw>Bb8WMqz#-l? zI0X`o&Hjb;G2I|+!|(Jdo7k$}|E#GtI(BKV0^S;Qb|h5cSwb3(Xgjw*cF3v|OkXbyL@=9@6jq-y~B z#~-k!xGTv0arQy<4n72iw6QA8ry|D!`e_a&4g^m56t?a8Gv52Y^1MixwfA|sm zhDy`y|H#SiTmNCJ*at-|w=%3Gx{3}Lvfhm4=(V=9XR8jz%?)1nQPHgJ>=cU)rjw7z zS9vmaKqtC%kR(n+(izB37mB77F|G#gZXvH-=%YVpwt7Ft$x-8L5Jhu$NCX|BXzsq$ zFMZAyQ-Pkai!};RGqQB|ZuXp-FNbP_~AvWLYDmCmfAWczwf*Zg25D=l00spv1WTalX; zB~~eGjkgz&FHNu0lZVRz5k9+>)KO0nl0hV?r|o6277?#yaW5=z(6*aCV=wF0g_tKy zV9KmaSy>Vjt0~jdBz)vZkTR>2H)`_Zk&rawj6CGa_Odw9m1LG>(TGZ6GK~%@$TlJ|(S&dp3j4e(6$2#|x7yF* z;)MANYeLt55u-PmK?q+l!uremSyZsh7o#k}Ira2y`&mOVCs#-!%RiWp@^2XD%1 zDzh9o*o?}DoDii+=LcAOk=?RNc%zY38BB<}a(R>`lOF&9O%Sqs@Ils&VqAKVb*(}% zF6gGOI>@2|n&PsWejQYA32TEElthZ+OW3;sJ^!iI*0?6xVro9a>BodKIcL%6()n#W z);rz;)swsuzkC7VgHG$gN7&}N(py2wbYCNHQD%uoUO#>W3n(e4iue)MfO_YmYTvSK z(Fv_M!7eu;6A~QNT*+-~pxBh*wHCs(^kP)nxkY=beaBkXnhJ_7C=`*u(BEh&PkaaM z$g|S#SQEb$Ev2&+9PpYIOL<$={Cg~Jq|i*jvXo{KH1T+BKGI4-7UvYdqTW4?RuyB) zzfDc_r6;MS*rXSp#9|q~mrt^ZPl%H3=qMXg6mi-<5*GwpP53!lS(mssVQ)%$#jKg4 z^%hYWxbj)!$}sps=B@aFH4?LhS&2pg#%-qQO@-A5eqgoK7;-Lp0B=>Oqj>uQDw}%w zkE~Y^vB>eTo_3mz75a=_eCAao~x^OHW{Cl(Q0dA6v}_=z2)(SFJqECa~7EyslHr2g_5me!V((VuI6ARd>b zX(bK+L?`dTNt7in9Crw>Jlni}hBd-87t_mi5ZutK!<-?9S(;+lWA&3cwL#un?7 z&$8y>8H<-I3&Lmy_v&)E<|ILD_04BlgCWLT;+^H#85axwm{+4q zvU4F?ojdP|d__K((qqNNPH!%l(i>wQqSrsihJ;Xg5JSbb1<2Zk=ddu;tct$-9Bbaf zpG9)YLj5+LNG{kQzPAdfzrguflB;!|HS0;9!-`70yYKOo;PsT8d36Xta^{C(5)4~s z1$xXaQEkei+)Fc%9GVAXZ9&jP7R*1-qQfW&NC=W+B!qV{>mQwGNl~KPafG<6qVvF` z3AoWC%H+NCDC=lC;xDj1^nLjP>rLNX7g##gHuWOwPvJoqkwAQ3zbNVFE@E{XwXN|b zEEmzpV9I4y�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 Kcb`qBXZ}Chp=`|n diff --git a/poker.asm b/poker.asm index 4c5070b..3ebe31f 100644 --- a/poker.asm +++ b/poker.asm @@ -1935,7 +1935,7 @@ stage_test_loop: invoke TowerReportRoundOutcome, 1 ; 4. Check outcome state - cmp stageLoop, 10 + cmp stageLoop, 6 jae stage_check_champ cmp towerFloorState, TOWER_STATE_CLEAR diff --git a/poker.exe b/poker.exe index 6a31bf6c460cc5aef21a5961440e8460cf1a65dc..5e91e8bf250fbf4858bcacadf535cf9679522d56 100644 GIT binary patch delta 45353 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 U<=CIu8eFYvTrBtLMEd>z125;*d;kCd delta 45810 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�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 Kcb`qBXZ}Chp=`|n diff --git a/poker.obj b/poker.obj index 169bba0454a44cb5673231999905d6333ccd272d..498d9ee9eb7a924353828d6c33d0a55d53b9fa82 100644 GIT binary patch delta 40865 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 Qio1RdtvPr7uGRYg0C(CDvj6}9 delta 42137 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 diff --git a/src_graphics/hell_tower.inc b/src_graphics/hell_tower.inc index 5fd3d83..b793816 100644 --- a/src_graphics/hell_tower.inc +++ b/src_graphics/hell_tower.inc @@ -1,599 +1,574 @@ -; --- hell_tower.inc: Implementation of Hell Tower (10-floor Boss Rush) --- -.code - -FreeTowerMinigameAssets PROC - call FreeBuckshotAssets3D - call FreeRussianAssets3D - call FreeCardTableAssets3D - call FreeNativeCoinArt3D - call FreeNativeWheelArt3D - ret -FreeTowerMinigameAssets ENDP - -InitHellTower3D PROC - call FreeTowerMinigameAssets - mov tournamentMode, 1 - mov towerStage, 1 - mov towerFloorState, TOWER_STATE_BRIEFING - mov towerAnimClock, 0 - mov towerCalloutAnim, 0 - - mov eax, towerFloorY[0] - mov towerCursorY, eax - mov towerCursorTargetY, eax - - invoke LoadAnimPack3D, OFFSET hellTowerMenuArt3D, OFFSET hellTowerMenuPath3D - - call StopTowerMusic - mov engineMode, MODE_HELL_TOWER - call ClearKeys3D - ret -InitHellTower3D ENDP - -TowerExitToHall PROC - call StopTowerMusic - call FreeTowerMinigameAssets - mov tournamentMode, 0 - mov engineMode, MODE_WALK - call ClearKeys3D - ret -TowerExitToHall ENDP - -TowerLaunchCurrentFloor PROC uses ebx esi edi - mov eax, towerStage - dec eax - cmp eax, 10 - jae @F - jmp launch_valid -@@: - xor eax, eax -launch_valid: - mov edx, towerFloorModes[eax*4] - mov towerCurrentGame, edx - mov towerFloorState, TOWER_STATE_IN_GAME - - ; Launch corresponding game - cmp edx, MODE_COIN - jne @F - call InitCoinGame - mov engineMode, MODE_COIN - jmp launch_done -@@: - cmp edx, MODE_DICE - jne @F - call InitDiceGame - mov engineMode, MODE_DICE - jmp launch_done -@@: - cmp edx, MODE_SKULLS - jne @F - call InitSkullsGame - mov engineMode, MODE_SKULLS - jmp launch_done -@@: - cmp edx, MODE_BLACKJACK - jne @F - call InitNativeBlackjack3D - mov engineMode, MODE_BLACKJACK - jmp launch_done -@@: - cmp edx, MODE_POKER - jne @F - call InitNativePoker3D - mov engineMode, MODE_POKER - jmp launch_done -@@: - cmp edx, MODE_RUSSIAN - jne @F - call InitRussianGame3D - mov engineMode, MODE_RUSSIAN - jmp launch_done -@@: - cmp edx, MODE_ROULETTE - jne @F - call InitNativeWheel3D - mov engineMode, MODE_ROULETTE - jmp launch_done -@@: - cmp edx, MODE_DURAK - jne @F - call InitNativeDurak3D - mov engineMode, MODE_DURAK - jmp launch_done -@@: - cmp edx, MODE_SKILL - jne @F - call InitSkillGame - mov engineMode, MODE_SKILL - jmp launch_done -@@: - cmp edx, MODE_BUCKSHOT - jne launch_done - call InitBuckshot3D - mov engineMode, MODE_BUCKSHOT - -launch_done: - call ClearKeys3D - ret -TowerLaunchCurrentFloor ENDP - -TowerReportRoundOutcome PROC uses eax outcome:DWORD - cmp tournamentMode, 1 - jne report_exit - mov eax, outcome - cmp eax, 1 - jne report_loss - - ; --- Victory --- - cmp towerStage, 10 - jae report_champion - - mov towerFloorState, TOWER_STATE_CLEAR - mov towerCalloutAnim, 0 - mov eax, towerStage - dec eax - cmp eax, 10 - jae @F - mov edx, towerFloorY[eax*4] - mov towerCursorTargetY, edx -@@: - invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 - mov engineMode, MODE_HELL_TOWER - call ClearKeys3D - ret - -report_champion: - mov towerFloorState, TOWER_STATE_CHAMPION - mov eax, towerPrizeAmount - add bankroll, eax - invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 - call SaveProgress3D - mov engineMode, MODE_HELL_TOWER - call ClearKeys3D - ret - -report_loss: - invoke TriggerCharmLossProtection, 0 - test eax, eax - jz @F - mov towerFloorState, TOWER_STATE_BRIEFING - invoke CopyString3D, OFFSET msgCharmTowerSave, OFFSET flashMessage - mov flashTimer, 140 - mov engineMode, MODE_HELL_TOWER - call ClearKeys3D - ret -@@: - mov towerFloorState, TOWER_STATE_DEFEAT - call StopTowerMusic - invoke PlayCasinoSound3D, OFFSET soundRoundLose, 0, 1 - mov engineMode, MODE_HELL_TOWER - call ClearKeys3D - ret - -report_exit: - ret -TowerReportRoundOutcome ENDP - -HandleHellTowerInput PROC - mov eax, towerFloorState - cmp eax, TOWER_STATE_BRIEFING - je input_briefing - cmp eax, TOWER_STATE_CLEAR - je input_clear - cmp eax, TOWER_STATE_DEFEAT - je input_defeat - cmp eax, TOWER_STATE_CHAMPION - je input_champion - ret - -input_briefing: - invoke Pressed3D, 1Bh ; ESC - test eax, eax - jz @F - call TowerExitToHall - ret -@@: - invoke Pressed3D, 20h ; SPACE - test eax, eax - jnz start_stage - invoke Pressed3D, 0Dh ; ENTER - test eax, eax - jnz start_stage - ret -start_stage: - call TowerLaunchCurrentFloor - ret - -input_clear: - invoke Pressed3D, 1Bh ; ESC - test eax, eax - jz @F - call TowerExitToHall - ret -@@: - invoke Pressed3D, 20h ; SPACE - test eax, eax - jnz advance_stage - invoke Pressed3D, 0Dh ; ENTER - test eax, eax - jnz advance_stage - ret -advance_stage: - inc towerStage - mov towerFloorState, TOWER_STATE_BRIEFING - mov towerCalloutAnim, 0 - mov eax, towerStage - dec eax - cmp eax, 10 - jae @F - mov edx, towerFloorY[eax*4] - mov towerCursorTargetY, edx -@@: - call ClearKeys3D - ret - -input_defeat: - invoke Pressed3D, 1Bh ; ESC - test eax, eax - jnz exit_to_hall - invoke Pressed3D, 20h ; SPACE - test eax, eax - jnz exit_to_hall - invoke Pressed3D, 0Dh ; ENTER - test eax, eax - jnz exit_to_hall - ret - -input_champion: - invoke Pressed3D, 1Bh ; ESC - test eax, eax - jnz exit_to_hall - invoke Pressed3D, 20h ; SPACE - test eax, eax - jnz exit_to_hall - invoke Pressed3D, 0Dh ; ENTER - test eax, eax - jnz exit_to_hall - ret - -exit_to_hall: - call TowerExitToHall - ret -HandleHellTowerInput ENDP - -RenderHellTower3D PROC uses ebx esi edi - local cardX:DWORD, cardY:DWORD, cardW:DWORD, cardH:DWORD - local currY:DWORD, tgtY:DWORD - - ; 1. Background: draw HellTower menu art if loaded, else fallback to maroon - cmp hellTowerMenuArt3D.pixels, 0 - je fallback_clear - - cmp hellTowerMenuArt3D.imageWidth, SCREEN_W - jne fallback_sprite - cmp hellTowerMenuArt3D.height, SCREEN_H - jne fallback_sprite - - mov esi, hellTowerMenuArt3D.pixels - lea edi, screenBuffer - mov ecx, SCREEN_SIZE - rep movsd - jmp bg_done - -fallback_sprite: - invoke DrawAnimSprite3D, OFFSET hellTowerMenuArt3D, 0, 0, 0, SCREEN_W, SCREEN_H - jmp bg_done - -fallback_clear: - lea edi, screenBuffer - mov ecx, SCREEN_SIZE - mov eax, 00100202h - rep stosd - -bg_done: - ; 2. Update towerAnimClock - inc towerAnimClock - - ; 3. Smooth cursor Y movement towards towerCursorTargetY (exponential damping) - mov eax, towerCursorTargetY - cmp eax, towerCursorY - je cursor_update_done - jg cursor_move_down - - ; Moving UP towards tower peak (target < current) - mov ecx, towerCursorY - sub ecx, eax - shr ecx, 2 - inc ecx - sub towerCursorY, ecx - mov eax, towerCursorTargetY - cmp towerCursorY, eax - jge cursor_update_done - mov towerCursorY, eax - jmp cursor_update_done - -cursor_move_down: - ; Moving DOWN towards tower base (target > current) - mov ecx, eax - sub ecx, towerCursorY - shr ecx, 2 - inc ecx - add towerCursorY, ecx - mov eax, towerCursorTargetY - cmp towerCursorY, eax - jle cursor_update_done - mov towerCursorY, eax - -cursor_update_done: - ; 4. Update sliding callout animation (0 to 100%) - cmp towerCalloutAnim, 100 - jge callout_step_done - add towerCalloutAnim, 10 - cmp towerCalloutAnim, 100 - jle callout_step_done - mov towerCalloutAnim, 100 -callout_step_done: - - ; 5. Calculate sliding callout card dimensions occupying free left space: - ; Max width = 206, fixed right bound = 214, top = 20, height = 208 - mov cardH, 208 - mov cardY, 20 - - ; cardW = 206 * towerCalloutAnim / 100 - mov eax, 206 - imul eax, towerCalloutAnim - xor edx, edx - mov ecx, 100 - div ecx - cmp eax, 10 - jae @F - mov eax, 10 -@@: - mov cardW, eax - - ; cardX = 214 - cardW - mov edx, 214 - sub edx, cardW - mov cardX, edx - - ; 6. Draw glowing cursor & indicator on the tower (Right side) - ; Indicator line from card right edge (214) to cursor on tower (X=224) - mov eax, towerCursorY - invoke DrawBox, 214, eax, 10, 2, 00FF4444h - - ; Cursor chevron/diamond at X=224 - mov eax, towerCursorY - sub eax, 3 - invoke DrawBoxBorder, 224, eax, 7, 7, 00FF3300h, 00FFDD44h, 1 - - ; Pulsing flame pip on the tower floor at X=234 - mov eax, towerAnimClock - and eax, 8 - jz pip_bright - mov edx, 00EE3300h - jmp pip_draw -pip_bright: - mov edx, 00FFAA22h -pip_draw: - mov eax, towerCursorY - sub eax, 2 - invoke DrawBox, 234, eax, 5, 5, edx - - ; 7. Draw Callout Box (outer and inner border with deep infernal tint) - invoke DrawBoxBorder, cardX, cardY, cardW, cardH, 00120202h, 00CC2222h, 2 - mov eax, cardX - add eax, 2 - mov edx, cardY - add edx, 2 - mov ecx, cardW - sub ecx, 4 - mov ebx, cardH - sub ebx, 4 - invoke DrawBoxBorder, eax, edx, ecx, ebx, 000C0202h, 00551111h, 1 - - ; Only render full content once card has slid out sufficiently (cardW >= 120) - cmp cardW, 120 - jb render_tower_done - - ; Header Banner: "ÊÀÇÈÍÎ 3D - ÀÄÑÊÀß ÁÀØÍß" - mov eax, cardX - add eax, 6 - mov ecx, cardW - sub ecx, 12 - invoke DrawBoxBorder, eax, 26, ecx, 18, 00220404h, 00FF4444h, 1 - mov eax, cardX - add eax, 12 - invoke DrawString8x8, eax, 31, OFFSET towerHeader, 00FFDD66h - - ; Floor indicator: "ÝÒÀÆ N / 10" - mov eax, cardX - add eax, 10 - invoke DrawString8x8, eax, 50, OFFSET towerFloorPrefix, 00FF6666h - invoke FormatNumber, towerStage, OFFSET hudNumBuffer - mov eax, cardX - add eax, 50 - invoke DrawString8x8, eax, 50, OFFSET hudNumBuffer, 00FFFFFFh - mov eax, cardX - add eax, 58 - invoke DrawString8x8, eax, 50, OFFSET towerOfTen, 00AAAAAAh - - ; Specific state content inside the card - mov eax, towerFloorState - cmp eax, TOWER_STATE_BRIEFING - je render_card_briefing - cmp eax, TOWER_STATE_CLEAR - je render_card_clear - cmp eax, TOWER_STATE_DEFEAT - je render_card_defeat - cmp eax, TOWER_STATE_CHAMPION - je render_card_champion - jmp render_tower_done - -render_card_briefing: - ; Boss & Game sub-card - mov eax, cardX - add eax, 6 - mov ecx, cardW - sub ecx, 12 - invoke DrawBoxBorder, eax, 64, ecx, 62, 001E0404h, 00881818h, 1 - - mov eax, cardX - add eax, 10 - invoke DrawString8x8, eax, 70, OFFSET towerEnemyLabel, 00FFAA55h - mov eax, towerStage - dec eax - mov edx, towerBossNames[eax*4] - mov eax, cardX - add eax, 56 - invoke DrawString8x8, eax, 70, edx, 00FFFFFFh - - mov eax, cardX - add eax, 10 - invoke DrawString8x8, eax, 84, OFFSET towerGameLabel, 00FFAA55h - mov eax, towerStage - dec eax - mov edx, towerGameNames[eax*4] - mov eax, cardX - add eax, 56 - invoke DrawString8x8, eax, 84, edx, 00FFDD66h - - mov eax, towerStage - dec eax - mov edx, towerDescriptions[eax*4] - mov eax, cardX - add eax, 10 - invoke DrawString8x8, eax, 100, edx, 00CCCCCCh - - ; Rules & warning - mov eax, cardX - add eax, 10 - invoke DrawString8x8, eax, 134, OFFSET towerRuleText, 00FFAA33h - mov eax, cardX - add eax, 10 - invoke DrawString8x8, eax, 148, OFFSET towerLossWarning, 00EE4444h - - ; Bankroll & Prize - mov eax, cardX - add eax, 10 - invoke DrawString8x8, eax, 164, OFFSET textBank3D, 00AAAAAAh - invoke FormatNumber, bankroll, OFFSET hudNumBuffer - mov eax, cardX - add eax, 56 - invoke DrawString8x8, eax, 164, OFFSET hudNumBuffer, 0066FF66h - - mov eax, cardX - add eax, 110 - invoke DrawString8x8, eax, 164, OFFSET towerPrizePrompt, 00FFAA55h - invoke FormatNumber, towerPrizeAmount, OFFSET hudNumBuffer - mov eax, cardX - add eax, 154 - invoke DrawString8x8, eax, 164, OFFSET hudNumBuffer, 00FFDD44h - - ; Action Buttons (Start & Escape) - mov eax, cardX - add eax, 8 - invoke DrawBoxBorder, eax, 186, 92, 22, 003D0C0Ch, 00FF4444h, 1 - mov eax, cardX - add eax, 14 - invoke DrawString8x8, eax, 193, OFFSET towerStartBtn, 00FFFFFFh - - mov eax, cardX - add eax, 106 - invoke DrawBoxBorder, eax, 186, 92, 22, 00220606h, 00882222h, 1 - mov eax, cardX - add eax, 114 - invoke DrawString8x8, eax, 193, OFFSET towerEscBtn, 00AAAAAAh - jmp render_tower_done - -render_card_clear: - mov eax, cardX - add eax, 8 - mov ecx, cardW - sub ecx, 16 - invoke DrawBoxBorder, eax, 74, ecx, 60, 00082208h, 0033CC33h, 2 - mov eax, cardX - add eax, 14 - invoke DrawString8x8, eax, 86, OFFSET towerClearTitle, 0066FF66h - mov eax, cardX - add eax, 14 - invoke DrawString8x8, eax, 108, OFFSET towerClearDesc, 00FFFFFFh - - mov eax, cardX - add eax, 18 - mov ecx, cardW - sub ecx, 36 - invoke DrawBoxBorder, eax, 186, ecx, 22, 00114411h, 0044FF44h, 1 - mov eax, cardX - add eax, 42 - invoke DrawString8x8, eax, 193, OFFSET towerNextBtn, 00FFFFFFh - jmp render_tower_done - -render_card_defeat: - mov eax, cardX - add eax, 8 - mov ecx, cardW - sub ecx, 16 - invoke DrawBoxBorder, eax, 74, ecx, 60, 002A0404h, 00FF2222h, 2 - mov eax, cardX - add eax, 14 - invoke DrawString8x8, eax, 86, OFFSET towerDefeatTitle, 00FF4444h - mov eax, cardX - add eax, 14 - invoke DrawString8x8, eax, 108, OFFSET towerDefeatDesc, 00FFFFFFh - - mov eax, cardX - add eax, 16 - mov ecx, cardW - sub ecx, 32 - invoke DrawBoxBorder, eax, 186, ecx, 22, 00441010h, 00FF4444h, 1 - mov eax, cardX - add eax, 22 - invoke DrawString8x8, eax, 193, OFFSET towerReturnBtn, 00FFFFFFh - jmp render_tower_done - -render_card_champion: - mov eax, cardX - add eax, 8 - mov ecx, cardW - sub ecx, 16 - invoke DrawBoxBorder, eax, 68, ecx, 72, 00332200h, 00FFD700h, 2 - mov eax, cardX - add eax, 12 - invoke DrawString8x8, eax, 78, OFFSET towerChampTitle, 00FFE066h - mov eax, cardX - add eax, 16 - invoke DrawString8x8, eax, 96, OFFSET towerChampSubtitle, 00FFFFFFh - mov eax, cardX - add eax, 14 - invoke DrawString8x8, eax, 116, OFFSET towerPrizeText, 0066FF66h - - mov eax, cardX - add eax, 16 - mov ecx, cardW - sub ecx, 32 - invoke DrawBoxBorder, eax, 186, ecx, 22, 00443300h, 00FFCC00h, 1 - mov eax, cardX - add eax, 22 - invoke DrawString8x8, eax, 193, OFFSET towerReturnBtn, 00FFFFFFh - -render_tower_done: - ret -RenderHellTower3D ENDP - -RenderTowerInGameBadge PROC - cmp tournamentMode, 1 - jne badge_done - cmp engineMode, MODE_HELL_TOWER - je badge_done - cmp engineMode, MODE_WALK - je badge_done - - invoke DrawBoxBorder, 4, 4, 96, 16, 00220404h, 00FF3333h, 1 - invoke DrawString8x8, 8, 8, OFFSET towerHudBadge, 00FFAA55h - invoke FormatNumber, towerStage, OFFSET hudNumBuffer - invoke DrawString8x8, 64, 8, OFFSET hudNumBuffer, 00FFFFFFh - invoke DrawString8x8, 72, 8, OFFSET towerHudOfTen, 00AAAAAAh - -badge_done: - ret -RenderTowerInGameBadge ENDP +; --- hell_tower.inc: Implementation of Hell Tower (6-floor Boss Rush) --- +.code + +FreeTowerMinigameAssets PROC + call FreeBuckshotAssets3D + call FreeRussianAssets3D + call FreeCardTableAssets3D + call FreeNativeCoinArt3D + call FreeNativeWheelArt3D + ret +FreeTowerMinigameAssets ENDP + +InitHellTower3D PROC + call FreeTowerMinigameAssets + mov tournamentMode, 1 + mov towerStage, 1 + mov towerFloorState, TOWER_STATE_BRIEFING + mov towerAnimClock, 0 + mov towerCalloutAnim, 0 + + mov eax, towerFloorY[0] + mov towerCursorY, eax + mov towerCursorTargetY, eax + + invoke LoadAnimPack3D, OFFSET hellTowerMenuArt3D, OFFSET hellTowerMenuPath3D + + call StopTowerMusic + mov engineMode, MODE_HELL_TOWER + call ClearKeys3D + ret +InitHellTower3D ENDP + +TowerExitToHall PROC + call StopTowerMusic + call FreeTowerMinigameAssets + mov tournamentMode, 0 + mov engineMode, MODE_WALK + call ClearKeys3D + ret +TowerExitToHall ENDP + +TowerLaunchCurrentFloor PROC uses ebx esi edi + mov eax, towerStage + dec eax + cmp eax, 6 + jae @F + jmp launch_valid +@@: + xor eax, eax +launch_valid: + mov edx, towerFloorModes[eax*4] + mov towerCurrentGame, edx + mov towerFloorState, TOWER_STATE_IN_GAME + + ; Launch corresponding game + cmp edx, MODE_COIN + jne @F + call InitCoinGame + mov engineMode, MODE_COIN + jmp launch_done +@@: + cmp edx, MODE_DICE + jne @F + call InitDiceGame + mov engineMode, MODE_DICE + jmp launch_done +@@: + cmp edx, MODE_BLACKJACK + jne @F + call InitNativeBlackjack3D + mov engineMode, MODE_BLACKJACK + jmp launch_done +@@: + cmp edx, MODE_RUSSIAN + jne @F + call InitRussianGame3D + mov engineMode, MODE_RUSSIAN + jmp launch_done +@@: + cmp edx, MODE_ROULETTE + jne @F + call InitNativeWheel3D + mov engineMode, MODE_ROULETTE + jmp launch_done +@@: + cmp edx, MODE_BUCKSHOT + jne launch_done + call InitBuckshot3D + mov engineMode, MODE_BUCKSHOT + +launch_done: + call ClearKeys3D + ret +TowerLaunchCurrentFloor ENDP + +TowerReportRoundOutcome PROC uses eax outcome:DWORD + cmp tournamentMode, 1 + jne report_exit + mov eax, outcome + cmp eax, 1 + jne report_loss + + ; --- Victory --- + cmp towerStage, 6 + jae report_champion + + mov towerFloorState, TOWER_STATE_CLEAR + mov towerCalloutAnim, 0 + mov eax, towerStage + dec eax + cmp eax, 6 + jae @F + mov edx, towerFloorY[eax*4] + mov towerCursorTargetY, edx +@@: + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + mov engineMode, MODE_HELL_TOWER + call ClearKeys3D + ret + +report_champion: + mov towerFloorState, TOWER_STATE_CHAMPION + mov eax, towerPrizeAmount + add bankroll, eax + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + call SaveProgress3D + mov engineMode, MODE_HELL_TOWER + call ClearKeys3D + ret + +report_loss: + invoke TriggerCharmLossProtection, 0 + test eax, eax + jz @F + mov towerFloorState, TOWER_STATE_BRIEFING + invoke CopyString3D, OFFSET msgCharmTowerSave, OFFSET flashMessage + mov flashTimer, 140 + mov engineMode, MODE_HELL_TOWER + call ClearKeys3D + ret +@@: + mov towerFloorState, TOWER_STATE_DEFEAT + call StopTowerMusic + invoke PlayCasinoSound3D, OFFSET soundRoundLose, 0, 1 + mov engineMode, MODE_HELL_TOWER + call ClearKeys3D + ret + +report_exit: + ret +TowerReportRoundOutcome ENDP + +HandleHellTowerInput PROC + mov eax, towerFloorState + cmp eax, TOWER_STATE_BRIEFING + je input_briefing + cmp eax, TOWER_STATE_CLEAR + je input_clear + cmp eax, TOWER_STATE_DEFEAT + je input_defeat + cmp eax, TOWER_STATE_CHAMPION + je input_champion + ret + +input_briefing: + invoke Pressed3D, 1Bh ; ESC + test eax, eax + jz @F + call TowerExitToHall + ret +@@: + invoke Pressed3D, 20h ; SPACE + test eax, eax + jnz start_stage + invoke Pressed3D, 0Dh ; ENTER + test eax, eax + jnz start_stage + ret +start_stage: + call TowerLaunchCurrentFloor + ret + +input_clear: + invoke Pressed3D, 1Bh ; ESC + test eax, eax + jz @F + call TowerExitToHall + ret +@@: + invoke Pressed3D, 20h ; SPACE + test eax, eax + jnz advance_stage + invoke Pressed3D, 0Dh ; ENTER + test eax, eax + jnz advance_stage + ret +advance_stage: + inc towerStage + mov towerFloorState, TOWER_STATE_BRIEFING + mov towerCalloutAnim, 0 + mov eax, towerStage + dec eax + cmp eax, 6 + jae @F + mov edx, towerFloorY[eax*4] + mov towerCursorTargetY, edx +@@: + call ClearKeys3D + ret + +input_defeat: + invoke Pressed3D, 1Bh ; ESC + test eax, eax + jnz exit_to_hall + invoke Pressed3D, 20h ; SPACE + test eax, eax + jnz exit_to_hall + invoke Pressed3D, 0Dh ; ENTER + test eax, eax + jnz exit_to_hall + ret + +input_champion: + invoke Pressed3D, 1Bh ; ESC + test eax, eax + jnz exit_to_hall + invoke Pressed3D, 20h ; SPACE + test eax, eax + jnz exit_to_hall + invoke Pressed3D, 0Dh ; ENTER + test eax, eax + jnz exit_to_hall + ret + +exit_to_hall: + call TowerExitToHall + ret +HandleHellTowerInput ENDP + +RenderHellTower3D PROC uses ebx esi edi + local cardX:DWORD, cardY:DWORD, cardW:DWORD, cardH:DWORD + local currY:DWORD, tgtY:DWORD + + ; 1. Background: draw HellTower menu art if loaded, else fallback to maroon + cmp hellTowerMenuArt3D.pixels, 0 + je fallback_clear + + cmp hellTowerMenuArt3D.imageWidth, SCREEN_W + jne fallback_sprite + cmp hellTowerMenuArt3D.height, SCREEN_H + jne fallback_sprite + + mov esi, hellTowerMenuArt3D.pixels + lea edi, screenBuffer + mov ecx, SCREEN_SIZE + rep movsd + jmp bg_done + +fallback_sprite: + invoke DrawAnimSprite3D, OFFSET hellTowerMenuArt3D, 0, 0, 0, SCREEN_W, SCREEN_H + jmp bg_done + +fallback_clear: + lea edi, screenBuffer + mov ecx, SCREEN_SIZE + mov eax, 00100202h + rep stosd + +bg_done: + ; 2. Update towerAnimClock + inc towerAnimClock + + ; 3. Smooth cursor Y movement towards towerCursorTargetY (exponential damping) + mov eax, towerCursorTargetY + cmp eax, towerCursorY + je cursor_update_done + jg cursor_move_down + + ; Moving UP towards tower peak (target < current) + mov ecx, towerCursorY + sub ecx, eax + shr ecx, 2 + inc ecx + sub towerCursorY, ecx + mov eax, towerCursorTargetY + cmp towerCursorY, eax + jge cursor_update_done + mov towerCursorY, eax + jmp cursor_update_done + +cursor_move_down: + ; Moving DOWN towards tower base (target > current) + mov ecx, eax + sub ecx, towerCursorY + shr ecx, 2 + inc ecx + add towerCursorY, ecx + mov eax, towerCursorTargetY + cmp towerCursorY, eax + jle cursor_update_done + mov towerCursorY, eax + +cursor_update_done: + ; 4. Update sliding callout animation (0 to 100%) + cmp towerCalloutAnim, 100 + jge callout_step_done + add towerCalloutAnim, 10 + cmp towerCalloutAnim, 100 + jle callout_step_done + mov towerCalloutAnim, 100 +callout_step_done: + + ; 5. Calculate sliding callout card dimensions occupying free left space: + ; Max width = 206, fixed right bound = 214, top = 16, height = 208 + mov cardH, 208 + mov cardY, 16 + + ; cardW = 206 * towerCalloutAnim / 100 + mov eax, 206 + imul eax, towerCalloutAnim + xor edx, edx + mov ecx, 100 + div ecx + cmp eax, 10 + jae @F + mov eax, 10 +@@: + mov cardW, eax + + ; cardX = 214 - cardW + mov edx, 214 + sub edx, cardW + mov cardX, edx + + ; 6. Draw glowing cursor & indicator on the tower (Right side) + ; Indicator line from card right edge (214) to cursor on tower (X=224) + mov eax, towerCursorY + invoke DrawBox, 214, eax, 10, 2, 00FF4444h + + ; Cursor chevron/diamond at X=224 + mov eax, towerCursorY + sub eax, 3 + invoke DrawBoxBorder, 224, eax, 7, 7, 00FF3300h, 00FFDD44h, 1 + + ; Pulsing flame pip on the tower floor at X=234 + mov eax, towerAnimClock + and eax, 8 + jz pip_bright + mov edx, 00EE3300h + jmp pip_draw +pip_bright: + mov edx, 00FFAA22h +pip_draw: + mov eax, towerCursorY + sub eax, 2 + invoke DrawBox, 234, eax, 5, 5, edx + + ; 7. Draw Callout Box (outer and inner border with deep infernal tint) + invoke DrawBoxBorder, cardX, cardY, cardW, cardH, 00120202h, 00CC2222h, 2 + mov eax, cardX + add eax, 2 + mov edx, cardY + add edx, 2 + mov ecx, cardW + sub ecx, 4 + mov ebx, cardH + sub ebx, 4 + invoke DrawBoxBorder, eax, edx, ecx, ebx, 000C0202h, 00551111h, 1 + + ; Only render full content once card has slid out sufficiently (cardW >= 120) + cmp cardW, 120 + jb render_tower_done + + ; Header Banner: "ÀÄÑÊÀß ÁÀØÍß" (Centered, NO "ÊÀÇÈÍÎ 3D") + mov eax, cardX + add eax, 6 + mov ecx, cardW + sub ecx, 12 + invoke DrawBoxBorder, eax, 22, ecx, 18, 00220404h, 00FF4444h, 1 + mov eax, cardX + add eax, 55 + invoke DrawString8x8, eax, 27, OFFSET towerHeader, 00FFDD66h + + ; Floor indicator: "ÝÒÀÆ N / 6" and Prize prompt + mov eax, cardX + add eax, 12 + invoke DrawString8x8, eax, 46, OFFSET towerFloorPrefix, 00FF6666h + invoke FormatNumber, towerStage, OFFSET hudNumBuffer + mov eax, cardX + add eax, 52 + invoke DrawString8x8, eax, 46, OFFSET hudNumBuffer, 00FFFFFFh + mov eax, cardX + add eax, 60 + invoke DrawString8x8, eax, 46, OFFSET towerOfTen, 00AAAAAAh + + mov eax, cardX + add eax, 105 + invoke DrawString8x8, eax, 46, OFFSET towerPrizePrompt, 00FFAA55h + invoke FormatNumber, towerPrizeAmount, OFFSET hudNumBuffer + mov eax, cardX + add eax, 149 + invoke DrawString8x8, eax, 46, OFFSET hudNumBuffer, 00FFDD44h + + ; Specific state content inside the card + mov eax, towerFloorState + cmp eax, TOWER_STATE_BRIEFING + je render_card_briefing + cmp eax, TOWER_STATE_CLEAR + je render_card_clear + cmp eax, TOWER_STATE_DEFEAT + je render_card_defeat + cmp eax, TOWER_STATE_CHAMPION + je render_card_champion + jmp render_tower_done + +render_card_briefing: + ; Boss & Game sub-card (Y = 60 to 130) + mov eax, cardX + add eax, 6 + mov ecx, cardW + sub ecx, 12 + invoke DrawBoxBorder, eax, 60, ecx, 70, 001E0404h, 00881818h, 1 + + mov eax, cardX + add eax, 12 + invoke DrawString8x8, eax, 66, OFFSET towerEnemyLabel, 00FFAA55h + mov eax, towerStage + dec eax + mov edx, towerBossNames[eax*4] + mov eax, cardX + add eax, 60 + invoke DrawString8x8, eax, 66, edx, 00FFFFFFh + + mov eax, cardX + add eax, 12 + invoke DrawString8x8, eax, 80, OFFSET towerGameLabel, 00FFAA55h + mov eax, towerStage + dec eax + mov edx, towerGameNames[eax*4] + mov eax, cardX + add eax, 60 + invoke DrawString8x8, eax, 80, edx, 00FFDD66h + + mov eax, towerStage + dec eax + mov edx, towerDescriptions[eax*4] + mov eax, cardX + add eax, 12 + invoke DrawString8x8, eax, 98, edx, 00CCCCCCh + + ; Rules & warning box (Y = 134 to 166) + mov eax, cardX + add eax, 6 + mov ecx, cardW + sub ecx, 12 + invoke DrawBoxBorder, eax, 134, ecx, 32, 00180303h, 00661111h, 1 + mov eax, cardX + add eax, 12 + invoke DrawString8x8, eax, 139, OFFSET towerRuleText, 00FFAA33h + mov eax, cardX + add eax, 12 + invoke DrawString8x8, eax, 151, OFFSET towerLossWarning, 00FF5555h + + ; Bankroll & Prize (Y = 172) + mov eax, cardX + add eax, 12 + invoke DrawString8x8, eax, 172, OFFSET textBank3D, 00AAAAAAh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + mov eax, cardX + add eax, 60 + invoke DrawString8x8, eax, 172, OFFSET hudNumBuffer, 0066FF66h + + ; Action Buttons (Y = 188 to 212) + mov eax, cardX + add eax, 6 + invoke DrawBoxBorder, eax, 188, 93, 24, 003D0C0Ch, 00FF4444h, 1 + mov eax, cardX + add eax, 12 + invoke DrawString8x8, eax, 196, OFFSET towerStartBtn, 00FFFFFFh + + mov eax, cardX + add eax, 107 + invoke DrawBoxBorder, eax, 188, 93, 24, 00220606h, 00882222h, 1 + mov eax, cardX + add eax, 113 + invoke DrawString8x8, eax, 196, OFFSET towerEscBtn, 00AAAAAAh + jmp render_tower_done + +render_card_clear: + mov eax, cardX + add eax, 6 + mov ecx, cardW + sub ecx, 12 + invoke DrawBoxBorder, eax, 62, ecx, 80, 00082208h, 0033CC33h, 2 + mov eax, cardX + add eax, 51 + invoke DrawString8x8, eax, 76, OFFSET towerClearTitle, 0066FF66h + mov eax, cardX + add eax, 47 + invoke DrawString8x8, eax, 96, OFFSET towerClearDesc, 00FFFFFFh + + mov eax, cardX + add eax, 18 + invoke DrawBoxBorder, eax, 176, 170, 26, 00114411h, 0044FF44h, 1 + mov eax, cardX + add eax, 47 + invoke DrawString8x8, eax, 184, OFFSET towerNextBtn, 00FFFFFFh + jmp render_tower_done + +render_card_defeat: + mov eax, cardX + add eax, 6 + mov ecx, cardW + sub ecx, 12 + invoke DrawBoxBorder, eax, 62, ecx, 80, 002A0404h, 00FF2222h, 2 + mov eax, cardX + add eax, 31 + invoke DrawString8x8, eax, 76, OFFSET towerDefeatTitle, 00FF4444h + mov eax, cardX + add eax, 27 + invoke DrawString8x8, eax, 98, OFFSET towerDefeatDesc, 00FFFFFFh + + mov eax, cardX + add eax, 18 + invoke DrawBoxBorder, eax, 176, 170, 26, 00441010h, 00FF4444h, 1 + mov eax, cardX + add eax, 31 + invoke DrawString8x8, eax, 184, OFFSET towerReturnBtn, 00FFFFFFh + jmp render_tower_done + +render_card_champion: + mov eax, cardX + add eax, 6 + mov ecx, cardW + sub ecx, 12 + invoke DrawBoxBorder, eax, 58, ecx, 92, 00332200h, 00FFD700h, 2 + mov eax, cardX + add eax, 43 + invoke DrawString8x8, eax, 70, OFFSET towerChampTitle, 00FFE066h + mov eax, cardX + add eax, 27 + invoke DrawString8x8, eax, 90, OFFSET towerChampSubtitle, 00FFFFFFh + mov eax, cardX + add eax, 19 + invoke DrawString8x8, eax, 114, OFFSET towerPrizeText, 0066FF66h + + mov eax, cardX + add eax, 18 + invoke DrawBoxBorder, eax, 176, 170, 26, 00443300h, 00FFCC00h, 1 + mov eax, cardX + add eax, 31 + invoke DrawString8x8, eax, 184, OFFSET towerReturnBtn, 00FFFFFFh + +render_tower_done: + ret +RenderHellTower3D ENDP + +RenderTowerInGameBadge PROC + cmp tournamentMode, 1 + jne badge_done + cmp engineMode, MODE_HELL_TOWER + je badge_done + cmp engineMode, MODE_WALK + je badge_done + + invoke DrawBoxBorder, 4, 4, 88, 16, 00220404h, 00FF3333h, 1 + invoke DrawString8x8, 8, 8, OFFSET towerHudBadge, 00FFAA55h + invoke FormatNumber, towerStage, OFFSET hudNumBuffer + invoke DrawString8x8, 64, 8, OFFSET hudNumBuffer, 00FFFFFFh + invoke DrawString8x8, 72, 8, OFFSET towerHudOfTen, 00AAAAAAh + +badge_done: + ret +RenderTowerInGameBadge ENDP diff --git a/src_graphics/hell_tower_data.inc b/src_graphics/hell_tower_data.inc index eda5e96..213e92a 100644 --- a/src_graphics/hell_tower_data.inc +++ b/src_graphics/hell_tower_data.inc @@ -1,94 +1,84 @@ -; --- hell_tower_data.inc: Data for Hell Tower 3D --- -MODE_HELL_TOWER equ 23 -TOWER_STATE_BRIEFING equ 0 -TOWER_STATE_IN_GAME equ 1 -TOWER_STATE_CLEAR equ 2 -TOWER_STATE_DEFEAT equ 3 -TOWER_STATE_CHAMPION equ 4 - -InitHellTower3D PROTO -TowerExitToHall PROTO -TowerReportRoundOutcome PROTO :DWORD -RenderTowerInGameBadge PROTO -ResolveHellAssetPath PROTO :DWORD, :DWORD -FreeTowerMinigameAssets PROTO - -.data -towerStage dd 1 -towerFloorState dd 0 -towerAnimClock dd 0 -towerCurrentGame dd 0 -towerPrizeAmount dd 66600 -towerHudText db 91,32,0 - -hellTowerMenuArt3D AnimPack3D <0> -hellTowerMenuPath3D db "assets\animations\hall\helltower-menu.bin",0 - -towerFloorY dd 205, 186, 167, 148, 129, 110, 91, 72, 53, 34 -towerCursorY dd 205 -towerCursorTargetY dd 205 -towerCalloutAnim dd 0 - -towerPrizePrompt db 202,211,216,58,32,36,0 ; "КУШ: $" - -towerFloorModes dd MODE_COIN, MODE_DICE, MODE_SKULLS, MODE_BLACKJACK, MODE_POKER, MODE_RUSSIAN, MODE_ROULETTE, MODE_DURAK, MODE_SKILL, MODE_BUCKSHOT - -towerBoss1 db 193,197,209,32,192,199,192,208,210,192,0 -towerBoss2 db 196,197,204,206,205,32,202,206,209,210,197,201,0 -towerBoss3 db 215,197,208,205,206,202,205,200,198,205,200,202,0 -towerBoss4 db 202,208,211,207,220,197,32,207,208,197,200,209,207,206,196,205,197,201,0 -towerBoss5 db 196,197,204,206,205,32,193,203,197,212,192,0 -towerBoss6 db 206,193,208,197,215,197,205,205,219,201,32,195,208,197,216,205,200,202,0 -towerBoss7 db 202,206,203,197,209,206,32,209,211,196,220,193,219,0 -towerBoss8 db 202,192,208,210,206,215,205,219,201,32,215,197,208,210,0 -towerBoss9 db 207,192,203,192,215,32,202,208,222,202,192,0 -towerBoss10 db 194,203,192,196,219,202,192,32,193,192,216,205,200,0 - -towerBossNames dd OFFSET towerBoss1, OFFSET towerBoss2, OFFSET towerBoss3, OFFSET towerBoss4, OFFSET towerBoss5, OFFSET towerBoss6, OFFSET towerBoss7, OFFSET towerBoss8, OFFSET towerBoss9, OFFSET towerBoss10 - -towerGame1 db 206,240,229,235,32,232,32,240,229,248,234,224,0 -towerGame2 db 202,238,241,242,232,0 -towerGame3 db 215,229,240,229,239,224,32,232,32,248,224,240,232,234,0 -towerGame4 db 50,49,32,47,32,206,247,234,238,0 -towerGame5 db 207,238,234,229,240,0 -towerGame6 db 208,243,241,241,234,224,255,32,240,243,235,229,242,234,224,0 -towerGame7 db 202,224,231,232,237,238,45,240,243,235,229,242,234,224,0 -towerGame8 db 196,243,240,224,234,0 -towerGame9 db 202,240,254,234,58,32,83,107,105,108,108,32,67,104,101,99,107,0 -towerGame10 db 66,117,99,107,115,104,111,116,32,82,111,117,108,101,116,116,101,0 - -towerGameNames dd OFFSET towerGame1, OFFSET towerGame2, OFFSET towerGame3, OFFSET towerGame4, OFFSET towerGame5, OFFSET towerGame6, OFFSET towerGame7, OFFSET towerGame8, OFFSET towerGame9, OFFSET towerGame10 - -towerDesc1 db 211,227,224,228,224,233,32,241,242,238,240,238,237,243,32,236,238,237,229,242,251,46,0 -towerDesc2 db 207,229,240,229,225,240,238,241,252,32,228,229,236,238,237,224,32,226,32,241,243,236,236,229,32,234,238,241,242,229,233,46,0 -towerDesc3 db 205,224,233,228,232,32,228,243,248,243,32,239,238,228,32,247,229,240,229,239,238,236,46,0 -towerDesc4 db 209,238,225,229,240,232,32,50,49,32,238,247,234,238,32,232,32,239,238,225,229,228,232,32,234,240,243,239,252,229,46,0 -towerDesc5 db 194,241,234,240,238,233,32,234,224,240,242,251,32,232,32,239,238,225,229,228,232,32,226,32,239,238,234,229,240,46,0 -towerDesc6 db 49,32,239,224,242,240,238,237,32,226,32,225,224,240,224,225,224,237,229,58,32,226,251,230,232,226,232,46,0 -towerDesc7 db 209,228,229,235,224,233,32,241,242,224,226,234,243,32,237,224,32,240,243,235,229,242,234,229,46,0 -towerDesc8 db 206,241,242,224,226,252,32,247,184,240,242,224,32,226,32,228,243,240,224,234,224,245,46,0 -towerDesc9 db 207,238,239,224,228,232,32,226,32,231,238,237,243,32,232,32,241,238,240,226,232,241,252,32,241,32,234,240,254,234,224,46,0 -towerDesc10 db 196,243,253,235,252,32,237,224,32,228,240,238,225,238,226,232,234,224,245,32,231,224,32,230,232,231,237,252,33,0 - -towerDescriptions dd OFFSET towerDesc1, OFFSET towerDesc2, OFFSET towerDesc3, OFFSET towerDesc4, OFFSET towerDesc5, OFFSET towerDesc6, OFFSET towerDesc7, OFFSET towerDesc8, OFFSET towerDesc9, OFFSET towerDesc10 - -towerHeader db 202,192,199,200,205,206,32,51,68,32,45,32,192,196,209,202,192,223,32,193,192,216,205,223,0 -towerFloorPrefix db 221,210,192,198,32,0 -towerOfTen db 32,47,32,49,48,0 -towerEnemyLabel db 194,208,192,195,58,32,0 -towerGameLabel db 200,195,208,192,58,32,0 -towerRuleText db 49,48,32,225,232,242,226,32,239,238,228,240,255,228,32,225,229,231,32,239,240,224,226,224,32,237,224,32,238,248,232,225,234,243,0 -towerLossWarning db 207,238,240,224,230,229,237,232,229,32,45,32,226,238,231,226,240,224,242,32,226,32,245,238,235,235,32,234,224,231,232,237,238,0 -towerStartBtn db 91,207,208,206,193,197,203,93,32,194,32,193,206,201,0 -towerEscBtn db 91,69,83,67,93,32,209,193,197,198,192,210,220,0 -towerClearTitle db 221,210,192,198,32,199,192,215,200,217,197,205,33,32,194,208,192,195,32,207,206,194,197,208,198,197,205,33,0 -towerClearDesc db 194,240,224,227,32,239,238,226,229,240,230,229,237,33,32,194,239,229,240,229,228,232,32,237,238,226,251,233,32,253,242,224,230,46,0 -towerNextBtn db 91,207,208,206,193,197,203,93,32,196,192,203,220,216,197,0 -towerDefeatTitle db 194,219,32,207,192,203,200,32,194,32,192,196,209,202,206,201,32,193,192,216,205,197,46,46,46,0 -towerDefeatDesc db 194,224,248,224,32,228,243,248,224,32,237,224,226,229,234,232,32,241,227,238,240,229,235,224,32,226,32,192,228,243,46,0 -towerReturnBtn db 91,207,208,206,193,197,203,32,47,32,69,83,67,93,32,194,32,213,206,203,203,32,202,192,199,200,205,206,0 -towerChampTitle db 210,208,200,211,204,212,33,32,192,196,209,202,192,223,32,193,192,216,205,223,32,207,206,202,206,208,197,205,192,33,0 -towerChampSubtitle db 194,219,32,45,32,215,197,204,207,200,206,205,32,192,196,209,202,206,201,32,193,192,216,205,200,33,0 -towerPrizeText db 209,211,207,197,208,207,208,200,199,58,32,43,36,54,54,44,54,48,48,32,194,32,193,192,205,202,208,206,203,203,33,0 -towerHudBadge db 193,192,216,205,223,58,32,0 -towerHudOfTen db 47,49,48,0 +; --- hell_tower_data.inc: Data for Hell Tower 3D (6 Floors) --- +MODE_HELL_TOWER equ 23 +TOWER_STATE_BRIEFING equ 0 +TOWER_STATE_IN_GAME equ 1 +TOWER_STATE_CLEAR equ 2 +TOWER_STATE_DEFEAT equ 3 +TOWER_STATE_CHAMPION equ 4 + +InitHellTower3D PROTO +TowerExitToHall PROTO +TowerReportRoundOutcome PROTO :DWORD +RenderTowerInGameBadge PROTO +ResolveHellAssetPath PROTO :DWORD, :DWORD +FreeTowerMinigameAssets PROTO + +.data +towerStage dd 1 +towerFloorState dd 0 +towerAnimClock dd 0 +towerCurrentGame dd 0 +towerPrizeAmount dd 66600 +towerHudText db 91,32,0 + +hellTowerMenuArt3D AnimPack3D <0> +hellTowerMenuPath3D db "assets\animations\hall\helltower-menu.bin",0 + +; 6 floors: 1=205, 2=174, 3=143, 4=112, 5=81, 6=50 +towerFloorY dd 205, 174, 143, 112, 81, 50 +towerCursorY dd 205 +towerCursorTargetY dd 205 +towerCalloutAnim dd 0 + +towerPrizePrompt db 202,211,216,58,32,36,0 + +towerFloorModes dd MODE_COIN, MODE_DICE, MODE_BLACKJACK, MODE_RUSSIAN, MODE_ROULETTE, MODE_BUCKSHOT + +towerBoss1 db 193,229,241,32,192,231,224,240,242,224,0 +towerBoss2 db 196,229,236,238,237,32,202,238,241,242,229,233,0 +towerBoss3 db 202,240,243,239,252,229,32,210,252,236,251,0 +towerBoss4 db 209,243,228,252,255,32,192,228,224,0 +towerBoss5 db 213,238,231,255,232,237,32,208,243,235,229,242,234,232,0 +towerBoss6 db 194,235,224,228,251,234,224,32,193,224,248,237,232,0 + +towerBossNames dd OFFSET towerBoss1, OFFSET towerBoss2, OFFSET towerBoss3, OFFSET towerBoss4, OFFSET towerBoss5, OFFSET towerBoss6 + +towerGame1 db 206,240,229,235,32,232,32,240,229,248,234,224,0 +towerGame2 db 202,238,241,242,232,0 +towerGame3 db 50,49,32,47,32,206,247,234,238,0 +towerGame4 db 208,243,241,241,234,224,255,32,240,243,235,229,242,234,224,0 +towerGame5 db 202,224,231,232,237,238,45,240,243,235,229,242,234,224,0 +towerGame6 db 66,117,99,107,115,104,111,116,32,82,111,117,108,101,116,116,101,0 + +towerGameNames dd OFFSET towerGame1, OFFSET towerGame2, OFFSET towerGame3, OFFSET towerGame4, OFFSET towerGame5, OFFSET towerGame6 + +towerDesc1 db 211,227,224,228,224,233,32,241,242,238,240,238,237,243,32,236,238,237,229,242,251,46,0 +towerDesc2 db 205,224,225,229,240,232,32,225,238,235,252,248,229,32,238,247,234,238,226,46,0 +towerDesc3 db 206,225,251,227,240,224,233,32,234,240,243,239,252,229,32,226,32,50,49,46,0 +towerDesc4 db 49,32,239,224,242,240,238,237,46,32,194,251,230,232,226,232,33,0 +towerDesc5 db 211,227,224,228,224,233,32,247,232,241,235,238,32,240,243,235,229,242,234,232,46,0 +towerDesc6 db 196,243,253,235,252,32,237,224,32,228,240,238,225,238,226,232,234,229,33,0 + +towerDescriptions dd OFFSET towerDesc1, OFFSET towerDesc2, OFFSET towerDesc3, OFFSET towerDesc4, OFFSET towerDesc5, OFFSET towerDesc6 + +towerHeader db 192,196,209,202,192,223,32,193,192,216,205,223,0 +towerFloorPrefix db 221,210,192,198,32,0 +towerOfTen db 32,47,32,54,0 +towerEnemyLabel db 194,208,192,195,58,32,0 +towerGameLabel db 200,195,208,192,58,32,0 +towerRuleText db 54,32,253,242,224,230,229,233,32,225,229,231,32,239,238,240,224,230,229,237,232,233,0 +towerLossWarning db 207,238,240,224,230,229,237,232,229,32,45,32,226,238,231,226,240,224,242,33,0 +towerStartBtn db 91,69,78,84,69,82,93,32,193,206,201,0 +towerEscBtn db 91,69,83,67,93,32,205,192,199,192,196,0 +towerClearTitle db 221,210,192,198,32,199,192,215,200,217,197,205,33,0 +towerClearDesc db 194,240,224,227,32,239,238,226,229,240,230,229,237,33,0 +towerNextBtn db 91,69,78,84,69,82,93,32,196,192,203,220,216,197,0 +towerDefeatTitle db 194,219,32,207,206,195,200,193,203,200,32,194,32,193,192,216,205,197,33,0 +towerDefeatDesc db 196,243,248,224,32,241,227,238,240,229,235,224,32,226,32,192,228,243,46,0 +towerReturnBtn db 91,69,83,67,93,32,194,32,213,206,203,203,32,202,192,199,200,205,206,0 +towerChampTitle db 193,192,216,205,223,32,207,206,202,206,208,197,205,192,33,0 +towerChampSubtitle db 194,251,32,45,32,194,235,224,228,251,234,224,32,193,224,248,237,232,33,0 +towerPrizeText db 202,211,216,58,32,43,36,54,54,44,54,48,48,32,194,32,193,192,205,202,33,0 +towerHudBadge db 193,192,216,205,223,58,32,0 +towerHudOfTen db 47,54,0 + diff --git a/tools/tests/render_hell_tower_preview.py b/tools/tests/render_hell_tower_preview.py index ca7b5e9..8b1aa4c 100644 --- a/tools/tests/render_hell_tower_preview.py +++ b/tools/tests/render_hell_tower_preview.py @@ -1,4 +1,4 @@ -"""Render full simulation of Hell Tower menu at floors 1, 5, 10.""" +"""Render simulation of Hell Tower with 6 floors and strict boundary checks.""" import struct from pathlib import Path from PIL import Image, ImageDraw, ImageFont @@ -7,109 +7,167 @@ ROOT = Path(__file__).resolve().parents[2] MENU_BIN = ROOT / "assets/animations/hall/helltower-menu.bin" ART_DIR = Path(r"C:\Users\IKER\.gemini\antigravity-cli\brain\c2d69e9d-8822-4f06-923a-36a9194468d6") -FLOOR_Y = [205, 186, 167, 148, 129, 110, 91, 72, 53, 34] +# 6 Floors Y in logical 320x240 coordinates +FLOOR_Y = [205, 174, 143, 112, 81, 50] BOSSES = [ - "БЕС АЗАРТА", "ДЕМОН КОСТЕЙ", "ЧЕРНОКНИЖНИК", "КРУПЬЕ ПРЕИСПОДНЕЙ", "ДЕМОН БЛЕФА", - "ОБРЕЧЕННЫЙ ГРЕШНИК", "КОЛЕСО СУДЬБЫ", "КАРТОЧНЫЙ ЧЕРТ", "ПАЛАЧ КРЮКА", "ВЛАДЫКА БАШНИ" + "Бес Азарта", + "Демон Костей", + "Крупье Тьмы", + "Судья Ада", + "Хозяин Рулетки", + "Владыка Башни" ] GAMES = [ - "Орел и решка", "Кости", "Черепа и шарик", "21 / Очко", "Покер", - "Русская рулетка", "Казино-рулетка", "Дурак", "Крюк: Skill Check", "Buckshot Roulette" + "Орел и решка", + "Кости", + "21 / Очко", + "Русская рулетка", + "Казино-рулетка", + "Buckshot Roulette" ] DESCS = [ "Угадай сторону монеты.", - "Перебрось демона в сумме костей.", - "Найди душу под черепом.", - "Собери 21 очко и победи крупье.", - "Вскрой карты и победи в покер.", - "1 патрон в барабане: выживи.", - "Сделай ставку на рулетке.", - "Оставь чёрта в дураках.", - "Попади в зону и сорвись с крюка.", - "Дуэль на дробовиках за жизнь!" + "Набери больше очков.", + "Обыграй крупье в 21.", + "1 патрон. Выживи!", + "Угадай число рулетки.", + "Дуэль на дробовике!" ] +SUB_NOTES = [ + "Один бросок решит все.", + "Бросай кости против беса.", + "Собери больше, но не перебор.", + "Крути барабан револьвера.", + "Ставь на черное или красное.", + "Заряжай картечь и стреляй!" +] -def render_menu_frame(stage: int, callout_anim: int = 100): - # 1. Load background from ANM1 pack +def render_menu_frame(stage: int, state: int = 0, callout_anim: int = 100): + # 1. Load background data = MENU_BIN.read_bytes() magic, w, h, frames, b_len = struct.unpack("<4sIIII", data[:20]) raw_bgra = data[20:20 + b_len] bg = Image.frombytes("RGBA", (w, h), raw_bgra, "raw", "BGRA") - - draw = ImageDraw.Draw(bg) - - floor_idx = stage - 1 + + # Scale down to 320x240 logical to replicate exact ASM blit logic + canvas = bg.resize((320, 240), Image.Resampling.LANCZOS) + draw = ImageDraw.Draw(canvas) + + floor_idx = max(0, min(5, stage - 1)) target_y = FLOOR_Y[floor_idx] - - # Calculate sliding card box + + # Sliding card dimensions card_h = 208 - card_y = 20 + card_y = 16 card_w = max(10, 206 * callout_anim // 100) card_x = 214 - card_w - - # Connector line + + # 1. Indicator line and cursor on tower draw.line([(214, target_y), (224, target_y)], fill=(255, 68, 68), width=2) - # Cursor chevron/diamond draw.rectangle([224, target_y - 3, 230, target_y + 3], fill=(255, 51, 0), outline=(255, 221, 68)) - # Pulsing flame pip draw.rectangle([234, target_y - 2, 238, target_y + 2], fill=(255, 170, 34)) - - # Outer and inner border of card + + # 2. Card outer/inner borders draw.rectangle([card_x, card_y, card_x + card_w, card_y + card_h], outline=(204, 34, 34), width=2) draw.rectangle([card_x + 2, card_y + 2, card_x + card_w - 2, card_y + card_h - 2], outline=(85, 17, 17), width=1) - + + inner_w = card_w - 12 + inner_x = card_x + 6 + if card_w >= 120: - # Header banner - draw.rectangle([card_x + 6, 26, card_x + card_w - 6, 44], fill=(34, 4, 4), outline=(255, 68, 68)) - draw.text((card_x + 12, 29), "КАЗИНО 3D - АДСКАЯ БАШНЯ", fill=(255, 221, 102)) + # Header banner: "АДСКАЯ БАШНЯ" (Centered, NO "КАЗИНО 3D") + hdr_w = len("АДСКАЯ БАШНЯ") * 8 + hdr_x = inner_x + (inner_w - hdr_w) // 2 + draw.rectangle([inner_x, 22, inner_x + inner_w, 40], fill=(34, 4, 4), outline=(255, 68, 68)) + draw.text((hdr_x, 26), "АДСКАЯ БАШНЯ", fill=(255, 221, 102)) + + # Floor & Bankroll / Prize indicator + draw.text((card_x + 12, 46), f"ЭТАЖ {stage} / 6", fill=(255, 102, 102)) + draw.text((card_x + 105, 46), "КУШ: $66,600", fill=(255, 221, 68)) + + if state == 0: # BRIEFING + # Subcard + draw.rectangle([inner_x, 60, inner_x + inner_w, 130], fill=(30, 4, 4), outline=(136, 24, 24)) + draw.text((card_x + 12, 66), f"ВРАГ: {BOSSES[floor_idx]}", fill=(255, 255, 255)) + draw.text((card_x + 12, 80), f"ИГРА: {GAMES[floor_idx]}", fill=(255, 221, 102)) + draw.text((card_x + 12, 96), DESCS[floor_idx], fill=(204, 204, 204)) + draw.text((card_x + 12, 112), SUB_NOTES[floor_idx], fill=(170, 170, 170)) + + # Rules & warning box + draw.rectangle([inner_x, 134, inner_x + inner_w, 166], fill=(24, 3, 3), outline=(102, 17, 17)) + draw.text((card_x + 12, 139), "6 этажей без поражений", fill=(255, 170, 51)) + draw.text((card_x + 12, 151), "Поражение - возврат!", fill=(255, 85, 85)) + + # Bank + draw.text((card_x + 12, 172), "БАНК: $10,000", fill=(102, 255, 102)) + draw.text((card_x + 115, 172), "НАГРАДА: +100%", fill=(255, 200, 50)) + + # Action Buttons + btn_w = 93 + draw.rectangle([inner_x, 188, inner_x + btn_w, 212], fill=(61, 12, 12), outline=(255, 68, 68)) + draw.text((inner_x + 12, 196), "[ENTER] БОЙ", fill=(255, 255, 255)) + + draw.rectangle([inner_x + 101, 188, inner_x + 101 + btn_w, 212], fill=(34, 6, 6), outline=(136, 34, 34)) + draw.text((inner_x + 113, 196), "[ESC] НАЗАД", fill=(170, 170, 170)) - # Floor indicator - draw.text((card_x + 10, 48), f"ЭТАЖ {stage} / 10", fill=(255, 102, 102)) + elif state == 2: # CLEAR + draw.rectangle([inner_x, 62, inner_x + inner_w, 142], fill=(8, 34, 8), outline=(51, 204, 51), width=2) + clr_w = len("ЭТАЖ ЗАЧИЩЕН!") * 8 + draw.text((inner_x + (inner_w - clr_w) // 2, 76), "ЭТАЖ ЗАЧИЩЕН!", fill=(102, 255, 102)) + sub_w = len("Враг повержен!") * 8 + draw.text((inner_x + (inner_w - sub_w) // 2, 96), "Враг повержен!", fill=(255, 255, 255)) + rwd_w = len("Путь наверх открыт!") * 8 + draw.text((inner_x + (inner_w - rwd_w) // 2, 116), "Путь наверх открыт!", fill=(255, 221, 102)) + + draw.rectangle([card_x + 18, 176, card_x + 188, 202], fill=(17, 68, 17), outline=(68, 255, 68)) + btn_w2 = len("[ENTER] ДАЛЬШЕ") * 8 + draw.text((card_x + 18 + (170 - btn_w2) // 2, 184), "[ENTER] ДАЛЬШЕ", fill=(255, 255, 255)) - # Boss & Game sub-card - draw.rectangle([card_x + 6, 64, card_x + card_w - 6, 126], fill=(30, 4, 4), outline=(136, 24, 24)) - draw.text((card_x + 10, 68), f"ВРАГ: {BOSSES[floor_idx]}", fill=(255, 255, 255)) - draw.text((card_x + 10, 82), f"ИГРА: {GAMES[floor_idx]}", fill=(255, 221, 102)) - draw.text((card_x + 10, 98), DESCS[floor_idx], fill=(204, 204, 204)) + elif state == 3: # DEFEAT + draw.rectangle([inner_x, 62, inner_x + inner_w, 142], fill=(42, 4, 4), outline=(255, 34, 34), width=2) + dft_w = len("ВЫ ПОГИБЛИ В БАШНЕ!") * 8 + draw.text((inner_x + (inner_w - dft_w) // 2, 76), "ВЫ ПОГИБЛИ В БАШНЕ!", fill=(255, 68, 68)) + sub_w = len("Душа сгорела в Аду.") * 8 + draw.text((inner_x + (inner_w - sub_w) // 2, 98), "Душа сгорела в Аду.", fill=(255, 255, 255)) + + draw.rectangle([card_x + 18, 176, card_x + 188, 202], fill=(68, 16, 16), outline=(255, 68, 68)) + btn_w2 = len("[ESC] В ХОЛЛ КАЗИНО") * 8 + draw.text((card_x + 18 + (170 - btn_w2) // 2, 184), "[ESC] В ХОЛЛ КАЗИНО", fill=(255, 255, 255)) - # Rules & warning - draw.text((card_x + 10, 132), "10 битв подряд без права на ошибку", fill=(255, 170, 51)) - draw.text((card_x + 10, 146), "Поражение - возврат в холл казино", fill=(238, 68, 68)) - - # Bankroll & Prize - draw.text((card_x + 10, 162), "БАНК: $10,000", fill=(102, 255, 102)) - draw.text((card_x + 110, 162), "КУШ: $66,600", fill=(255, 221, 68)) - - # Buttons - draw.rectangle([card_x + 8, 184, card_x + 100, 206], fill=(61, 12, 12), outline=(255, 68, 68)) - draw.text((card_x + 14, 191), "[ПРОБЕЛ] В БОЙ", fill=(255, 255, 255)) - - draw.rectangle([card_x + 106, 184, card_x + 198, 206], fill=(34, 6, 6), outline=(136, 34, 34)) - draw.text((card_x + 114, 191), "[ESC] СБЕЖАТЬ", fill=(170, 170, 170)) - - # Scale 2x for high quality artifact preview (640x480) - bg_hd = bg.resize((640, 480), Image.Resampling.NEAREST) - return bg_hd + elif state == 4: # CHAMPION + draw.rectangle([inner_x, 58, inner_x + inner_w, 150], fill=(51, 34, 0), outline=(255, 215, 0), width=2) + chm_w = len("БАШНЯ ПОКОРЕНА!") * 8 + draw.text((inner_x + (inner_w - chm_w) // 2, 70), "БАШНЯ ПОКОРЕНА!", fill=(255, 224, 102)) + sub_w = len("Вы - Владыка Башни!") * 8 + draw.text((inner_x + (inner_w - sub_w) // 2, 90), "Вы - Владыка Башни!", fill=(255, 255, 255)) + prz_w = len("КУШ: +$66,600 В БАНК!") * 8 + draw.text((inner_x + (inner_w - prz_w) // 2, 114), "КУШ: +$66,600 В БАНК!", fill=(102, 255, 102)) + + draw.rectangle([card_x + 18, 176, card_x + 188, 202], fill=(68, 51, 0), outline=(255, 204, 0)) + btn_w2 = len("[ESC] В ХОЛЛ КАЗИНО") * 8 + draw.text((card_x + 18 + (170 - btn_w2) // 2, 184), "[ESC] В ХОЛЛ КАЗИНО", fill=(255, 255, 255)) + # Scale 2x for full HD 640x480 preview + return canvas.resize((640, 480), Image.Resampling.NEAREST) def main(): ART_DIR.mkdir(parents=True, exist_ok=True) - f1 = render_menu_frame(1, 100) - f1.save(ART_DIR / "helltower_rendered_floor1.png") - print("[OK] Saved helltower_rendered_floor1.png") - - f5 = render_menu_frame(5, 100) - f5.save(ART_DIR / "helltower_rendered_floor5.png") - print("[OK] Saved helltower_rendered_floor5.png") - - f10 = render_menu_frame(10, 100) - f10.save(ART_DIR / "helltower_rendered_floor10.png") - print("[OK] Saved helltower_rendered_floor10.png") - + for st in range(1, 7): + im = render_menu_frame(st, state=0) + im.save(ART_DIR / f"helltower_6fl_floor{st}.png") + print(f"[OK] Saved helltower_6fl_floor{st}.png") + + clr = render_menu_frame(1, state=2) + clr.save(ART_DIR / "helltower_6fl_clear.png") + dft = render_menu_frame(1, state=3) + dft.save(ART_DIR / "helltower_6fl_defeat.png") + chp = render_menu_frame(6, state=4) + chp.save(ART_DIR / "helltower_6fl_champion.png") + print("All previews generated successfully!") if __name__ == "__main__": main() diff --git a/tools/tests/test_hell_tower_runthrough.py b/tools/tests/test_hell_tower_runthrough.py index 5caf65d..ee1d13b 100644 --- a/tools/tests/test_hell_tower_runthrough.py +++ b/tools/tests/test_hell_tower_runthrough.py @@ -1,4 +1,4 @@ -"""Automated smoke test for Hell Tower 10-floor run-through.""" +"""Automated smoke test for Hell Tower 6-floor run-through.""" import subprocess import sys from pathlib import Path @@ -22,13 +22,13 @@ def main(): print("[FAIL] Build failed:", build_res.stdout, build_res.stderr) return 1 - print("[3/4] Running Hell Tower 10-floor run-through...") + print("[3/4] Running Hell Tower 6-floor run-through...") run_res = subprocess.run([str(ROOT / "poker.exe")], cwd=ROOT, capture_output=True, timeout=15) print(f"Hell Tower test completed with exit code: {run_res.returncode}") if run_res.returncode != 0: print(f"[FAIL] Hell Tower run-through failed with code {run_res.returncode}") return run_res.returncode - print("[SUCCESS] All 10 floors of Hell Tower completed without errors or crashes!") + print("[SUCCESS] All 6 floors of Hell Tower completed without errors or crashes!") finally: print("[4/4] Restoring normal poker.asm and rebuilding...") restored = POKER_ASM.read_text(encoding="cp1251")